Linux系统下ROMS安装流程与例程运行
linux环境下ROMS(Regional Ocean Model System)的安装与测试
1、注册
获得源码的第一步是去官网注册,人工审核大概需要一天的时间。
2、准备工作
2.1 安装HDF5
下载安装包:以1.8.10版本为例
解压后进入控制台,移动到压缩包所在目录,输入以下指令完成安装,这里要记得安装的位置。注意,有时make不成功需要先运行make clean,再重新make。
./configure --prefix=/usr/local/hdf5 # 指定安装路径
make
make check # 验证安装是否成功
make install
2.2 安装NetCDF4
2.2.0 安装依赖库
依赖库主要有三个:
numpy
cftime
HDF5
刚才已安装HDF5,剩下两个按照网上的教程,可以去下载wheel文件安装。
另一个省事的办法:直接在ubuntu控制台输入numpy、cftime,在未安装该库时控制台会给出对应的安装指令。
NetCDF不版本的安装有些区别,旧版的相对比较简单。如果没有特殊需求推荐安装旧版,如果后续demo运行有误则可尝试安装新版。
2.2.1安装旧版(4.3.1之前的版本)
下载链接:
https://pypi.org/project/netCDF4/%23files
最简单的办法是输入以下指令:
pip install netCDF4
该指令可以直接从官网复制。
2.2.2安装新版
下载链接:
NetCDF: Building the NetCDF-4.2 and later Fortran libraries
新版需要分别编译和安装c文件和fortran文件。首先解压c文件的压缩包,阅读其中的INSTALL.md文件,可知编译NetCDF-c之前需要先编译zlib和HDF5两个库,HDF5前文已经提到,zlib似乎时ubuntu自带的,没有的话可以输入:
sudo apt-get install -y zlib*
然后在控制台进入netcdf-c解压产生的文件夹中,输入以下指令
CPPFLAGS=-I/home/username/local/include LDFLAGS=-L/home/username/local/lib ./configure --prefix=/home/username/local
make check install
HDF5、zlib、szip的头文件库文件的位置应该根据实际情况修改,不一定都是以上写的位置。prefix后写的安装位置最好也修改到一个便于管理的位置。
netcdf-fortran部分的编译与安装步骤如下,这一部分也可以在官网找到
1、找到netCDF-c的安装路径,我设置为:
NCDIR=/usr/local
2、设置Fortran和c编译器(确认编译器的指令:which gcc; which gfortran)
CC=gcc
FC=gfortran
3、安装netCDF-F
NFDIR=/usr/local #安装路径
CPPFLAGS=-I${NCDIR}/include LDFLAGS=L${NCDIR}/lib \
./configure --prefix=${NFDIR}
make check
make install #如果出现权限的报错,则在前面加sudo
3、安装ROMS
输入以下指令安装mpich2
sudo apt-get -y install mpich
输入以下指令即可获得ROMS源码,提醒linux使用不熟练的同学:mkdir之前应先cd进入事先准备好的文件夹,建议将ROMS下载至指定文件夹便于以后的管理。
sudo apt-get install subversion
mkdir myROMS
cd myROMS
# 默认下载到当前文件夹, 更改username为自己官网注册的,并输入密码
svn checkout --username username https://www.myroms.org/svn/src/trunk
# 或者指定文件夹(ROMS_dir)
svn checkout --username username https://www.myroms.org/svn/src/trunk ROME_dir
4、Upwelling例程运行
以upwelling(上翻流)为例验证安装结果。
4.1新建目录
新建文件夹并将以下三个文件复制到相应的目录,直接复制粘贴就行。有些版本的ROMS里build_roms.sh的后缀为bash。
# 在与刚才安装的trunk的同级目录新建Projects文件夹,用于存放ROMS的各种应用
mkdir Projects
cd Projects
# 在Projects文件夹下建立Upwelling文件夹
mkdir Upwelling
cd Upwelling
# 复制所需的文件到Upwelling文件夹
trunk/ROMS/External/roms_upwelling.in
trunk/ROMS/Include/upwelling.h
trunk/ROMS/Bin/build_roms.sh
trunk/ROMS/External/varinfo.dat
4.2变量设置
1、修改build_roms.sh
将build_roms.sh原有对应位置的内容替换为以下代码
# ROMS根目录和Upwelling路径
export MY_ROOT_DIR=${HOME}/apps/myROMS
export MY_PROJECT_DIR=${MY_ROOT_DIR}/Projects/Upwelling
export MY_ROMS_SRC=${MY_ROOT_DIR}/trunk # trunk目录
#export MY_CPP_FLAGS= # 注释掉MY_CPP_FLAGS变量
export USE_MPI=on
export USE_MPIF90=on # 使用MPI分布式内存的并行方式
export which_MPI=mpich2 # MPI的发行版选择mpich2
export FORT=gfortran # Fortran编译器选择gfortran
export USE_NETCDF4=on # 使用NETCDF4作为IO
export USE_MY_LIBS=yes # 由于使用了第三方库,需要打开这个开关
2、修改my_build_paths.sh
打开myROMS/trunk/Compilers/my_build_paths.sh找到 USE_MPIF90 部分,根据使用的编译器(本文用gfortran)以及MPI 发行版(本文为mpich2)修改对应行的 MPI_ROOT(mpich2 安装路径可以使用 whihc mpirun 指令查看)。
找到USE_NETCDF4 部分,根据编译器(gfortran)、以及是否并行 (IO),修改 NETCDF 变量的路径(NETCDF 的路径可以用 which nf-config 或 which ncdump 指令查看)。
如果这三步存在错误,运行时会出现以下错误:
4.3编译安装
直接运行脚本即可安装
./build_roms.sh
./build_roms.sh -j 4 #或者使用多线程编译
这个过程比较久,结束后生成romsM文件即为成功。附一张运行过程中的图:
4.4模式运行
1、修改VARNAME等参数
在romsM文件所在目录,修改roms_upwelling.in文件,把VARNAME设置为varinfo.dat文件夹所在的位置,/home/我的用户名/myROMS/trunk/ROMS/External/varinfo.dat,修改运行核数为4(也可以不改):
VARNAME = /home/我的用户名/myROMS/trunk/ROMS/External/varinfo.dat
NtileI = 2
NitleJ = 2
#NtileI*NtileJ=4
2、运行mpirun
用mpirun指令运行roms:
mpirun -np 4 ./romsM roms_upwelling.in
结果为:
注意,可能是由于设置了多核的原因,运行以下指令会出错
./romsM roms_upwelling.in
成功运行后,文件夹中多了roms_avg.nc roms_dia.nc roms_his.nc roms_rst.nc这些文件。
5、Reference
HDF5
Linux安装hdf5_yaoyz105-CSDN博客_hdf5安装
NETCDF4
linux下netCDF4安装笔记_domotokoi的博客-CSDN博客_linux netcdf4安装
ROMS
更多推荐
所有评论(0)