1.安装VS2022,网上很多教程,现在intel提供免费的fortran环境,真不错。
如链接参考:为VS2022安装oneAPI模块进行Fortran语言编译
要注意可能需要注册Intel的账号才能正常下载,用游客登录会有可能不跳出下载页面。
2.安装IMSL库,这里可以通过学生身份申请,我这里贴一个imsl7.0网盘自行下载。
imsl官网 imsl7.0网盘 提取码 h2bd 201111
下载后安装imsl后,把文件夹中的liscense.lic复制到安装目录下的liscense文件夹中
我的电脑是64位的,我就以64为例
点击step下载就可以了,主要记好自己的安装目录,因为后续需要用到。
3.配置imsl
我的目录为:C:\Program Files (x86)\VNI
(1)先新创建一个空项目,然后工具-选项,看我的截图,最终在Compile选项中
注意:电脑是64位一定要先选择x64,要不默认32的。
(2)在Include添加:
C:\Program Files (x86)\VNI\imsl\fnl700\winin111e64\include\dll
C:\Program Files (x86)\VNI\imsl\fnl700\winin111e64\include\static
Libraries添加:C:\Program Files (x86)\VNI\imsl\fnl700\winin111e64\lib
总之按着你自己的路径,添加dll,static,lib这三个文件夹,其他东西不要改,添加后点OK就可。
(3)在环境变量-系统变量-PATH中添加:C:\Program Files (x86)\VNI\imsl\fnl700\winin111e64\lib
(4)接下来选择项目-(项目名)属性,将imsl_dll.lib填入Linker-Input中,如图所示。
配置完成,接下来贴一段代码自行测试。
Program main
Include 'link_fnl_shared.h' !//必须要写
use lin_sol_gen_int
use rand_gen_int
use error_option_packet
Implicit None
!// This is Example 1 for Lin_sol_gen
Integer,Parameter :: n = 32
Real( kind(1e0) ),Parameter :: one = 1e0
Real( kind(1e0) ) :: err
Real( kind(1e0) ) :: A(n,n), b(n,n), x(n,n), res(n,n), y(n*n)
!// Generate a random matrix
Call rand_gen(y)
A=reshape( y,[n,n] )
!// Genarate random right-hand sides
Call rand_gen(y)
b=reshape( y,[n,n] )
!// Compute the solution matrix of Ax = b
Call lin_sol_gen( A,b,x )
!// Check the result for small residuals
res=b - matmul( A,x )
err=maxval( abs(res) )/sum( abs(A)+abs(b) )
If (err<=sqrt( epsilon(one)) ) then
Print*, 'Example 1 for Lin_sol_gen is correct.'
End If
End Program