CLM陆面模式的结果输出频率,通常是指输出文件的频率,如输出不同时间尺度的特征值,这里有两个注意事项:
- 时间尺度(可以是年、月、日、小时、甚至是模拟步长)
- 模拟结果(可以是平均值、瞬时值、最大值或最小值)
当创建Case进行到./case.setup之后,模型会在case所在的文件夹创建一系列namelist文件,有
- user_nl_clm
- user_nl_cpl
- -user_nl_datm
- -user_nl_mosart
其中控制CLM结果输出的就是user_nl_clm
通过编辑user_nl_clm中的内容(直接在文件末尾添加语句),就可以对CLM的模拟结果进行输出。默认的user_nl_clm内容如下
!----------------------------------------------------------------------------------
! Users should add all user specific namelist changes below in the form of
! namelist_var = new_namelist_value
!
! EXCEPTIONS:
! Set use_cndv by the compset you use and the CLM_BLDNML_OPTS -dynamic_vegetation setting
! Set use_vichydro by the compset you use and the CLM_BLDNML_OPTS -vichydro setting
! Set use_cn by the compset you use and CLM_BLDNML_OPTS -bgc setting
! Set use_crop by the compset you use and CLM_BLDNML_OPTS -crop setting
! Set spinup_state by the CLM_BLDNML_OPTS -bgc_spinup setting
! Set irrigate by the CLM_BLDNML_OPTS -irrig .true. setting
! Set co2_ppmv with CCSM_CO2_PPMV option
! Set dtime with L_NCPL option
! Set fatmlndfrc with LND_DOMAIN_PATH/LND_DOMAIN_FILE options
! Set finidat with RUN_REFCASE/RUN_REFDATE/RUN_REFTOD options for hybrid or branch cases
! (includes $inst_string for multi-ensemble cases)
! or with CLM_FORCE_COLDSTART to do a cold start
! or set it with an explicit filename here.
! Set maxpatch_glcmec with GLC_NEC option
! Set glc_do_dynglacier with GLC_TWO_WAY_COUPLING env variable
!----------------------------------------------------------------------------------
控制参数主要有两个,hist_mfilt 和 hist_nhtfrq。
hist_mfilt 是控制一个输出的一个nc文件包含记录的数目,如想要每月输出一条记录,但每年输出一个nc文件,这样每个nc文件中就相对于包含12个月的结果,即12条记录。
默认情况下:hist_mfilt = 1
hist_nhtfrq则是控制输出记录的频率,需要注意:
0:表示每月输出一条记录
正整数:表示按照模拟步长(通常是0.5h或1h)的正整数倍进行输出记录,如若步长为0.5h, 则48就代表每天输出一个结果
负整数:表示按照小时的整数倍输出记录,如-24也表示每天输出一个结果
默认情况下:hist_nhtfrq= 0
如果想每天记录一下,同时把一年中每天的记录都存放在一个nc文件中,该如何设置?
hist_mfilt = 365
hist_nhtfrq = -24
在不额外设置任何参数的情况下,CLM模式会按照逐月平均的频率输出结果,其中包含了各种各样的地表通量变量和状态变量,如潜热通量、感热通量、径流、地表温度、蒸散发、土壤含水等等。
当然,除了默认的输出之外,我们也可以根据自己的需要自定义输出变量列表。默认的输出变量列表是通过 hist_fincl1 变量来控制的。默认情况下,它包含了上述很多的变量。
我们可以通过以下方式往默认列表中添加和减少变量
hist_fincl1 = 'COSZEN', 'DECL'
hist_fexcl1 = 'TG', 'TV', 'TSOI', 'H2OSOI'
此外,如果我们不想改动模式默认的变量列表,则可以通过额外增加列表的方式进行添加,模式中最多提供了6个额外增加的列表清单控制参数。
例如,如果我们想额外输出指定频率的地表温度和植被温度,则可以通过下面方式进行控制
hist_fincl2 = 'TG', 'TV'
hist_fincl3 = 'TG', 'TV'
hist_fincl4 = 'TG', 'TV'
hist_fincl5 = 'TG', 'TV'
hist_nhtfrq = 0, -24, -6, -1, 1
hist_mfilt = 12, 30, 28, 24, 48
其中,TG和TV分别表示地表温度和植被温度。而 hist_nhtfrq 和 hist_mfilt 则负责控制包含默认列表在内的5个变量列表的时间频率,其分别对应
- 每月一条记录,一年一个nc文件;
- 每天一条记录,30天一个nc文件;
- 每6小时一条记录,一周一个nc文件;
- 每小时一条记录,一天一个nc文件;
- 每个步长一条记录,48条记录一个nc文件
默认的输出是以平均值作为该时段的特征值,如果我们想要输出模拟时段的最大值、最小值或是时段末的瞬时值,又该如何设置呢?
方法有两种:
其中,标识字母有4个,分别为A平均值、I 瞬时值、X最大值和M最小值
hist_empty_htapes = .true.
hist_fincl1 = 'TSOI:X', 'TG', 'TV', 'FIRE', 'FSR', 'FSH',
'EFLX_LH_TOT', 'WT'
hist_fincl2 = 'TSOI:X', 'TG', 'TV', 'FIRE', 'FSR', 'FSH',
'EFLX_LH_TOT', 'WT'
hist_fincl3 = 'TSOI', 'TG:I', 'TV', 'FIRE', 'FSR', 'FSH',
'EFLX_LH_TOT', 'WT'
hist_fincl4 = 'TSOI', 'TG', 'TV:I', 'FIRE', 'FSR', 'FSH',
'EFLX_LH_TOT', 'WT'
hist_fincl5 = 'TSOI', 'TG', 'TV', 'FIRE:I', 'FSR', 'FSH',
'EFLX_LH_TOT', 'WT'
hist_avgflag_pertape = 'A', 'I', 'X', 'M', 'A'
hist_nhtfrq = 0, -6, -24, -24, -24
解释
① hist_empty_htapes 表示将默认变量清单清空;
② 重新定义默认输出变量列表的变量内容,并新增4个列表。
③ 在列表变量中通过上述两种方式进行了输出变量特征值的设置,输出的内容包括平均值,瞬时值,最大值,最小值。
根据前面介绍,我们知道,CLM的计算是分层级的,如下图,最高层级是Gridcell,最低是Patch。默认情况下,结果是按照Gridcell输出的,但是,在某些研究中,如果我们想从Patch层级或Column层级输出,该如何设置呢?
通过下面例子,可以比较清楚的理解
hist_fincl2 = 'TG'
hist_fincl3 = 'TG'
hist_fincl4 = 'TG'
hist_fincl5 = 'TG'
hist_fincl6 = 'TG'
hist_dov2xy = .true., .false., .false., .false.
hist_type2d_pertape = ' ', 'GRID', 'COLS', ' '
hist_nhtfrq = 0, -24, -24, -24