编译和安装
操作步骤
- 使用PuTTY工具,以root用户登录服务器。
- 执行以下命令进入FVCOM安装包所在目录。
cd /path/to/FVCOM
- 执行以下命令解压安装包。
tar -xvf fvcom-4.1.tar.gz
- 执行以下命令进入解压后目录。
cd FVCOM4.1
- 执行以下命令复制“make.inc_example”文件并更名为“make.inc”。
cp Examples/Estuary/make.inc_example FVCOM_source/make.inc
- 执行以下命令创建“make.inc”文件软链接。
ln -sf FVCOM_source/make.inc ./
- 执行以下命令编辑“make.inc”文件。
- 打开“make.inc”文件。
vi make.inc
- 按“i”进入编辑模式,修改第51、79、80、97和99行的内容。
TOPDIR = /path/to/FVCOM/FVCOM4.1/FVCOM_source
需消除“/path/to/FVCOM/FVCOM4.1/FVCOM_source”后面的空格。
第79、80行:
LIBDIR = -L$(INSTALLDIR)/lib -L../METIS_source/metis -L./libs/julian INCDIR = -I$(INSTALLDIR)/include -I../METIS_source/metis -I./libs/julian
需取消前面的#注释。
第97行修改未#注释IOLIBS的内容:
IOLIBS = -L/path/to/NETCDF/lib -L/path/to/HDF5/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lcurl -lm
第98行修改未#注释IOINCS的内容:
IOINCS = -I/path/to/NETCDF/include -I/path/to/HDF5/include
请参考下图,注释并添加图中内容:
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“make.inc”文件。
- 执行以下命令创建编译环境变量文件。
- 创建环境变量文件。
vi env-fvcom.sh
- 按“i”进入编辑模式,添加如下内容。
export CXX=mpicxx export CC=mpicc export MPI_HOME=/path/to/HMPI export PATH=$MPI_HOME/bin:$PATH export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH export HDF5=/path/to/HDF5 export PATH=$HDF5/bin:$PATH export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH export NETCDF=/path/to/NETCDF export PATH=$NETCDF/bin:$PATH export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 创建环境变量文件。
- 执行以下命令加载环境变量。
source env-fvcom.sh
- 执行以下命令进入metis安装路径。
cd ./METIS_source
- 执行以下命令解压metis安装包。
tar -zxvf metis.tgz cd metis sed -i 's/log2/log2_function/g' *.*
- 执行以下命令创建相应目录。
mkdir -p /path/to/FVCOM/FVCOM4.1/FVCOM_source/libs/install/lib mkdir -p /path/to/FVCOM/FVCOM4.1/FVCOM_source/libs/install/include mkdir -p /path/to/FVCOM/FVCOM4.1/FVCOM_source/libs/install/bin
- 执行以下命令编译安装metis库。
make make install
- 执行以下命令进入julian安装路径。
cd ../../FVCOM_source/libs
- 执行以下命令解压julian.tgz安装包。
tar -zxvf julian.tgz
- 执行以下命令进入解压后路径。
cd julian
- 执行以下命令编译安装julian库。
make make install
- 执行以下命令进入FVCOM安装路径。
cd /path/to/FVCOM/FVCOM4.1/FVCOM_source
- 执行以下命令编辑“mod_newinp.F”文件。
- 打开“mod_newinp.F”文件。
vi mod_newinp.F
- 按“i”进入编辑模式。
第一个“contains”语句下添加以下加粗内容。
!---------------------------------------- ! functions !---------------------------------------- contains Character( Len = 256 ) Function N_Fmt( c , n ) Character( Len = * ) , Intent( IN ) :: c Integer , Intent( IN ) :: n integer :: i , j character( len = 16 ) :: cn i = index( c , '<' ) j = index( c , '>' ) write( cn , '(g0)' ) n N_Fmt = c(:i-1) // Trim(adjustL(cn)) // c(j+1:) End Function N_Fmt
修改第352、421、494、567行的内容。
第352行:
write(*,N_Fmt('(A20,<size>F10.4)',SIZE))trim(argname)//': ',fval(1:SIZE)
第421行:
write(*,N_Fmt('(A20,<size>I10)',SIZE))trim(argname)//': ',ival(1:SIZE)
第494行:
write(*,N_Fmt('(A20,<size>L10)',SIZE))trim(argname)//': ',cval(1:SIZE)
第567行:
write(*,N_Fmt('(A20,<size>A10)',SIZE))trim(argname)//': ',sval(1:SIZE)
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“mod_newinp.F”文件。
- 执行以下命令修改“mod_scal.F”、“internal_step.F”、“adv_t.F”、“adv_s.F”文件,对文件中以“IF(BACKWARD_ADVECTION”开头的语句进行相应修改,修改“==”为“.eqv.”,修改“/=”为“.neqv”。
sed -i 's/\/=\.TRUE\./\.neqv\.\.TRUE\./g' mod_scal.F sed -i 's/==\.TRUE/\.eqv\.\.TRUE/g' internal_step.F sed -i 's/==\.FALSE\./\.eqv\.\.FALSE\./g' adv_t.F sed -i 's/==\.FALSE\./\.eqv\.\.FALSE\./g' adv_s.F
- 执行以下命令编辑“mod_utils.F”文件。
- 打开“mod_utils.F”文件。
vi mod_utils.F
- 按“i”进入编辑模式,将其中的ISNAN函数修改为“IEEE USENAN”。
- 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
- 打开“mod_utils.F”文件。
- 执行以下命令编译安装FVCOM主程序。
make
安装成功后,可使用ll命令在当前目录查看生成的可执行文件“fvcom”。