cgns学习—cgns动态链接库编译(VS2022+OneAPI Fortran)

官方提供的CGNS库是github上的源码,需要用户自行编译。本人菜鸟一枚,最近需要为在Windows系统下使用Fortran代码调用CGNS库,从各种网站上找方法,最后终于基本搞定了。

首先说一下我的电脑是win10 的系统,安装的是Visual Studio 2022 和Intel oneAPI 2023,二者可以在各自的官网上获取,安装方式网上有很多,有需要的大家可以自行下载安装。

链接如下

下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)icon-default.png?t=N7T8https://visualstudio.microsoft.com/zh-hans/downloads/

https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.htmlicon-default.png?t=N7T8https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html

1.安装文件准备

安装前先下载好所需的软件和源代码

a. Hdf5HDF5-1.12.1-win64.zip)安装包

b. CMakecmake-3.27.6-windows-x86_64.zip)安装包

c. CGNSCGNS-4.3.0.zip)源代码

d. Tecplot 2023 R1

有需要的可以从下面分享中下载

链接:https://pan.baidu.com/s/1aSwXHp_cpHfBGfnXma8YGg 
提取码:1r7k 

2.cgns动态链接库编译

2.1 安装hdf5

a. 解压HDF5-1.12.1-win64.zip后,运行HDF5-1.12.1-win64.msi;

b. 在系统环境变量中添加HDF5安装目录下的bin文件,我的是C:\Program Files\HDF_Group\HDF5\1.10.9\bin(安装过程中有选项可以直接在安装过程中自动添加) (Path中编辑新建),如图1。

图1 系统环境变量HDF5

2.2 安装CMake

a. 我下载了cmake-3.27.6-windows-x86_64.zip,解压缩后不用安装,在bin文件夹中双击cmake-gui.exe直接运行

图2 解压后的cmake目录

2.3 编译CGNS

a. 解压CGNS-4.3.0.zip后可以看到一堆源码,在包含src和CMakeLists.txt的目录下创建build文件夹

图3 cgns解压后的目录

b. 打开cmake-gui,

在where is the source code选包含src和CMakeLists.txt的目录,我的是 C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0,

在where to build the binaries选刚创建的build文件夹:

C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0\build

c. 单击Configure,选择VS 17 2022编译器,x64,如图4所示。

图4 cmake界面选项

d. 上一步点击Finish后,等待一会会cmake界面中间会出现红色填充的内容,在其中勾选CGNS_BUILD_SHARED CGNS_ENABLE_64BIT、CGNS_ENABLE_FORTRAN、CGNS_ENABLE_HDF5、CGNS_USE_SHARED,,注意一下CMAKE_INSTALL_PREFIX对应的Value,这里是最终编译出的cgns的位置,如图5所示。

图5 CMake选项完成后的界面

e. 依次单击Configure, Generate,没有意外的话会看到下面的界面,Configure done和Generate done。这时会看到创建的build文件夹下出现了很多内容。

图6 CMake编译完成的界面

f. 以管理员身份运行VS2022,打开built文件夹下的cgns.sln(点击右侧打开项目或解决方案),此时如果直接重新生成解决方案会提示有错误,如图7所示,看到网上有文章给出了原因和解决方案。C++和Fortran混编时,VS2010以上版本需要手动加载Fortran编译器的链接。除了cgns_f2c是纯Fortran没有这个问题(在下图中的显示是cgna_f2c(ifort)),其他项目如cgns_shared, cgns_statis等只要编译出错就是需要添加Fortran编译器的链接。添加位置:项目->属性->VC++目录,包含目录中加Fortran编译器安装目录的include,库目录中加Fortran编译器安装目录的lib\intel64_win,如图8所示。(例如单击cgns_shared,右键然后找到最下面的属性,添加如图所示的Fortran编译器安装目录,OneAPI的默认安装路径可以参考我的目录,如图8和9所示)。

图7 直接生成解决方案提示的错误
图8 未添加了fortran编译器安装位置的cgns_shared属性页
图9 未添加了fortran编译器安装位置的cgns_shared属性页

 g. cgns_shared添加了Fortran编译器安装位置后应该即可编译成功,右键INSTALL->仅用于项目->进重新生成,成功后会在cmake_install_prefix指定的目录(我们在上面默认的是C:\Program Files\cgns)下出现bin、include、lib三个文件夹,如图10-13所示。

图10 INSTALL成功后的界面
图11 bin目录文件

图12 include目录文件
图13 lib目录文件

j.在环境变量中加入CGNS的安装目录的bin(C:\Program Files\cgns\bin) 

3. cgns动态链接库的使用

a.打开VS 2022创建一个新的Fortran项目,然后从cgns源码(C:\Users\Li Dongdong\Desktop\CGNS\cgnsfortran\Software for CGNS library compilation\CGNS-4.3.0\CGNS-4.3.0\src\Test_UserGuideCode\Fortran_code)里复制一个代码到创建的项目里。这里我们以write_grid_unst.F90为例(我这里直接复制了里面的代码,粘贴到新建的一个源项目里),如图14所示。

图14 一个Fortran源项目

b. cgns库的链接。在项目->属性->Fortran->General->Additional Include Directories中加入CGNS安装目录的include(C:\Program Files\cgns\include),在项目->属性->Linker->General->Additional Library Directories中加入CGNS安装目录的Lib(C:\Program Files\cgns\lib),在项目->属性->Linker->Input->Additional Dependencies中加入cgnsdll.lib,在项目->属性->Fortran->Preprocessor->Preprocess Source File改为Yes (/fpp),具体如图11-14所示。

c. 代码的编译运行和网格文件检验:此时一切顺利的话,这段代码可以正常编译和运行了,运行结束后程序目录下会出现一个grid.cgns的网格文件,采用tecplot打开后可以看到图15所示的网格。这里有一个小插曲,当我采用tecplot2017打开时提示有如图16的错误,换了tecplot2023后正常打开。

图15 tecplot中显示生成的网格
图16 tecplot 2017提示的错误

参考文献

这里主要参考了下面两篇文章的内容,尤其第二位大佬的分享内容,按照里面的内容很快搞定。

 1 CGNS快速入门到实战(一):CGNS静态链接库编译_cgns编译_ahang_99的博客-CSDN博客

VS 2019+IVF2020 Fortran使用CGNS库_ivf2020安装包_圆滚滚啃橙狮的博客-CSDN博客

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值