CESM模式运行过程中如果想要更改CAM的输出频率或者输出的变量场,单纯的restart是不行的,因为ug上说了,restart的话,pop和ice model会再次读取namelist,但是atm模块不理的,ug上给了一个巨坑爹的解决办法,先给case换个名字,再建个case做branch run。这不是扯淡么。
不信邪,试了下这个办法是可以的,前提是之前run的时候一定要把restart文件记录下来。
该env_run.xml几个变量,把run的类型改成branch,时间点指定到restart file上,改rpointer,改rtm的bug,其实跟branch run的方式一样,只不过不用重新建立case而已。
当然不要忘了改user_nl_xxx
done!
今天下午画CAM5 Heat试验的图,发现不能通过显著性检验,非常令人费解。毕竟已经重复跑过多遍了,再次重来,而且还是时空代价这么高的CAM5,终归让人沮丧。检查强迫输入文件没问题,fortran源代码中inject的读写函数也没问题,想到最初检查03-09年的数据通过显著性是没有问题的,于是检查10年之后的输出……完全不能通过。
返回查找log文件,发现25日那天我为了增快运行速度,更改pe_layers之后rebuild重启了一次,貌似rebuild过程中完全无视了我SourceMods中的内容!restart之后的结果转的其实是control,完全没有inject heating!简直无语了,为什么会这样。现在只能重新编译,在10年处restart试试看了。非常郁闷。
突然想到couple的试验还没有检查,暗暗祈祷画了个响应场,傻眼了,发现all value=0,以为脚本出错,查错时发现最不愿看到的事情还是发生了,所有的branch run的结果和原始的control结果一模一样……OMG!又不认SourceMods!实在是非常不能够理解。测试在修改的代码里加入错误,运行build程序时确乎是能够读到错误的,说明是可以读到SourceMods的,非常的奇怪,莫非与cesm_setup被clean后或者第一次build的时候是不去读SourceMods的?为了做测试,更改了pe layers,clean了setup,在代码里故意注入iulog文件句柄输出,重新build。
#Up to 20141029#
今天来查看结果,还是不行。不知道为什么,即便编译的时候会去检查Sourcemods的错误以及后来测试加入iulog也是可以输出的,但就是不会去执行。
今天中午回来索性直接查个遍。calday过1直接log输出heatf的所有数据。编译成功运行,查看输出——全部都是0!这种情况最大的可能当然是没有读取heatf的强迫文件。分明记得heatf的强迫在physics initial这个subroutine里呀,难道restart的时候就不会去做initial么?向上翻了翻代码,查了下restart的关键词,发现惊天地泣鬼神的三行语句:
750 if (nsrest .eq. 0) then 751 call phys_inidat(cam_out, pbuf2d) 752 end if
反查了下nsrest是什么,在control目录下,cam_control_mod这个module写的那叫一个清楚啊
11 integer :: nsrest ! run type flag (0=initial, 1=restart-continuation, 3=restart-branch.)
而我那可怜的读取外强迫文件的语句,被我扔在了phys_inidat这个subroutine下读取,OMG!原来你丫的inidat只在startup的case下采去读,我restart不出问题才怪,物理包真正的initial在phys_init这个soubroutine里!找到这个问题,重新编译测试,没想到提交任务的时候c73节点down掉了,真是那个叫什么来着,屋漏偏逢连阴雨,哪壶不开提哪壶么……
好在找到问题了,couple的问题也是一样的,当然也能迎刃而解。经测试,确实是这个问题造成的。
#Up to 20141102#
spin-up了200年,看了下TS的变化,其实三十年就已经基本平衡了。150年以后的部分可以当cp_con来用肯定没问题。因为晓明姐需要地表比湿变量,所以打算从150年开始跑个restart。奇葩的是,改了restart文件到150年,跑得非常之慢,同样配置,之前12分钟左右出结果,现在要三十分钟。跑了一两年断掉了,出错
forrtl: severe (121): Cannot access current working directory for unit 65 (UNKNOWN)
某个未知文件找不到,莫名其妙。重新提交任务还是一样的错误。索性依葫芦画瓢来个branch run。提交上去貌似没问题,但是同样运行非常慢,也运行了两年挂掉了。提示错误一致,发生位置貌似在restart相关的源代码处。莫非生成restart文件的问题,断掉每年生成一个restart文件,并且不再用branchrun,开CONTINUE RUN,貌似现在可以跑。
#Up to 20141027#
这几天发现这类错误非常随机,估计是IO问题造成,也有可能是NetCDF版本的问题(ug中提到的bug)。回来可以测试下更高版本的NetCDF。
#Up to 20141102#