CESM2 运行笔记——小白手把手

一、创建例子

步骤一常用网站

完整大气模块及分辨率的说明网站:https://www.cesm.ucar.edu/models/cesm2/cesm/compsets.html

首先要知道CESM中CIME文件夹是核心文件,也就是我们所有的运行更改基本都是在这个文件夹中就能完成的。
第一步要创建例子,通过/home/pengyf20/model/my_cesm_sandbox/cime/scripts 这个路径下的create_newcase这个脚本加上例子名称,模块名称,和模式分辨率就能创建,如创建FHISH这个模块的历史大气强迫,并命名为fwhist

cd cime/scripts
./create_newcase --case fwhist --compset FWHIST --res f09_f09_mg17 --machine ibmintel

create这一步一般比较快就结束了,下一步要setup

cd fhist   #要进入到你创建的例子的目录下

二、参数设置

1.查看任务数并更改

./xmlquery  ATM_NTASKS,CPL_NTASKS,GLC_NTASKS,ICE_NTASKS,LND_NTASKS,OCN_NTASKS,ROF_NTASKS,WAV_NTASKS,MAX_TASKS_PER_NODE,MAX_MPITASKS_PER_NODE
./xmlchange ATM_NTASKS=-4,CPL_NTASKS=-4,GLC_NTASKS=-4,ICE_NTASKS=-4,LND_NTASKS=-4,OCN_NTASKS=-4,ROF_NTASKS=-4,WAV_NTASKS=-4,MAX_TASKS_PER_NODE=32,MAX_MPITASKS_PER_NODE=32

这里简单说一下:ATM_NTASKS=的数字是正的就是任务数,是负值就是节点数。比如以上的-4代表的是ATM这个模块使用四个节点来运行。但是每个用户的节点是有限制的,不要设置超了。

2.查看设置例子的参数并更改

#查看例子的描述
./xmlquery CASESTR     
./xmlchange CASESTR=description of case

#利用./xmlquery查看下面的参数,并利用./xmlchange 做出改变

#查看 运行类型,   运行开始时间      ,结束选项   ,结束选项对应的数字       ,结束时间
./xmlquery RUN_TYPE,RUN_STARTDATE,STOP_OPTION,STOP_N,STOP_DATE
#查看         重启选项      重启数字    继续运行选项         重新提交是否继续运行
./xmlquery REST_OPTION,REST_N,CONTINUE_RUN,RESUBMIT,RESUBMIT_SETS_CONTINUE_RUN
#查看是否加速spin-up时间
./xmlquery CLM_ACCELERATED_SPINUP

以上这些常改的有RUN_TYPE,RUN_STARTDATE,STOP_OPTION ,STOP_N,STOP_DATE这几个选项。改完build之后会表现在drv_in文件中,因此也可以在drv_in中修改(cesm2中不行)
当利用xmlchange工具改完了以上参数之后,就可以setup了

./case.setup

如果你在setup之后发现你的某个东西改错了或者需要重新改的话,可以直接在利用xmlchange工具来改,改完之后执行

./case.setup --reset

3.更改namelist文件

这些namelist之后再你setup之后才会生成
建议改完上面之后就直接build,方便对照case/$casename/run目录下的atm_in来改下面的namelist

./case.build
(1)设置npr_yz

注意这里的任务数需要和上面设置的ATM_NTASKS=-4和MAX_TASKS_PER_NODE=32对应。在user_nl_cam里面加入的npr_yz=x1,x2,y1,y2,这里要满足:x1x2=y1y2=ATM_NTASKS × MAX_TASKS_PER_NODE 并且x1=y2,x2=y1
这些任务数等参数可在此处修改,利用编辑user_nl_cam,当然如果运行的其他模块就改对应的模块的nl。
经常设置的如下:

vi user_nl_cam
npr_yz         = 32,4,4,32   
#这句话会改变到build之后的atm_in,所以也可以在build之后在atm_in文件直接改(cesm2不行)

注意:要是改了总核数超过128,需要改一下env_mach_specific.xml文件中的num_tasks。比如说用了400个核,那这里最少改成400
在这里插入图片描述

(2)设置输出文件
avgflag_pertape                = 'A'

这里‘A’表示的是平均值,如果要输出瞬时值则改为‘I’。可以写多个参数,这个个数和下面的输出文件个数对应。比如说写‘A’,‘I’,那么就是下面的1号文件为平均值输出,2号文件为瞬时值输出。

fexcl1         = ''

这个设置的是剔除的变量,也就是不输出的变量,这个例子中引号没东西,就说明设置成不剔除任何变量,但是在下面还是可以设置输出的变量的。

fincl1         = 'AODABSdn', 'AODBCdn', 'AODdnDUST1', 'AODdnDUST2', 'AODdnDUST3', 'AODdnMODE1', 'AODdnMODE2', 'AODdnMODE3',
         'AODDUST2', 'AODDUST', 'AODNIRstdn', 'AODPOMdn', 'AODSO4dn', 'AODSOAdn', 'AODSSdn', 'AODUVdn'

输出变量对照查看以下两个网站(虽然不全能找到,但是能先应付)(https://www.cesm.ucar.edu/models/cesm1.0/cam/docs/ug5_0/hist_flds_fv_cam5.html)
(https://www.cesm.ucar.edu/models/cesm2/atmosphere/docs/ug6/hist_flds_f2000.html)
以下是我使用过程中的总结的一些命名经验:

**DDF                           **在底部的干沉降通量 (grav + turb)
**SF**                          **表面**
EVAP**                          **水汽**
**dn                            白天和晚上的**
EXTINCT**                       气溶胶消光**
FL**                            长波辐射**
FS**                            太阳辐射**
GS**                            **气相化学(湿清除)
PREC**                          降水率**
RAD**                           **的半径(官网应该写错成sad了)
CLD**                           格点box中**的平均
TM**                            **的柱浓度
WD**                            **的湿沉降垂直积分

这个fincl后面的数字代表的数几号输出文件,等号后面的是输出的变量名,请对照好变量。如果你的默认输出有好多个fincl,你想把他们写到一起,注意是否会重复,另外注意其他的写成引号中间没东西的,如下

 fincl2         = ''
 fincl8         = ''

而且如果是atm_in里面没有的不要写进去,不然会报错。

(3)设置输出频率和每个文件的时间
mfilt          = 60       #这个是每个文件的时间,表示的是输出多少次,对应下面的参数
nhtfrq         = 0        #0表示输出月均值文件,-24表示每24小时输出(负值表小时)
#上面这两句话表示输出的是月均值,没60个月(5年)输出在一个文件

改完这几项基本就可以**./case.build**
所以在这里改完之后,最好在build之后atm_in文件在检查一下是否合适。

build之后最好可以在drv_in和atm_in文件中查看已经改过的相关内容,确保无误。

./xmlquery STOP_OPTION,STOP_N,RUN_TYPE,CONTINUE_RUN,RUN_REFCASE,RUN_REFDATE,RESUBMIT,RUN_STARTDATE,RUN_REFDIR,DOUT_S,DOUT_S_ROOT,JOB_WALLCLOCK_TIME
#当运行方式为startup时,RUN_REFCASE和RUN_REFDATE不起作用,最好把GET_REFCASE设为FALSE(没有测试为TRUE的情况)。可以直接更改RUN_STARTDATE为想要开始运行的日期
一般利用这个脚本来查看文件中的设置,并利用xmlchange文件来做出更改
#在user_nl_cam文件中设置
megan_mapped_emisfctrs = .false.
./xmlquery CAM_CONFIG_OPTS
	CAM_CONFIG_OPTS: -phys cam6 -age_of_air_trcs -chem waccm_tsmlt_mam4
#查询大气化学模块

所有的参数都要在scripts文件中利用以上方式或者查找对应的xml文件进行修改,在重新build,此时应该就会出现在drv_in文件中

未知待改

# PORT input data   PORT的输入数据
offline_driver_infile = '/path/base_run_case.cam.h1.0001-01-01-00000.nc'

# Output the radiation data    输出辐射数据
rad_data_output=.true.

# Specify the radiation data be written to history file number 2 (rad_data will be in files with cam.h1 in their name)
rad_data_histfile_num=2

# Write out the instantaneous rad_data and radiation diagnostics(每步都计算辐射)
rad_data_avgflag = 'I'
avgflag_pertape = 'A','I'

! Make certain the radiation is called every time step
iradlw = 1
iradsw = 1

! Include radiation diagnostics
fincl2 = 'FLNT', 'FLNR','FLNS', 'FSNT','FSNR', 'FSNS'

! Output frequency
nhtfrq = 0,73

! number of time records per individual history file
mfilt = 1,5

! double precision output
ndens = 1,1

三、提交作业

#!/bin/bash
#SBATCH --nodes=4
#SBATCH --ntasks-per-node=32
#SBATCH --job-name=testfwsc
export PATH=/home/pengyf20/tools/perl-5.16.1:$PATH
export PERL5LIB=/home/pengyf20/tools/perl-5.16.1/lib:/home/pengyf20/tools/perl-5.16.1/lib/perl5
echo $PERL5LIB
./case.submit

这里需要注意的几个地方:注释部分也是会被识别的,所以需要对应的改变几个地方:
1.需要改变nodes(节点数)和ntasks-per-node(每个节点的任务数)这两个参数,并且两个相联系的
①要注意nodes这个变量会直接影响你提交作业后你的脚本可以申请到的节点数,但是需要注意服务器上可能每个用户有节点限制,不要超过那个节点数。另外最好可以预留出一个节点,留作你跑其他程序或者创建例子的时候使用
②首先注意npr_yz=32,4,4,32就意味着是32×2=128,更改ntasks-per-node的时候,需要保证你的节点数和你的单个节点的的任务数相乘等于npr_yz计算出来的总数,也就是128.
2.最好改一下job-name,因为这个是你提交作业时显示的作业名,可以更好的区分作业。
3.export部分第一次作业的时候,复制这部分过去之后需要修改,之后就不用了
这部分可以直接从你的~/.bashrc里面去复制出来。主要是pel的环境变量。

env_run.xml几个不确定的参数说明

1.更改运行区域应该是在该文件中的397行往下

源代码路径

/home/pengyf20/model/my_cesm_sandbox/components/cam/src/

  • 30
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
CESM是全球气候模型系统 (Community Earth System Model) 的一个版本。它是一个由多个组件组成的集合,包括大气、海洋、陆地和海冰模型。CESM的python版本称为python CESM。要了解更多关于python CESM的信息,您可以查看 "Downloading CESM2 (CESM2.1) — CESM CESM2.1 documentation"。此外,您还可以访问 "CESM_postprocessing"项目存储库,该存储库包含了基于CESM python的后处理代码,并提供了相关的文档和问题跟踪信息。如果您是NCAR用户,您可以在林间空地上访问这些数据集的说明。同时,您可以查看"BATCH_SYSTEM"来了解在该机器上使用的批处理系统。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [安装CESM记录](https://blog.csdn.net/mayubins/article/details/122190826)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [CESM_postprocessing:基于CESM python的后处理代码,文档和问题跟踪的项目存储库](https://download.csdn.net/download/weixin_42123191/18386442)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值