CESM2.2_CLM5.0 (fake)single point(伪)单点模拟√
0. 前言
single point单点模拟的官方正解已整理
CESM2.2_CLM5.0 single point 单点模拟
https://blog.csdn.net/Arr3n/article/details/120771229
但是无奈需要的输出(植被总初级生产力GPP)一直为0,因此尝试另外的方法,曲线救国,用全球的模型框架稍作更改达到单点模拟输出的目的,即 (fake)single point
1. 制作domain、surfdata文件
$ cd /scratch/hcdu/CESM/components/clm/tools/ncl_scripts/
编辑sample_inlist,分别设置剪裁domain、surfdata的底图,注意底图的分辨率(0.9x1.25)对应create_newcase时候--res设置
fatmlndfrc = '/workdir/MODCESM/tcraig/IRESM/inputdata/share/domains/domain.lnd.fv0.9x1.25_gx1v7.151020.nc'
fsurdat = '/workdir/MODCESM/tcraig/IRESM/inputdata/lnd/clm2/surfdata_map/release-clm5.0.18/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr1850_c190214.nc'
编辑sample_outlist,分别是domain、surfdata文件名
fatmlndfrc = 'domain.lnd.fv0.9x1.25_gx1v7.151020_NiwotRidge.nc'
fsurdat = 'surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr1850_c190214_NiwotRidge.nc'
使用getregional_datasets工具,输入裁剪的区域边界经纬度(东经,北纬)
$ getregional_datasets.pl -ne 40.5,255 -sw 40,254.3 -I sample_inlist -o sample_outlist
# 这里输入的经纬度值应包含(仅)一个预设的中心格点,即输出的domain文件里的[xc,yc],比如这里的[xc,yc]=[255,40.0524]
# 如果输入的经纬度值不满足要求,模型会返回所有可供选择的中心格点经纬度值,可以以此参考——xc间隔1.25°,yc间隔0.9425°
# 中心格点与边格点[xv,yv]的经度间隔0.625°,纬度间隔0.4712°,这个应该与选用的底图有关
# 与domain和surfdat同时生成的还有一个xmlchange_cmnds
2. Create Case
$ cd /scratch/hcdu/CESM/cime/scripts/
$ ./create_newcase --case ~/CESM_Clm/I2010CLM50bgc_fsinglept --res f09_g17 --compset 2010_DATM%GSWP3v1_CLM50%BGC_SICE_SOCN_SROF_SGLC_SWAV_SIAC_SESP --user-mods-dir /scratch/hcdu/CESM/components/clm/tools/ncl_scripts --mach sofie --run-unsupported
# 这个compset为“默认从2010-01-01开始模拟,大气DATM使用GSWP3v1数据、陆面CLM5.0启用生物地球化学计算,其余模块均关闭”
# 查询compset别称参考:$CESM/components/clm/cime_config/config_compset.xml
# case名称不是默认格式(e.g. I1850CLM50SP),则加最后 run unsupported
# user-mods-dir链接到上面getregional的目录,运行xmlchange_cmnds和user_nl_clm
3. Case xml变量设置(before case.setup)
在$CASEROOT路径下
$ ./xmlchange DATM_CLMNCEP_YR_START=2014 #运行起始年份
$ ./xmlchange DATM_CLMNCEP_YR_END=2014 #运行结束年份
$ ./xmlchange RUN_STARTDATE=2014-01-01 #运行起始日期
# DATM_MODE默认为CLMGSWP3v1,不修改
# DATM_CLMNCEP_YR_ALIGN为并齐年份,默认与起始年份相同
$ ./xmlchange LND_DOMAIN_PATH=/scratch/hcdu/CESM/components/clm/tools/ncl_scripts/
$ ./xmlchange ATM_DOMAIN_PATH=/scratch/hcdu/CESM/components/clm/tools/ncl_scripts/ # domain文件路径
$ ./xmlchange LND_DOMAIN_FILE=domain.lnd.fv0.9x1.25_gx1v7.151020_NiwotRidge.nc
$ ./xmlchange ATM_DOMAIN_FILE=domain.lnd.fv0.9x1.25_gx1v7.151020_NiwotRidge.nc # domain文件名
$ ./xmlchange DIN_LOC_ROOT_CLMFORC=~/data/inputdata/atm/datm7 #输入的大气forcing data路径
# DIN_LOC_ROOT为默认输入数据路径:'/workdir/MODCESM/tcraig/IRESM/inputdata/'
# LND、ATM_DOMAIN默认为 '/workdir/MODCESM/tcraig/IRESM/inputdata/share/domains/ domain.lnd.fv0.9x1.25_gx1v7.151020.nc'
# 此处DOMAIN的设置对应./preview_namelists后$CASEROOT/Buildconf/datm.input_data_list里最后一行的domainfile
# CLM_FORCE_COLDSTART默认关闭'off'。若开启强制冷启动,则无视起始数据finidata
# CLM_BLDNML_OPTS默认为生物地球化学:'-bgc bgc'
$ ./xmlchange STOP_OPTION=nyears # 单次运行
$ ./xmlchange STOP_N=1 # 运行次数
# 单趟运行n次设置的运行单位,结束后resubmit再运行
# REST_OPTION、_N为resubmit之后的设置,默认与STOP_一致
$ ./xmlchange --force JOB_QUEUE=debug # 更改队列
$ ./xmlchange --force JOB_QUEUE=debug
# 运行两次更改队列,是因为模型会有两个进程case.run、case.st_archive
# NTASKS调用核心数默认:[...,'ATM:4', 'LND:4', ...]
# 查询$CASEROOT CLM参数 CESM2_CLM5.0_CASEROOTvariable
$ ./case.setup
4. 编写user_nl_ 、准备streams文件(before case.build)
打开$CASEROOT/user_nl_clm,写入(或者使用 echo " " >>)
fsurdat = "/scratch/hcdu/CESM/components/clm/tools/ncl_scripts/surfdata_0.9x1.25_hist_16pfts_Irrig_CMIP6_simyr1850_c190214_NiwotRidge.nc"hist_mfilt = 31
hist_nhtfrq = -24
use_cn = .true.
hist_fincl1 = 'GPP'
# fatmlndfrc为陆面分离文件,设置了LND_DOMAIN_PATH/FILE后就不用再设这一项了
# finitdat为初始条件文件。若添加有finitdat,可打开use_init_interp对初始条件地图进行插值
# 查询user_nl_clm参数 CESM2_CLM5.0_namelist
在$CASEROOT下执行./preview_namelists在./CaseDocs/生成datm.streams.txt.文件,
$ ./preview_namelist
三个气象数据的datm.streams.txt.文件(TPQW、Solar、Precip)里面domain文件的路径和名称默认链接到domain.lnd.360x720_gswp3.0v1_c170606.nc
# 此处DOMAIN的设置对应./preview_namelists后$CASEROOT/Buildconf/datm.input_data_list里第一行的domain1
# 这一domain文件专门匹配GSWP的数据集,分辨率0.5°(若未修改,在submit后会报错空间分辨率不匹配)

!此教程以下无需操作
注: 若为单点模式(DATM_MODE=1PT)将这些文件添加user_前缀复制到$CASEROOOT
$ cp ./CaseDocs/datm.streams.txt.topo.observed user_datm.streams.txt.topo.observed
$ cp ./CaseDocs/datm.streams.txt.presaero.clim_2010 user_datm.streams.txt.presaero.clim_2010
$ cp ./CaseDocs/datm.streams.txt.CLMGSWP3v1.TPQW user_datm.streams.txt.CLMGSWP3v1.TPQW
$ cp ./CaseDocs/datm.streams.txt.CLMGSWP3v1.Solar user_datm.streams.txt.CLMGSWP3v1.Solar
$ cp ./CaseDocs/datm.streams.txt.CLMGSWP3v1.Precip user_datm.streams.txt.CLMGSWP3v1.Precip
将$CASEROOT/CaseDocs/里的datm_in内容复制到$CASEROOT下的user_nl_datm,在里面修改变量设置
# $CASEROOT/user_nl_datm的配置是在./xmlchange的基础上去进行修改的(优先级最高),决定了$CASEROOT/Buildconf/datm.input_data_list的内容

再次运行./preview_namelists,模型根据修改后的stream文件,更新./BuildConf下文件的信息,其中关键的是datm.input_data_list的内容
!此教程以上无需操作
执行./check_input_data检查输入数据,同时检查输入forcing data是否齐全
$ ./preview_namelists
$ ./check_input_data
$ ./case.build --skip-provenance-check
5. Case submit ✔
$ ./case.submit
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
