CLM模型替换大气强迫数据 GSWP3---CMFD

目录

1.数据准备_Precip, Solar, TPHWL

2.操作步骤


1.数据准备_Precip, Solar, TPHWL

以降水数据为例,查看GSWP3大气强迫数据nc数据的格式,将cmfd转换成数据格式一样,其变量数量和变量单位要与GSWP3大气强迫数据一致。写nc数据可采用多种方式,我是用的matlab写的可以使用。注意:闰年2月的CMFD数据和GSWP3数据time不一致!要改成与GSWP3相同格式。

写数据的时候要注意:不要有空值,不要有负值。不然后续会报错。可以先处理一年大气强迫数据用于实验。

ncdump -h /home/user/cesmlab/inputdata/atm/datm7/atm_forcing.datm7.GSWP3.0.5d.v1.c170516/Precip/clmforc.GSWP3.c2011.0.5x0.5.Prec.2001-06.nc

(default) [user@cesm2.2 ~]$ ncdump -h /home/user/cesmlab/inputdata/atm/datm7/atm_forcing.datm7.GSWP3.0.5d.v1.c170516/Precip/clmforc.GSWP3.c2011.0.5x0.5.Prec.2001-06.nc

netcdf clmforc.GSWP3.c2011.0.5x0.5.Prec.2001-06 {
dimensions:
        scalar = 1 ;
        lon = 720 ;
        lat = 360 ;
        time = 240 ;
variables:
        float time(time) ;
                time:units = "days since 2001-06-01 00:00:00" ;
                time:calendar = "noleap" ;
        float LONGXY(lat, lon) ;
                LONGXY:long_name = "longitude" ;
                LONGXY:units = "degrees_east" ;
                LONGXY:mode = "time-invariant" ;
        float LATIXY(lat, lon) ;
                LATIXY:long_name = "latitude" ;
                LATIXY:units = "degrees_north" ;
                LATIXY:mode = "time-invariant" ;
        float EDGEE(scalar) ;
                EDGEE:long_name = "eastern edge in atmospheric data" ;
                EDGEE:units = "degrees_east" ;
                EDGEE:mode = "time-invariant" ;
        float EDGEW(scalar) ;
                EDGEW:long_name = "western edge in atmospheric data" ;
                EDGEW:units = "degrees_east" ;
                EDGEW:mode = "time-invariant" ;
        float EDGES(scalar) ;
                EDGES:long_name = "southern edge in atmospheric data" ;
                EDGES:units = "degrees_north" ;
                EDGES:mode = "time-invariant" ;
        float EDGEN(scalar) ;
                EDGEN:long_name = "northern edge in atmospheric data" ;
                EDGEN:units = "degrees_north" ;
                EDGEN:mode = "time-invariant" ;
        float PRECTmms(time, lat, lon) ;
                PRECTmms:long_name = "PRECTmms total precipitation" ;
                PRECTmms:units = "mm H2O / sec" ; #单位 毫米每秒
                PRECTmms:mode = "time-dependent" ;
                PRECTmms:_FillValue = 1.e+36f ;
                PRECTmms:missing_value = 1.e+36f ;

// global attributes:
                :case_title = "CRUNCEP 6-Hourly Atmospheric Forcing: Precipitation" ;
}

2.操作步骤

*大气强迫数据使用方式采用默认,不需要改成DATM_MODE=‘CLM1PT’ *

create_newcase --case ~/SSP126_SP_0.125 --compset SSP126_DATM%GSWP3v1_CLM50%SP_SICE_SOCN_SROF_SGLC_SWAV --res CLM_USRDAT --run-unsupported
cd ~/SSP126_SP_QTP_0.125_0426
./xmlchange DIN_LOC_ROOT=/home/user/cesmlab
./xmlchange CLM_USRDAT_NAME=CMFD
./xmlchange ATM_DOMAIN_FILE=.....nc,LND_DOMAIN_FILE=....nc #自己制作的区域domain文件
./xmlchange STOP_N=1,STOP_OPTION=nyears #以年为单位进行
./xmlchange DATM_CLMNCEP_YR_START=2001,DATM_CLMNCEP_YR_END=2001 #大气强迫数据输入的时间
./xmlchange DATM_CLMNCEP_YR_START=2015,DATM_CLMNCEP_YR_END=2015
./xmlchange RUN_STARTDATE=2015-01-01
./case.setup

#1.修改user_nl_clm文件,按需加入自己的参数,并不是全都需要添加,按需选择,不改输出频率的话默认是逐月输出
#操作vim user_nl_clm,按i是开启insert模式进行修改,改动后esc退出insert模式,输入:wq保存退出。

fsurdat='/home/user/cesmlab/lnd/clm2/surfdata_map/......nc'
flanduse_timeseries='/home/user/cesmlab/lnd/clm2/surfdata_map/.....nc'
finidat='/home/user/cesmlab/archive/....nc'
use_init_interp = .true
hist_fincl1='TLAI'
./preview_namelists

#2.复制文件并修改user_datm.streams.....txt
#此时CaseDocs文件夹里有datm.streams.txt.CLMGSWP3v1.Precip、datm.streams.txt.CLMGSWP3v1.Solar 、datm.streams.txt.CLMGSWP3v1.Precip 三个文件,记录的是默认大气强迫数据GSWP3的情况

#将这三个文件复制到总文件夹下,名字替换成user_名字,文件需要将改user_datm.streams....txt,替换成自己大气强迫数据的情况,不用改CaseDocs里的

cp ~/SSP126_SP_0.125/CaseDocs/datm.streams.txt.CLMGSWP3v1.Precip user_datm.streams.txt.CLMGSWP3v1.Precip
cp ~/SSP126_SP_0.125/CaseDocs/datm.streams.txt.CLMGSWP3v1.Solar user_datm.streams.txt.CLMGSWP3v1.TPQW
cp ~/SSP126_SP_0.125/CaseDocs/datm.streams.txt.CLMGSWP3v1.Precip user_datm.streams.txt.CLMGSWP3v1.TPQW

改动部分如红框内所示,主要改动了路径和名称。在这要注意的是,大气强迫数据对应的domain文件要注意替换,要改成自己使用的大气强迫数据的范围。比如我使用的是全国的大气强迫数据,就要写对应全国的范围。

这个domain文件与ATM_DOMAIN_FILE不同,ATM_DOMAIN_FILE是要对应研究区域的范围,比如研究范围是北京,就要写对应北京的domain文件。

#3.修改SSP126_SP_0.125目录下的user_nl_datm文件,将CaseDocs/datm_in文件复制
#vim user_nl_datm 进行粘贴

&datm_nml
  decomp ="1d"
  factorfn = "null"
  force_prognostic_true = .false.
  iradsw = 1
  presaero = .true.
  restfilm = "undefined"
  restfils = "undefined"
  wiso_datm = .false.
/
&shr_strdata_nml
  datamode = "CLMNCEP"
  domainfile = "/home/user/cesmlab/share/domains/domain....1v2.140704.nc"#注意这个文件是自己制作的区域文件
  dtlimit = 1.5, 1.5, 1.5, 1.5, 1.5, 1.5
  fillalgo = "nn", "nn", "nn", "nn", "nn", "nn"
  fillmask = "nomask", "nomask", "nomask", "nomask", "nomask", "nomask"
  fillread = "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET"
  fillwrite = "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET"
  mapalgo = "nn", "nn", "nn", "nn", "nn", "nn"
  mapmask = "nomask", "nomask", "nomask", "nomask", "nomask", "nomask"
  mapread = "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET"
  mapwrite = "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET", "NOT_SET"
  readmode = "single", "single", "single", "single", "single", "single"
  streams = "datm.streams.txt.CLMGSWP3v1.Solar 2001 2001 2001",
      "datm.streams.txt.CLMGSWP3v1.Precip 2001 2001 2001",
      "datm.streams.txt.CLMGSWP3v1.TPQW 2001 2001 2001",
      "datm.streams.txt.presaero.SSP1-2.6 2015 2015 2101",
      "datm.streams.txt.topo.observed 1 1 1",
      "datm.streams.txt.co2tseries.SSP1-2.6 2015 2015 2500"
  taxmode = "extend", "extend", "extend", "extend", "extend", "extend"
  tintalgo = "nearest", "linear", "lower", "linear", "lower", "linear"
  vectors = "null"
/

./preview_namelists

#进行/preview_namelists可查看CaseDocs文件夹里相应的datm.streams.txt.CLMGSWP3v1.Precip、datm.streams.txt.CLMGSWP3v1.Solar 、datm.streams.txt.CLMGSWP3v1.Precip和Buildconf文件夹里datm.input_data_list文件有没有相应的更新,如果都替换成了你自己的大气强迫数据路径和名称等,就全部更改正确

./check_input_data
./case.build
./case.submit

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值