10. 测试forcing循环时的时间步长问题

问题:forcing是1901-1910年循环。运行1911-1920年时,发现1920-12-31日的最后一个步长(1920-12-31 23:30:00-1921——01-01 00:00:00)之后应当是1921-01-01日的第一个步长(1921-01-01 00:00:00——1921-01-01 00:30:00),发现时间戳对应不上。由于是10年循环,1921-01-01日的第一个步长(1921-01-01 00:30:00)的时间戳是1901-01-01日的第一个步长(1901-01-01 00:30:00),二者的时间差dt是负值。

尝试1:只用1901年这一年的forcing,跑1901年和1902年两年。看看1901-12-31日和1902-01-01日的时间步长如何对应?

C5_1year_forcing_1901_1902

为节约成本,先跑1901年头11个月,按月输出,保留第11月的restart文件。随后跑12月。

  1. 克隆案例
./create_clone --case  ../../../scratch/C5_1year_forcing_1901_1902/ --clone ../../../scratch/C5_1920
  1. branch分支运行
# 检查
./xmlquery NTASKS,NTHRDS,ROOTPE
60节点
vim user_nl_clm
输出频率一月./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,GET_REFCASE./xmlchange RUN_TYPE=branch
./xmlchange RUN_REFCASE=D5_nocrop_spinup
./xmlchange RUN_REFDATE=1901-01-01
./xmlchange GET_REFCASE=FALSE复制初始和重启文件# 复制,将1901-01-01-00000文件夹下的所有文件复制到run/目录下。
cp -r /BIGDATA1/sysu_syli_3/CESM2/scratch/D5_nocrop_spinup/archive/rest/1901-01-01-00000/* /BIGDATA1/sysu_syli_3/CESM2/scratch/C5_1year_forcing_1901_1902/run/    ./xmlchange CONTINUE_RUN=FALSE    # 初次运行确保CONTINUE_RUN=FALSE
./xmlchange DOUT_S=TRUE
./xmlchange JOB_WALLCLOCK_TIME=24:00:00   # 单次提交最大运行时长
./xmlchange STOP_N=11,STOP_OPTION=nmonths
./xmlchange RESUBMIT=0
  1. 修改源码

forcing的起始时间和文件路径要改。
shr_strdata_mod.F90  774行   报错才会打印dtime,dday,不影响速度
79行  不开启debug   保持0

integer(SHR_KIND_IN)  :: debug    = 0  ! local debug flag
write(logunit,*) trim(subName),' ERROR: dt limit1 ',SDAT%dtmax(n),SDAT%dtmin(n),SDAT%dtlimit(n),dtime,dday
  1. build与submit
./case.build --skip-provenance-check &> FHIST_BGC.hist20.build.log
./case.submit

  1. 12月 restart
./xmlchange CONTINUE_RUN=TRUE   # 初次运行确保CONTINUE_RUN=FALSE
./xmlchange STOP_N=1,STOP_OPTION=nmonths
./case.submit
  1. 1902年1月 (12月 restart 失败,则需开启debug查看原因)
./case.submit

结果:
此处的dt limit2 19011231 84607为什么是84607而不是84601?

7. debug 重启12月

为安全起见,重新拷贝12月的重启文件C5_1year_forcing_1901_1902/archive/rest/1901-12-01
重启一定要注意,run/目录下的rpointer文件的日期是否一致。
上次运行失败以后,一般地,rpointer.rof 和 rpointer.ice的日期会加1。

cp -r ./archive/rest/1901-12-01-00000/rpointer.* ./run/

修改源码:
shr_strdata_mod.F90  774行   报错才会打印dtime,dday,不影响速度
79行  开启debug=1

重新build和提交

./case.build --skip-provenance-check &> FHIST_BGC.hist20.build.log
./case.submit

11. 1901-1910年forcing文件的准备

  1. 将10年的输出文件按时间合并成一个文件,合并变量有time, lat, lon, area, landmask, VPD
    -v 指定变量
ncrcat -v lat,lon,time,landmask,area,VPD D5_nocrop.clm2.h1.19*.nc temp.nc# temp.nc time = UNLIMITED ; // (175200 currently)
  1. 为当前的forcing增加一个步长,用1901年的第一个步长替换。
    -d 指定维度
# 提取time维度的第0个
ncks -d time,0 -v lat,lon,time,landmask,area,VPD D5_nocrop.clm2.h1.1901-01-01-01800.nc D5_nocrop.clm2.h1.1901-01-01-01800-first-step.nc
  1. 利用MATLAB修改first-step.nc中的time_bounds字段,+3650。
    因为first-step.nc是1901-01-01的第一个步长,其时间戳是0.021(0.021*24=0.5 h),对应的是1901-01-01 的第一个步长,应该将时间戳设为1911-01-01 的第一个步长
    重命名为:D5_nocrop.clm2.h1.1911-01-01-01800-first-step.nc

夏晓圣:
陆老师,我有一个细节问题想问一下。1901-1910年共有175200个时间步长,1901年的第一个时间步长是0.021(0.021*24=0.5),含义是距离1901-01-01 00:00:00的天数。那么新增那个步长的时间戳是0.021,还是3650.021?

Chris:
3650.021

  1. 时间合并
ncrcat temp.nc D5_nocrop.clm2.h1.1911-01-01-01800-first-step.nc VPD-20year-recycle-input.nc

1901-1910年forcing文件的准备

  1. 方法一:先用nco合并NC文件,后用python处理时间问题:准备1901-1910年和1901年的原始forcing文件。抽取部分变量time, lat, lon, area, landmask, VPD,保存为新的nc文件。

从D5_nocrop_h1中准备1901年和1910年的VPD forcing文件
编写任务脚本

cd /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata
vim VPD_forcing_generate.sh
#!/bin/bash
module load nco/4.6.0-icc-14.0.2
cd /BIGDATA1/sysu_syli_3/CESM2/scratch/D5_nocrop/archive/lnd/hist
ncks -v lat,lon,time,landmask,area,VPD D5_nocrop.clm2.h1.1901-01-01-01800.nc /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata/D5_nocrop_1901_forcing.nc
ncrcat -v lat,lon,time,landmask,area,VPD D5_nocrop.clm2.h1.19*.nc /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata/D5_nocrop_1901_1910_forcing.nc

提交任务脚本

# 修改权限
chmod 750 ./VPD_forcing_generate.sh
# 提交任务
yhbatch -N 1 -p bigdata ./VPD_forcing_generate.sh

保存备份

cp ./D5_nocrop_1901_1910_forcing.nc D5_nocrop_1901_1910_forcing_copy.nc
cp ./D5_nocrop_1901_forcing.nc  D5_nocrop_1901_forcing_copy.nc

改名字

mv ./D5_nocrop_1901_1910_forcing.nc VPD_1901_1910_forcing.nc
mv ./D5_nocrop_1901_forcing.nc  VPD_1901_forcing.nc

用python将VPD forcing文件中的1910年的最后一个时刻挪到第一个步长,并修改time为1900-12-31 11:30 -----1901-01-01 00:00。保证第一个时间步长是0时刻

python 脚本:

/BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata/tianhe_CESM_VPD_1901_1910_forcing.py
/BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata/tianhe_CESM_VPD_1901_forcing.py

提交python脚本

vim tianhe_CESM_VPD_1901_1910_forcing.sh#!/bin/bash
cd /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata
python /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata/tianhe_CESM_VPD_1901_1910_forcing.py
# python /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata/tianhe_CESM_VPD_1901_forcing.pychmod 750 ./tianhe_CESM_VPD_1901_1910_forcing.sh
yhbatch -N 1 -p bigdata ./tianhe_CESM_VPD_1901_1910_forcing.sh
  1. 另一种方法:10年的NC数组在numpy中过于庞大,尽可能用nco处理

先将1910年最后一天的最后一个时刻挪到第一个步长,修改time时刻为1900-12-31 23:00 1901-01-01 00:00
将最后一年的nc划分为两个部分,最后一个时刻和其他时刻

module load nco/4.6.0-icc-14.0.2
cd /BIGDATA1/sysu_syli_3/CESM2/scratch/D5_nocrop/archive/lnd/histncks -d time,-1 -v lat,lon,time,landmask,area,VPD D5_nocrop.clm2.h1.1910-01-01-01800.nc ./D5_nocrop_1910_laststep.nc# 检查
ncks -d time,0 -v time ./D5_nocrop_1910_laststep.nc
time 7300  正确

python修改D5_nocrop_1910_laststep.nc时刻

python /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata/tianhe_CESM_VPD_1910_laststep_forcing.py
#检查
ncks -d time,0 -v time ./D5_nocrop_1910_laststep.nc
time 3650  正确

提取1910年除了最后一个时刻的其它时刻数据。
将1901-1909年按时间首尾拼接,提取6个变量
最后将1910年最后一个时刻+1901-1909年+1910年除了最后一个时刻按时间首尾拼接

cd /BIGDATA1/sysu_syli_3/CESM2/CESM_VPD/forcingdata
vim VPD_nco_1901-1910_forcing_generate.sh#!/bin/bash
module load nco/4.6.0-icc-14.0.2
cd /BIGDATA1/sysu_syli_3/CESM2/scratch/D5_nocrop/archive/lnd/histncks -d time,0,17518 -v lat,lon,time,landmask,area,VPD D5_nocrop.clm2.h1.1910-01-01-01800.nc ./D5_nocrop_1910_exceptlaststep.ncncrcat -v lat,lon,time,landmask,area,VPD D5_nocrop.clm2.h1.190[123456789]*.nc ./D5_nocrop_1901_1909_forcing.ncncrcat -v lat,lon,time,landmask,area,VPD ./D5_nocrop_1910_laststep.nc ./D5_nocrop_1901_1909_forcing.nc ./D5_nocrop_1910_exceptlaststep.nc ./VPD_1901_1910_forcing.nc# 修改权限
chmod 750 ./VPD_nco_1901-1910_forcing_generate.sh
# 提交任务
yhbatch -N 1 -p bigdata ./VPD_nco_1901-1910_forcing_generate.sh# 检查
ncks -d time,0,2 -v time -H ./VPD_1901_1910_forcing.nc
ncks -d time,-1 -v time -H ./VPD_1901_1910_forcing.nc
time[0]=3650.0
time[175199]=7299.98

陆老师关于VPD forcing文件10年循环不匹配问题的回答

我把vpd强迫场的时间整体减了半小时,就可以跑了
第一个时间步长需要是0时刻的,所以你可能需要把最后一天的12点挪到第一个步长,然后再修改time的数值。

VPD-Forcing10年循环时间步长匹配问题相关推荐

  1. FHIST_BGC方案

    文章目录 1. 任务: 2. 默认实验 2.1 预热11年:1891-1901 D5_nocrop_spinup 2.2 默认实验生成VPD forcing文件:1901-1910 D5_nocrop ...

  2. (转)字符串匹配算法总结

    转自:http://blog.csdn.net/zdl1016/archive/2009/10/11/4654061.aspx 我想说一句"我日,我讨厌KMP!". KMP虽然经典 ...

  3. sunday java_Sunday算法:最快的字符串匹配算法

    之前被KMP的next数组搞的头昏脑胀说不上也是比较烦人的,今天看到还有这么有趣而且高效的算法(比KMP还快),看来有必要做一点笔记了 Sunday算法是Daniel M.Sunday于1990年提出 ...

  4. Sunday算法模板

    Sunday是一个线性字符串模式匹配算法.算法的概念如下: Sunday算法是Daniel M.Sunday于1990年提出的一种字符串模式匹配算法.其核心思想是:在匹配过程中,模式串并不被要求一定要 ...

  5. 字符串匹配算法总结(转)

    转自:http://blog.csdn.net/zdl1016/archive/2009/10/11/4654061.aspx 我想说一句"我日,我讨厌KMP!". KMP虽然经典 ...

  6. CMU-MOSEI数据集解读

    Multimodal Language Analysis in the Wild:CMU-MOSEI Dataset and Interpretable Dynamic Fusion Graph 作者 ...

  7. sunday算法简介

    sunday算法的概念如下: Sunday算法是Daniel M.Sunday于1990年提出的一种比BM算法搜索速度更快的算法.其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还 ...

  8. RSD高程产品(DEM/DSM)的几个精度问题

    一.几个影响DEM质量的参数 使用RSD制作的高分7号和资源3号DEM数据产品精度在<高分7(GF7)卫星数据制作DEM>有简单介绍.见图1,其中有几个重要参数这里讨论一下. 图1 RSD ...

  9. sunday算法特征码_sunday 算法

    sunday 算法 编辑 锁定 Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配.其核心思想是:在匹配过程中,模式串发现不匹配时,算法能跳过尽可能多的字符以进行下一步的 ...

最新文章

  1. Redis初学:7(Set类型)
  2. c++,不能声明为虚函数的函数
  3. jmeter用户自定义变量的实际使用
  4. solr管理界面详解
  5. android指定sqlite路径_Android:自定义Sqlite数据库路径
  6. 可能用得上的jquery 插件
  7. SQL Server MYSQL 对外键建立索引的必要性
  8. VsVim - Shortcut Key (快捷键)
  9. Stacer ---- Linux系统优化和监测工具
  10. 申领电子驾照提示证件照不标准
  11. 河北科怡档案管理系统连接服务器,档案信息管理系统web端使用说明.docx
  12. word里画的流程图怎么全选_word画流程图 Word中绘制流程图的正确姿势,这招大多数人不知道...
  13. win7右键菜单管理_电脑鼠标右键管理工具下载 Windows鼠标右键增强管理软件 v1.0 绿色单文件免费版 下载...
  14. 关于uni-app中SegmentedControl 分段器不显示的问题
  15. Pyinstaller打包exe附带图片的方法
  16. 【1034】计算三角形面积
  17. 示波器介绍和使用方法介绍-安泰测试
  18. 2015-年校内选拔-蓝桥杯C-(A组)赛题-勾股定理
  19. 部署tomcat、nginx整合tomcat、tomcat+memcached集群
  20. General Test of SAP MM Knowledge

热门文章

  1. 【很早之前的作品】2DRPG小游戏
  2. 利用PreLoader实现一个平视显示(HUD)效果(可以运用到加载等待效果),并进行简单的讲解
  3. 西瓜书第五章笔记及答案——神经网络
  4. 互联网+、工业4.0和人工智能,主要的区别是什么?
  5. 228-非对称加密之RSA
  6. 打造Latex私有云服务
  7. IntelliJ IDEA生成jar包运行报Error:A JNI error has occurred,please check your installation and try again
  8. socket通讯工具类
  9. FA铜线称重软件(铜材包装称重磅称软件)
  10. 全能程序员系列(十)--开发人员写不好文档?--Word篇