在学习使用WR_SimpleGCM的时候,遇到了很多的问题,幸运的是,在师姐、师兄、服务器管理员的帮助下,成功将模式跑起来。特将使用模式的完整流程记录,以供参考。
1. 下载模式
前往GitHub下载所需要的模式
2. 简介
该模式最早是2018年发表于JAMES上的文章提出,对于原来的GCM进行进一步的优化,文章链接。
3. 修改编译所需要的文件
在模式运行之前,需要完成编译,生成一些.o和.mod文件。整个编译的流程如下:
进入编译文件夹
1 | cd WR_simpleGCM/fms_hs_winnie/compile/ |
修改intel.mk,Makefile,Makefile.fms_spectral_solo,compile.csh四个文件
- 修改intel.mk
commands部分修改如下
1 | FC = mpiifort #using MPI |
*使用的编译器要根据每个服务器已经安装的编译器来修改,可以查看.bashrc文件,也可以自己安装
这里使用的编译器主要是针对fortran和c语言的编译器,而MPI则意味着使用并行运算
1 | #设置intel的library和include的路径 |
*需要先检查服务器的intel以及NETCDF的安装以及对应的版本,再确认路径,同样可以查看.bashrc文件
- 修改Makefile
1 | include intel.mk |
*Makefile文件的修改比较简单。由于下载的原因,所有注释“#here”的代码行的开头为8个空格,需要重新修改为两个/tab
- 修改Makefile.fms_spectral_solo
1 | SRCROOT = /YOUR/OWN/PATH/WR_simpleGCM/fms_hs_winnie/src/ |
*修改第一行的路径
- 修改compile.csh
1 | module load intel mvapich2 netcdf-c/4.3.3.1 netcdf-f/4.4.0.i |
*注释掉 module load 这行,因为博主的服务器账号通常用.bashrc文件设置
4. 编译
首先,在compile.csh文件中发现是编译文件是在obj文件夹,因此添加一个文件夹;其次,要增加compile.csh文件和WR_simpleGCM/fms_hs_winnie/src/mppnccombine/mppnccombine_compile文件的执行权限;最后,运行compile.csh文件。
1 | chmod 755 mppnccombine_compile |
之后,耐心等待一段时间,就编译好了。检查一下在obj文件夹下是否生成wr_hs.x的执行文件,如果有,则证明编译成功,如果没有,则证明失败。
在修改文件过程中,最复杂的就是设置lib和include的路径。博主咨询了服务器的管理员,检查了对应的Intel和NETCDF版本,同时检查了nc-config的一些命令,在管理员修改了账号调用lib和include的优先级之后,终于成功编译!
5. 修改runjob.csh
修改文件中各环境变量在个人服务器下的具体路径
修改 run the model部分的代码
1
2
3module load mpi/intelmpi/2018.1
mpiexec_mpt dplace -s 1 $executable > fms.out
mpirun -np $npes $executable > fms.out*不需要module load语言,注释掉就行
*根据服务器的core的数量,设置自己希望调用的$npes(注意调用的core的数量要能被最大纬度数:64 整除)修改&spectral_init_cond_nml和&topography_nml部分中地形数据的路径
修改&hs_forcing_nml部分的drag_file
1
drag_file = '$drag_file_name'
6. 修改/WR_simpleGCM/fms_hs_winnie/src/atmos_param/hs_forcing/hs_forcing.f90文件
1 | character(len=256) :: drag_file |
*可以通过vim中的查找,定位“drag_file”的位置,快速修改代码
7. 运行模式
1 | ./runjob.csh |
8.查看结果
前往在runjob.csh中使用”set name = YOUR_NAME”定义的文件夹查看
生成的0000xxxx.cpio文件可以使用代码进行解压
1 | cpio -idmv < xxx.cpio |
对于该模式的学习笔记将持续更新······