[数据处理] FVCOM输出自定义变量

[复制链接]
第4期,和大家一起交流一下如何使FVCOM输出自定义的变量。
前几日,针对第1期“FVCOM结果在Google Earth中的可视化”(点击回顾),有网友问可否将画图使用的flooding_cell变量直接输出到FVCOM的结果NetCDF文件中。所以,今天,在国内春节假期的最后一天,我们来讨论些轻松一点的内容,插入关于FVCOM输出自定义变量的问题。
目前,无论是output文件,还是restart和nesting,FVCOM是以NetCDF文件格式输出的,这样的好处是便于对结果数据识别和后处理。比如,我们可以直接使用VisIt软件(www.52ocean.cn)快速出图,查看某变量在各时次的分布状况;或者,我们可以使用MATLAB进行数据处理,对结果数据进行分析。
我们可通过修改nml文件的NML_STARTUP和NML_NETCDF部分,来改变输出文件的设置,各个设置的具体用法,请参考FVCOM Manual。
FVCOM已尽可能的设置各个与输出相关的参数来满足用户的不同需要。然而,有时我们需要的变量仍没有在结果文件中输出,或者,我们需要的变量并没有直接在FVCOM中计算。这时,我们就需要通过修改FVCOM代码,自定义所需要的变量,计算并输出该变量到结果文件。
我们就以第1期中的淹水模型为例,我们需要的变量是flooding_cell,即某时刻网格是否被淹没,淹没为1,未淹没或非陆地网格为0,该变量应为1维变量,维长为三角形个数(nele)。flooding_cell并没有在FVCOM中计算,我们给它的定义是该三角形本是陆地点,但被淹没。我们可以通过已有变量H1和ISWETC来计算得到flooding_cell。具体分三步,即声明,计算和输出。
第一,声明。在mod_wd.F中声明flooding_cell变量为一维整型动态数组,并分配空间,赋初始值:
9a00eda810d38c54a3dfc50aeceb5a3a.png
第二,计算。根据定义,flooding_cell为1需要有两个条件:原本为陆地(H1<0.0)和该时刻被淹没(ISWETC==0)。由于计算中需要用到ISWETC,所以我们可以把flooding_cell的计算放在ISWETC的计算之后,即mod_wd.F中subroutine WET_JUDGE里。
cf49a8397a42d3f30bf6847db0f4fa59.png
第三,输出。修改都在mod_ncdio,F中的WET_DRY_FILE_OBJECT,分两部分。首先,在开始部分给该变量分配空间:
519deb2958e7ffe42214c0c8e34dd6f8.png
然后,添加该变量的具体信息(维和对应输出变量)和attribute:
d355c31ea4e4b4f1572b9ffe3de89a35.png
至此,我们完成了输出自定义变量flooding_cells的修改。重新编译之后,FVCOM就会输出该变量到NetCDF结果文件中。
$ v% P5 }* e5 _" Q: g" R6 b* c
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
宿命轮回
活跃在3 小时前
快速回复 返回顶部 返回列表