首页 > 钓鱼视频 > 海钓视频

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

海钓视频钓友圈2023-06-25 06:05:53A+A-

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相关)。

图 1. 编译开始之前配置编译环境的两个例子,根据超算的情况来配置,一般module更普遍。环境配置命令写在.bashrc文件中(在根目录下vi .bashrc修改后source ~/.bashrc执行)。

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文件介绍,参照:

图 2 build文件内编译选项,如果计算速度很慢,可以考虑换一种mpi或者把parallel关掉试一下。

3.头文件(.h)

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

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

图 3. build与.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里,后续我自行掌握完整配一套模式的过程后,再来系统的给大家讲一下工具包的使用以及文件制作的详细事宜。

图 4 输入文件在.in文件中位置,以及对应文件名称
图 5 ROMS输出文件种类(一般用AVG结果分析,HIS可以作为初始场,DIA是动量诊断文件)

5.运行

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

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

图 5 模式成功运行界面

后记

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

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

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

知乎文章,首先我要做到自己有自信说会了弄懂了,同时有空闲的时间,才会慢慢的更新,所以会比较慢。下一期就先更新一下我搜集的驱动模式的一些常用数据集。

大家有问题可以直接知乎私信,我每天晚上都会看,能解答就帮助解答;有想要长期交流物理海洋或者模式问题的同学可以加我Q:1097457464(qq可能一个周上几次,没通过好友可以知乎私信告知),已经有同学来和我交流,能将经验第一时间交流给他们,也能发现自己存在的盲区,还是不错的。

希望我记录自己科研成长的文章能够帮到大家,我们共同进步!

点击这里复制本文地址 以上内容由趣钓网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

相关内容

模板文件不存在: ./template/plugins/comment/pc/index.htm

Copyright © 2012-2024 趣钓网 版权所有

钓鱼比赛视频 | 高手钓鱼视频 | 海钓视频 | 台钓视频 | XML地图 | HTML地图

qrcode
返回顶部
X趣钓网

截屏,微信识别二维码

微信号:

(点击微信号复制,添加好友)

  打开微信

微信号已复制,请打开微信添加咨询详情!