$ cd /workdir/hcdu/CESM/cime/scripts/
$ ./create_newcase --case ~/CESM_Clm/US_NR1_2014 --res CLM_USRDAT --compset I1PtClm50SpRsGs --mach sofie --run-unsupported
# 这个compset专适用单点模拟,除CLM外大部分模块都关闭
# 查询compset别称参考:$CESM/components/clm/cime_config/config_compset.xml
# case名称不是默认格式(e.g. I1850CLM50SP),则加最后 run unsupported
路径 $CESM/cime/config/cesm/machines
config_machines.xml 关于运行机器的设置,包括输入输出目录(search [机器名])
config_compilers.xml 关于编译工具的设置
config_batch.xml 关于批命令运行的设置(search [机器名])
./xmlquery [variablename] 查询变量
./xmlchange [variablename] 设置变量
在$CASEROOT路径下
$ ./xmlchange DATM_MODE=CLM1PT #运行模式为单点模拟
$ ./xmlchange DATM_CLMNCEP_YR_START=2014 #运行起始年份
$ ./xmlchange DATM_CLMNCEP_YR_END=2014 #运行结束年份
$ ./xmlchange RUN_STARTDATE=2014-01-01 #运行起始日期
# DATM_CLMNCEP_YR_ALIGN为并齐年份,默认与起始年份相同
$ ./xmlchange ATM_DOMAIN_PATH=~/data/CESM_Clm/US_NR1/domain_US_NR1_2014/
$ ./xmlchange LND_DOMAIN_PATH=~/data/CESM_Clm/US_NR1/domain_US_NR1_2014/
# domain文件路径
$ ./xmlchange ATM_DOMAIN_FILE=domain.lnd.US_NR1_2014.210923.nc
$ ./xmlchange LND_DOMAIN_FILE=domain.lnd.US_NR1_2014.210923.nc
# domain文件名
$ ./xmlchange DIN_LOC_ROOT=/workdir/MODCESM/tcraig/IRESM/inputdata/
#inputdata路径
$ ./xmlchange DIN_LOC_ROOT_CLMFORC=~/data/CESM_Clm/US_NR1/forcingdata_US_NR1_2014/
#输入的大气forcing data路径
$ ./xmlchange CLM_FORCE_COLDSTART=on # 强制冷启动:开
$ ./xmlchange CLM_BLDNML_OPTS='-bgc bgc' # 生物化学设置
# domain文件制作借助 $CESM/cime/tools/mapping/gen_domain_files/ 工具
(参考文章:Clm5地表数据制作)
# 开启强制冷启动,则无视起始数据inidata
# 制作起始数据使用Spinup模式,CLM_ACCELERATED_SPINUP=on
$ ./xmlchange STOP_OPTION=nyears # 单次运行单位
$ ./xmlchange STOP_N=1 # 运行次数
# 单趟运行n次设置的运行单位,结束后resubmit再运行
# REST_OPTION、_N为resubmit之后的设置,默认与STOP_一致
$ ./xmlchange NTASKS=1 # 调用CPU核心数(每个模块)
$ ./xmlchange --force JOB_QUEUE=debug # 更改队列
$ ./xmlchange --force JOB_QUEUE=debug
# 运行两次更改队列,是因为模型会有两个进程case.run、case.st_archive
$ ./case.setup
打开$CASEROOT/user_nl_clm,写入(或者使用 echo " " >>)
hist_mfilt = 365
hist_nhtfrq = -24
fsurdat = "/home/hcdu/data/CESM_Clm/US_NR1/surfdata_US_NR1_2014/surfdata_US_NR1_2014_hist_78pfts_CMIP6_simyr2000_c210926.nc"
use_cn = .true.
# hist_mfilt 单个输出文件中的结果个数(default=1)
# hist_nhtfrq 数据结果的时间频率/分辨率 n(default n=0, monthly)
n>0 : n * half hour || n<0 : (-n) * hour
# 上面的设置:单个输出文件记录365个(1年)的日数据
# 单个文件设置输出结果数过多可能会影响输出(本实验最终调整hist_mfilt=31)
# fsurdat为陆面数据surfdata_*.nc的路径,需要双引号
# surfdata制作借助$CESM/components/clm/tools/工具 (参考文章:Clm5地表数据制作)
# user_cn打开clm模型的碳氮运算
#!!!强烈建议前往官网好好看看各项参数CESM_CLM5.0参数
在$CASEROOT下
$ ./preview_namelists
$ cp ./CaseDocs/datm.streams.txt.CLM1PT.CLM_USRDAT user_datm.streams.txt.CLM1PT.CLM_USRDAT
$ cp ./CaseDocs/datm.streams.txt.topo.observed user_datm.streams.txt.topo.observed
$ cp ./CaseDocs/datm.streams.txt.presaero.clim_2000 user_datm.streams.txt.presaero.clim_2000
执行后在./CaseDocs、./BuildConf/datmconf 中生成datm.streams.txt文件:
a) 气象数据stream文件。官方文档:Precip, Solar,TPHWL等;
单点模拟自己输入:CLM1PT.CLM_USRDAT
b) 地形stream文件:.topo.observed;气凝胶stream文件:.presaero.clim_2000
将三个stream文件复制到$CASEROOT,加上user_前称
打开user_datm.streams.txt.CLM1PT.CLM_USRDAT(另外两个stream文件不用改动),改动filepath、fileNames、variableNames
注意:
!variableNames下不要有空行,其中前一列为输入文件里的变量名,后一列为模型变量名
!forcing data里的长、短波辐射数据不能有负值
复制./CaseDocs下的datm_in的内容到user_nl_datm,为对user_datm.streams.txt.CLM1PT.CLM_USRDAT的说明
$ ./preview_namelists
$ ./check_input_data
再次运行./preview_namelists,模型根据修改后的stream文件,更新./BuildConf下文件的信息,其中关键的是datm.input_data_list的内容
执行./check_input_data检查输入数据,同时检查输入forcing data是否齐全
$ ./case.build --skip-provenance-check
$ ./case.submit
【参考文章】cesm单点模拟_by咯咯咯-鸽鸽鸽https://blog.csdn.net/z894730988/article/details/118816783https://blog.csdn.net/z894730988/article/details/118816783run cesm2.1.3 with my own forcing dataset_by大余海生https://blog.csdn.net/jerry003/article/details/111356760
https://blog.csdn.net/jerry003/article/details/111356760
P.S. 回来更一下,这个singlepoint的模型虽然能跑,但是有一个问题,就是想要的量输出一直是0……T_T
可能是两个方面的问题:
surfdat文件中地表的初始植被为(LAI=)0;气象输入文件制作有问题
!!!
于是针对这两个问题,改用了另一种更快捷简便的制作domain与surfdat文件的方式、采用了一种伪单点模式运行气象数据(即把气象数据塞入模型自带的全球气象数据格网中),再整理一篇文章总结一下
建议仔细阅读 ==》CLM5.0单点模拟#成功运行模式#(更新完善中)https://blog.csdn.net/Arr3n/article/details/120891088?spm=1001.2014.3001.5502