目录
2.利用pbuf_add_field()函数上传想要输出的变量
3.在cam_diagnostics.F90 中添加和下载和输出
整理一下怎么在cesm 中添加输出变量。
以我添加的边界层高度为例
1.首先要定义变量和它的index然后计算这个变量
这个变量叫pbl_h,当然这个变量需要之前在文件中定义
pbl_h
pbl_h_idx
2.利用pbuf_add_field()函数上传想要输出的变量
然后需要熟悉三个函数
pbuf_get_index()
通过场变量来找index
pbuf_add_field()
添加场变量和对应的index,作为一个pbuf对象,方便后面调用
pbuf_get_field()
通过对应的index 获得场变量
这几个函数是方便变量之间传递的
在我计算的代码文件中我会使用pbuf_add_field() 上传计算出来的场变量
然后在cam_diagnostics.f90 中再使用pbuf_get_field() 获得场变量
3.在cam_diagnostics.F90 中添加和下载和输出
需要熟悉两个函数
addfld()
这个一般只需要在初始化文件中添加
比如在cam_diagnostics.f90中
outfld()
这个大致就是把这个变量输出到历史文件中。
4.在user_nl_cam中管理一下输出变量的输出形式
这里面可以输出到哪个文件,频率,形式,每个文件放多少时间层等等。这个就不多说了。网上有详细说明
附录
如果用图来表示的话,我猜是这样的。
附相关代码的截图
vertical_diffusion.f90: