今天来看下MCV模式调用物理过程的相关代码。我想改进有关于海气边界层方面的内容,因此我寻找相关的代码,发现在physics目录下有一个sfc_ocean.f的文件。
可以看见这个文件是在好多好多年前更新的了,里面内容不多,总共146行。是计算和海气表面层相关物理过程的简单程序。
变量表中给出了子程序中的参数变量:im是什么我暂时还没弄清楚,水平维度,这可能类似于cesm中的ncol.
其他变量的物理意义还是比较明显的,可以看到这个程序可以计算表面比湿,动量和热量表面交换系数,陆地热通量,政法潜热通量,感热通量,potential evaporation 潜在蒸发量?类似于蒸发量可能。
我想知道的是对应的实参数是什么, 我用grep命令找到相应的调用该子程序的程序是GFS_physics_driver.f。
grep -ir "sfc_ocean" *
我大概知道了每个虚参分别对应着哪些实参了,只是实参的后面的1,3到底是什么意思呢,很是奇怪。prskl是什么呢,为什么对应着work3?
不过这不理解也不影响我的工作,我检查我感兴趣的变量是否都在内了:
风速 wind 、 大气温度、界面皮层温度、大气比湿、这些都有,甚至还有表面层平均气压和表面气压,这样是能够用新的算法来计算通量的。
我们首先来看看原方案是如何计算的:
这一部分是模块引用和变量定义,第一个是和数据精度有关,第二个是温度计算饱和比湿的物理公式程序,第三个是物理变量的引用。
具体的计算在这里。 首先是对1到im 循环,这和cesm 从1 到ncol循环可能是一样的。
然后判断是不是开阔水面 ,如果是开阔水面则会进行下面公式的计算:
这主要是将密度,交换系数,风速组合在一起,然后再计算通量
这个代码主要就是实现整体通量法
里面有一个关键的问题是湍流交换系数都是从程序外传进来的。而表面层通量计算的关键过程就是湍流交换系数 的确定。将来可以将新的通量算法包括深度学习建立的通量算法引进。