[ROMS海洋模式贴心教程1]从源码到运行的流程综述

[复制链接]
H~~~ello!我是热爱海洋的Marine!总算来更新Regional Ocean Modeling System(ROMS)模式相关的东西了!

这一篇仅仅是给大家过一遍ROMS模式的配置与运行流程,有小细节但只有一点点;更为详细的ROMS教程我会在后面分期分主题给大家带来自己的体会、技巧和心得,大家敬请期待吧!

也希望大家能够触类旁通举一反三哈,以后在使用LICOM、MITgcm、HYCOM等等其他基于Fortran底层的模式,整个流程都是非常相似的,把握使用的主线就不至于无从下手。


1.ROMS源码

ROMS模式源码的获取需注册账户并通过SVN方式(或者通过GIT,个人没尝试过)获得,网址:

, 注册成功后通过SVN软件(例如:TortoiseSVN)获取最新或指定版本的源码。

注意:源码一定直接放到Linux环境里,如果从windows上传到Linux,会出现格式不同导致后续运行时报错(一般是报MPI communication error)。


2.编译文件(build.sh/bash)

因为我一直使用超算跑模式,图片为超算配置的例子。个人电脑安装虚拟机以及各种库,可以百度一下有很多的例子。如果大家需要的话,我也可以整理一下单独出一篇文章,因为这一步骤真的容易卡住。

编译前需要指定编译器、MPI环境、NetCDF库、HDF5库(四个最基本的库)等创建编译环境,一定一定一定使用同种同版本的编译器进行编译、安装各种库(例如intel compiler 2017.5.239我最常用也是最稳定的版本),否则编译即使通过,运行也会报MPI的error(个人遇到是buffer size相关)。

& G% m8 i! e1 |
                               
登录/注册后可看大图

& C! c# @8 ^% G7 J$ t; g9 b  g9 G
                               
登录/注册后可看大图

ROMS编译一般使用源码路径/ROMS/Bin/内的build_roms.sh(.bash)文件,需指定源码路径、头文件(.h)路径以及项目路径等路径项,同时需选择MPI环境、是否使用Netcdf-4、是否并行HDF库等选择项,主要更改的地方见图2所示。

旧版ROMS支持MPICH、MPICH2、OPENMPI三种,新版build文件也支持IntelMPI和mvapich2了!!!(目前常用884版本支持前三种,1034已经支持mvapich2,最新的1087也已经支持IntelMPI,再也不用和工程师对线,要求安装各种MPI了);在build.bash中一般也需要用export指定netcdf库的路径以及mpi库的路径(主要是不指定经常报错,多加几行命令也省心)。其他更详细的build文件介绍,参照:


% p) n. P; A$ w5 J; j8 H                               
登录/注册后可看大图


3.头文件(.h)

头文件内包括了定义特定应用程序的所有C预处理选项,包括动量方程选项、垂向混合选项(KPP,GLS,MY2.5)、示踪粒子选项、是否加入潮汐作用,耦合海浪SWAN、生态CoNiSE其他模块等等等等诸多控制选项。.h文件是模式控制的灵魂,我一般都是沿用亲爱的导师的配置,具体需要的一些通用配置以及各种混合方案以后单独拎出来讲。详细的头文件选项内容可参考(非常,非常,非常多):

需要注意的是,头文件的命名要与build文件内的application名称一致。


( M( T# k$ I7 E& ^) z. u, H                               
登录/注册后可看大图

完成build文件与.h文件修改后,即可执行编译,编译成功后生成Build文件夹以及oceanM或romsM文件(一般大小5~10MB,没见过太大的,oceanM太小了很可能有问题)。


4.输入参数文件(.in)

.in文件设置许多无需重新编译即可更改的参数值、边界条件的选择、指定输入文件路径、指定输出变量以及输出路径;一般选择源码路径/ROMS/External/内的.in文件进行更改(我都是用http://upwelling.in进行更改)。详细的.in文件内容可参照.in文件后面针对各项参数、输入输出文件的解释说明(ROMS注释算是很清楚、贴心了)。

后续考虑会出一篇专门针对.in文件参数的中文解释的文章,供大家查阅参考。


5.输入输出文件(.nc)

ROMS输入文件一般采用NetCDF格式,官方提供了Matlab工具包来制作各种输入文件,可以通过SVN网址

获得(RNT和AGRIF的工具包下载了,但完全没用过)。前处理文件目前还有Pyroms工具包,习惯python的同学可以尝试使用,网址:

输入文件图4包括格点文件、初始场、开边界场、气候态文件、河流场、潮汐场(最新的1087版本ROMS官方更新加入了天文潮!!!普天同庆)、强迫场(净水通量、净热通量、SST、SSS、风应力),这些都是我最经常输入和更改的文件。可输出多种文件种类(见图5)。具体官方matlab工具包的使用,我现在也没有系统的掌握,只参考其中的一部分写到自己的script里,后续我自行掌握完整配一套模式的过程后,再来系统的给大家讲一下工具包的使用以及文件制作的详细事宜。

& J( f6 \2 s$ A$ X9 y) U! S
                               
登录/注册后可看大图

( T' |" k; q. N  e1 `2 [9 F4 |. U) n
                               
登录/注册后可看大图

5.运行

修改完成.in文件后,模式就可以进入运行阶段。以“天河二号”超算平台为例:使用

./yhrun -N 1 -n 64 ./oceanM ./http://upwelling.in命令运行,使用tail -f slurm-任务号.out 命令查看运行状态,成功界面如图6。


. v% @* V& l+ a7 [3 _9 h                               
登录/注册后可看大图


后记

大家刚开始入门,WikiROMS是很好的查阅材料(虽然有些页面内容有缺失)

如果遇到问题,可以去ROMS官方的FAQ里查看前人的问题帖子以及arango、kate等大佬的解决方案(最近有一个读取变量时间的问题就是阅读FAQ解决的,很赞)

ROMS模式整体的使用大致流程就是这样,我也仅仅入门模式满打满算两年时间,期间上课、阅读文献知识积累占用很多的时间,基本很难有做项目以外的时间去碰ROMS其他的东西,更多的是沿用课题组里的配置做一些细微的改动,这也导致我现在停留在“能用”的这个阶段,距离“会用”还有很长的路要走。


5 O. k* D( F8 C# C' }* d" l
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
ucking
活跃在2022-11-2
快速回复 返回顶部 返回列表