WRF learning log
2023年8月18日老师给了机器账号之后,开始自主安装WRF模式。本文中所有操作仅供参考,具体看个人机器情况而定。
安装模式
主要参考网站:
最新WRF4.5手册网站 WRF Users Guide documentation
WRF安装及运行——在服务器上_qq_40483871的博客-CSDN博客
超算入门笔记:大型机上如何运行WRF模式?一文总结(并行运算、Linux基础、作业调度、WRF运行)_什么都不会的张同学的博客-CSDN博客
安装包
安装包下载地址:
https://github.com/wrf-model/WPS/releases
https://github.com/wrf-model/WRF/releases
记录:
安装包的时候,最容易出问题的地方,就是环境。
- 在安装netcdf-fortran-4.5.2过程中,经验如下:
./configure 的时候是在检查环境,报错:C compiler cannot create executables
解决方法:
1 | export LIBS= |
这时候会报新的错:netcdf.h could not be found. Please set CPPFLAGS
可以echo $CPPFLAGS查看一下对应的路径下面是否有netcdf.h文件,是没有的,那肯定找不到,解决方法:
1 | export CPPFLAGS=-I$NETCDF/include |
其中{NCDIR}是安装netcdf包的位置,比如笔者按照官网教程安装就是在/Build_WRF/LIBRARIES/netcdf
然后再configure就行
背景:后续,我发现使用ifort/icc编译更加稳定,机器上的版本也更合适,所以就换成了intel。
安装WRF
1 | nohup ./compile em_real > log.compile 2>&1 & |
- 在编译WRF的时候,总是无法生成exe文件
最新的WRF4.5.1/4.5/4.4,我编译的时候,总是报各种奇怪的错,还很多,我就一路版本降级,到WRF4.3的时候,比较正常,只有17个error在我的compile.log里面了。
报错如下:
1 | ld: warning: libimf.so, needed by ../src/.libs/libhdf5.so, not found (try using -rpath or -rpath-link) |
总而言之就是libifport.so.5, libimf.so, libsvml.so,libintlc.so.5, libirng.so这几个文件找不到,说明这几个文件从LD_LIBRARY_PATH里面存储的路径中都找不到。
网上很多教程是直接加上intel的文件夹,但是很多不同版本和习惯安装的结果是这些包存在的文件夹对不同人来说是不一样的,所以我们需要手动寻找到在自己的机器上这些包存在哪里。
1 | which ifort |
寻找到自己目前环境里正在使用的intel安装在哪里,进去寻找这些文件存在的文件夹地址AAA,然后把这个地址加入到包环境路径中,这样在编译的时候,就不会存在这些文件找不到的现象,也就可以成功运行出exe文件了。
1 | export LD_LIBRARY_PATH=AAA:$LD_LIBRARY_PATH |
还可以使用
1 | echo $LD_LIBRARY_PATH |
命令输出当前的路径有哪里,检查这一条路径是否顺利加进去。
有的时候有的文件找不到,也可以echo检查自己是不是写错了什么字母。我有一次把grib2写成了gribs,哈哈哈。
安装WPS
- 安装WPS
先确定WRF_DIR:
1 | export WRF_DIR=/public/home/Build_WRF/WRFV4.5.1 |
注意编译WPS之前要设置好jasper库的地址:
1 | export JASPERLIB=$DIR/grib2/lib |
实际编译的命令:
1 | ./clean |
运行模式
ERA5
- 使用ERA5数据驱动WRF
WRF学习笔记之三:使用ERA5数据驱动并运行WRFV4.4(一层嵌套)
WRF学习之 ch3 WPS(三)WPS并行,检查WPS输出,WPS工具,输出到中间文件,运行WRF所需要的气象场,使用MPAS输出作为WRF初边界条件 - chinagod - 博客园
用WRF模型进行气象模拟入门(2)——WPS的配置与使用 - xg1990
GFS
使用GFS数据驱动WRF模式场—2层嵌套 全过程学习记录_gfs资料驱动wrf-CSDN博客
运行WPS
修改WPS目录下的namelist.wps文件:
1 | &share |
运行WPS:
geogrid defines model domains and interpolates static geographical data to the grids;
ungrib extracts meteorological fields from GRIB-formatted files;
metgrid horizontally interpolates the meteorological fields extracted by ungrib to the model grids defined by geogrid.
The work of vertically interpolating meteorological fields to WRF eta levels is performed within the real program
1 | ./geogrid.exe >& log.geogrid |
sst_update=1:
1 | ./geogrid.exe >& log.geogrid |
把以上内容写进一个shell文件:
1 | nohup sh run_wps.sh > log.runwps 2>&1 & |
查看嵌套区域:
1 | 先打开plotgrids_new.ncl文件,将type=x11注释,改为type=pdf |
会在WPS路径下生成:wps_show_dom.pdf文件。
运行WRF
先在WPS路径下:
1 | ncdump -h met_em.d01.2016-07-03_00\:00\:00.nc >& ncinfo.log |
查看预处理后的文件的信息,保证前后的设置一致。
修改WRF/run或者WRF/test/em_real(或者复制一下这两个文件夹)下namelist.imput文件。记得把namelist.input里num_metgrid_levels的值改为38。
WRF NAMELIST.INPUT FILE DESCRIPTION
WRF中namelist.wps与namelist.input参数详解
初始化的操作:an initialization program for either real-data (real.exe) or idealized data (ideal.exe),
数值积分迭代:a numerical integration program (wrf.exe),
其他:a program allowing one-way nesting for domains run separately (ndown.exe), and a program for tropical storm bogussing (tc.exe)
1 | cd WRF/test/em_real2 |
生成wrfout文件即为运行成功!
1 | ncdump -h wrfout_d01_2016-07-03_00\:00\:00 >& wrfout_info.log |
设置sst_update=1
气象家园 毕业大甩卖 之 WRF 进行 SST update 的简要步骤
ARW OnLine Tutorial: Input SST Data into the Model
实践,不需要特别处理SST,原来处理的文件里就有
超算运行
查看机器配置情况——lscpu
qsub
呜呜呜好搞笑。
我和师姐说我模拟的一个月,已经跑了一天了,师姐说你肯定有问题,她只要算2-3小时。我就懵了哈哈哈。
原来是因为我是单核在算,师姐说要提交多核运算。
这里补充一些在超算上提交任务查看任务的学习。
创建一个wrfpbs.pbs文件,将qsub命令需要的选项都存储在一个脚本里提交。只要输入:
1 | qsub wrfpbs.pbs |
输入以上命令就可以提交任务了。
1 | !/bin/bash |
-V : 表明qsub命令的所有环境变量都export到此作业。
-q destination
-N name: 作业名,限15个字符,首字符为字母,无空格。
nodes=N:ppn=M :请求N个结点,每个结点M个处理器。
以上设置4个结点,每个结点20个处理器,所以一共80个进程。
ppn:Processors Per Node
-j oe :输出标准输出信息与标准错误信息。
PBS -l walltime=500:00:00设置程序最大运行时间为500小时
其他的一些命令:
1 | Job id 是给你提交的任务分配的任务号 |
sbatch
1 | !/bin/bash |
sinfo-查看分区信息
PARTITION表示分区、NODES表示节点数、STATE表示节点运行状态、NODELIST表示节点列表。
状态一列中idle表示节点处于空闲状态,可接收新的作业;allocated表示节点已经分配了一个或者多个作业且所有核心用满,在作业释放前不能再被分配作业;mix状态为使用部分核心,仍可以被分配作业;drain状态表示对应节点已经下线;drng表示已下线但仍有作业在运行。
squeue-查看作业信息
其中JOBID表示任务ID编号,PARTITION表示作业所在队列(分区),NAME表示任务名称,USER为用户,ST为作业状态,TIME为已运行时间,NODES表示占用节点数,NODELIST(REASON)为任务运行的节点列表或者原因说明。
另外,状态列中R-Runing(正在运行),PD-PenDing(资源不足,排队中),CG-COMPLETING(作业正在完成中),CA-CANCELLED(作业被人为取消),CD-COMPLETED(作业运行完成),F-FAILED 作业运行失败,NF-NODE_FAIL节点问题导致作业运行失败,PR 作业被抢占,S 作业被挂起,TO 作业超时被杀。
scancel-删除作业
scancel <作业号>
如果需要删除当前用户下所有的任务
1 | scancel -u 用户名 |
其它问题
自带的说明文件
在/WRF/run目录下,有几个README.*文件。
README.namelist 对namelist.input中的变量进行介绍。
README.tslist 对输出wrfout的一些变量进行介绍。
查找rsl中的问题
1 | grep -i error rsl* |
forrtl: severe (174)
WRF运行wrf.exe出现forrtl: severe (174): SIGSEGV, segmentation fault occurred问题原因与解决合集_陆詟水栗的博客-CSDN博客
算得慢(血泪)
要注意,之前按照教程configure WRF的时候,选择的编译器选项都是13,如果要并行,要重新configure和compile,选择编译器15。
注意WPS也要重新configure,选择19.
还是算得很慢
把模式版本降低从4.5.1降低到4.2.1,计算时间从1h/天降低到30min/天。
但是还是很慢
把使用的结点和线程从4结点,80线程降低到2结点,40线程,计算速度大幅提高,达到6min/天。
老天爷,谁想到,用的结点和线程多了,反而会影响计算效率。
关于继续计算
可以打开namelist.input中restart按钮,就会使用保存到wrfrst开头文件进行继续计算。
1 | restart = .true., |
关于计算时长
1 | echo "Job start time =" `date` |
补充安装hdf5
使用intel编译器编译WRF4.4_wrf编译不同intel编译器的区别_sdlyx2017的博客-CSDN博客
【WRF×HDF5】关于WRF利用netCDF4/HDF5特性以节省磁盘空间的讨论
1 | ./configure --prefix=$DIR/hdf5 |
安装完hdf5之后,需要重新安装netcdf
1 | export LDFLAGS=-L$DIR/hdf5/lib |
如果想要使用python的wrf-python包对wrfout文件进行处理,还是不要安装hdf5模块了,虽然文件会压缩变小,但是格式会从nc变成hdf5,相应的wrf-python中那些方便的命令都无法使用了。
清理空间
查看当前用户空间
1 | mmlsquota -u 用户名 --block-size G |
1 | rm -f rsl* wrfout* wrfrst* wrfbdy* met_em* wrflowinp* |
1 | rm -f FILE* GRIBFILE* met_em* PFILE* |
修改文件名
1 | mv a.txt a1.txt |
远程传输文件
1 | scp -rp 172.24.5.12:/home/wsupport /home/wsupport/ |
查看当前目录空间大小
查看当前目录总共占的容量,而不单独列出各子项占用的容量:
1 | du -sh |
单独列出各子项占用的容量,并且从大到小排序:
1 | du -sh ./* .|sort -hr |
wrf中的地形数据
存储在geo_em.文件/met_em.文件和wrfout文件中的HGT/HGT_M变量中。
拆解WRF源码
主目录结构:
- arch:包含不同计算平台的配置文件。
- chem:化学模块,用于大气化学模拟。
- dyn_em:ARW(Advanced Research WRF)动力核心。
- dyn_nmm:NMM(Nonhydrostatic Mesoscale Model)动力核心。
- external:外部库和工具。
- frame:框架代码,包括时间步进和网格处理。
- inc:包含头文件。
- main:主程序和初始化代码。
- phys:物理过程模块,包括辐射、微物理、边界层等。
- run:运行时所需的配置文件和脚本。
- share:共享代码和工具。
- test:测试用例和验证代码。
- tools:工具和实用程序。
主要文件:
- configure:配置脚本,用于设置编译选项。
- Makefile:编译和链接的控制文件。
- README:包含基本信息和使用说明。
动力核心:
- ARW(Advanced Research WRF):适用于研究和高分辨率模拟。
- NMM(Nonhydrostatic Mesoscale Model):适用于操作性预报和较大尺度模拟。
物理过程模块:
- 微物理(Microphysics):模拟云和降水过程。
- 辐射(Radiation):模拟大气中的辐射传输。
- 边界层(Boundary Layer):模拟大气边界层过程。
- 地表过程(Surface Processes):模拟地表与大气之间的能量和水分交换。