FVCOM编译&测试
FVCOM介绍:
FVCOM 是由 UMASSD-WHOI 联合开发的预测性、非结构化网格、有限体积、自由表面、3-D 原始方程沿海海洋环流模型。该模型由动量、连续性、温度、盐度和密度方程组成,并使用湍流闭合子模型进行物理和数学闭合。水平网格由非结构化三角形单元组成,不规则底部使用广义地形跟踪坐标呈现。由德国 Burchard 研究小组(Burchard,2002 年)开发的通用海洋湍流模型 (GOTM) 已添加到 FVCOM 中,以提供可选的垂直湍流闭合方案。FVCOM 是通过在非结构化三角形网格上以控制方程的积分形式进行的二阶精确离散通量计算来数值求解的。这种方法结合了有限元方法(网格灵活性)和有限差分方法(数值效率和代码简单性)的最佳特性,并提供了更好的局部和全局动量、质量、盐、热和示踪剂守恒的数值表示. 除了非结构化网格提供的拓扑灵活性和编码结构的简单性之外,FVCOM 准确求解标量守恒方程的能力使 FVCOM 非常适合许多沿海和跨学科科学应用。
编译前准备
安装HDF5
源码地址为https://s3.amazonaws.com/hdf-wordpress-1/wp-content/uploads/manual/HDF5/HDF5_1_10_5/source/hdf5-1.10.5.tar.gz
,使用wget下载并解压源码
1 | wget https://s3.amazonaws.com/hdf-wordpress-1/wp-content/uploads/manual/HDF5/HDF5_1_10_5/source/hdf5-1.10.5.tar.gz |
执行以下命令进行配置、编译及安装
1 | ./configure --prefix=/path/to/install/HDF5 --enable-fortran --enable-parallel CC=mpicc FC=mpif90 CXX=mpicxx |
安装NetCDF-C
在安装NetCDF-C时,使用4.7.0版本的安装包报错,在GitHub上查到issue,更换最新版本解决
1 | checking whether byte range support is enabled... no |
源码地址为https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.8.1.tar.gz
,使用wget下载并解压源码
1 | wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.8.1.tar.gz |
执行以下命令进行配置、编译及安装
1 | ./configure --prefix=/path/to/NETCDF LDFLAGS="-L$HDF5/lib" CPPFLAGS="-I$HDF5/include" CC=mpicc --disable-dap |
编辑环境变量
1 | vim ~/.bashrc |
安装NetCDF-Fortran
源码地址为https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.4.tar.gz
,使用wget下载并解压
1 | wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.5.4.tar.gz |
执行以下命令进行配置
1 | ./configure --prefix=/path/to/NETCDF CPPFLAGS="-I$HDF5/include -I$NETCDF/include" LDFLAGS="-L$HDF5/lib -L$NETCDF/lib" CC=mpicc FC=mpif90 F77=mpif90 |
编译FVCOM主程序
获取安装包
源码地址为http://fvcom.smast.umassd.edu/releases/fvcom-4.1.tar.gz
,将其下载到本地并解压
1 | wget http://fvcom.smast.umassd.edu/releases/fvcom-4.1.tar.gz |
配置
若要使用Estuary
算例,则使用Examples/Estuary/make.inc_example
;若要使用Inlet
算例,则应使用Examples/Inlets/make.inc_example
,在确认样例之后,将所选的模版文件复制到FVCOM_source
之下.
1 | 复制模版文件(以Estuary为例) |
编辑make.inc
1 | ############ |
编译Metis库
执行以下命令编译metis库
1 | cd /path/to//FVCOM/FVCOM4.1/METIS_source |
编译julian库
执行以下命令编译julian库
1 | cd /path/to/FVCOM4.1/FVCOM_source/libs |
安装主程序
执行以下命令以编译安装FVCOM主程序
1 | cd /path/to/FVCOM/FVCOM4.1/FVCOM_source |
在mod_newinp.F
中修改如下内容
1 | ! 第一个"contains"语句添加如下内容。 |
执行以下命令以修改“==”为“.eqv.”,修改“/=”为“.neqv”
1 | sed -i 's/\/=\.TRUE\./\.neqv\.\.TRUE\./g' mod_scal.F |
修改完成后执行make
命令,即可在当前目录下看到fvcom
1 | make |
测试运算
复制算例到测试目录
1 | mkdir -p /path/to/FVCOM/test |
运行算例
1 | 在当前目录下生成tst_0001.nc结果文件 |