cd /path/to/FVCOM
tar -xvf fvcom-4.1.tar.gz cd FVCOM4.1
cp Examples/Estuary/make.inc_example FVCOM_source/make.inc
ln -sf FVCOM_source/make.inc ./
vim make.inc
按“i”进入编辑模式,修改以下内容。
第51行。
TOPDIR = /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 = -L/path/to/NETCDF/lib -L/path/to/HDF5/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz -lcurl -lm
第98行。
IOINCS = -I/path/to/NETCDF/include -I/path/to/HDF5/include
找到并注释掉并添加以下内容。
# Intel/MPI Compiler Definitions (SMAST) #-------------------------------------------------------------------------- # CPP = /usr/bin/cpp # COMPILER = -DIFORT # CC = mpicc # CXX = mpicxx # CFLAGS = -O3 # FC = mpif90 # DEBFLGS = -check all traceback # Use 'OPT = -O0 -g' for fast compile to test the make # Use 'OPT = -xP' for fast run on em64t (Hydra and Guppy) # Use 'OPT = -xN' for fast run on ia32 (Salmon and Minke) # OPT = -O0 –g # OPT = -axN –xN # OPT = -O3 # gfortran defs #-------------------------------------------------------------------------- CPP = /usr/bin/cpp COMPILER = -DGFORTRAN CC = mpicc CXX = mpicxx FC = mpif90 DEBFLGS = OPT = -O3 -ffixed-line-length-none -ffree-form -ffree-line-length-none CLIB =
按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
vim env-fvcom.sh
按“i”进入编辑模式,添加如下内容。
export GCC_HOME=/path/to/GNU export PATH=$GCC_HOME/bin:$PATH export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64:$LD_LIBRARY_PATH export MPI_HOME=/path/to/OPENMPI export PATH=$MPI_HOME/bin:$PATH export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH export HDF5=/path/to/HDF5/install 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
vim 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
按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
第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”保存并退出编辑。
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
vim mod_utils.F
按“i”进入编辑模式,将其中的ISNAN函数修改为。
“IEEE USENAN”
按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。
make
安装成功后,可使用ll命令在当前目录查看生成的可执行文件“fvcom”。