- 积分
- 5519
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-8-12
- 最后登录
- 1970-1-1

|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
以Thomspon scheme为例:
1.首先需要在Registry/下修改Registry.EM_COMMON, 一般我是在refl_10cm后面加入一行state real ppnc_wcd ikj dyn_em 1 - hdu "ppnc_wcd" "ppnc_wcd" "kg-1s-1"
这里的ppnc_wcd指的是某个云微物理过程,具体名称可以自己命名,也可以根据想要输出的scheme里的已有的源、汇项命名。
2.进入dyn_em/修改solve_em.F, 在CALL microphysics_driver()模块中加入一行:
& ,ppnc_wcd=grid%ppnc_wcd &
3.进入phys/修改module_microphysics_driver,在microphsics_driver()模块中加入一行:
,ppnc_wcd &
记得在后续对ppnc_wcd进行属性标注:
REAL, OPTIONAL, DIMENSION( ims:ime , kms:kme, jms:jme ) , INTENT(OUT) :: ppnc_wcd
以及找到你要输出的微物理方案,比如CASE(THOMPSONAERO)中再次将想要输出的源、汇项标注:
ppnc_wcd=ppnc_wcd, &
4.最后一步是修改phys/module_mp_xx.F,也就是你想要输出源、汇项的微物理方案:
这一步比较复杂,也比较多需要根据方案自身的设置进行,需要明确的是微物理方案是将三维的首先对应值一维,然后进行单柱的计算,简要的几步是,首先要将刚才在microphysics_driver里的变量标注一下,同样以Thompson方案为例,就是在主程序中SUBROUTINE mp_gt_driver()里加入:
ppnr_wcd
进行属性说明:
REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: &
ppnc_wcd,
同时定义一个一维(即垂直维)的数组:
REAL, DIMENSION(kts:kte) :: &
ppnc_wcd1d,
在后续将三维的数据给一维:
do k = kts, kte
ppnc_wcd1d(k) = ppnc_wcd(i,k,j)
end do
由于主程序中包含有call mp_thompson(),记住将刚才定义的一维加入进去:
ppnc_wcd1d,
这一步意思就是做单柱的计算了,计算完之后会返回单柱的信息,然后最后将单柱的数据返回给三维的即可:
do k = kts, kte
ppnc_wcd(i,k,j) = ppnc_wcd1d(k)
end do
下一步就是修改mp_thompson这个子程序,找到subroutine mp_thompson()加入单柱信息:
subroutine mp_thompson ( 。。。。,ppnc_wcd1d)
对这个单柱数组进行属性说明:
REAL, DIMENSION(kts:kte) :: &
ppnc_wcd1d,
最后就是再后续方案中计算源、汇项的地方将源、汇项的数值复制给单柱即可
ppnc_wcd1d=aaa
修改好方案后,将WRF重新编译一遍,即可输出源、汇项。
温馨提示:
1.由于过程比较复杂,可以一次进行一个源、汇项的测试,等一个成功输出了再将更多的进行重复操作。
2.由于我们只是对源、汇项进行了输出,原则上是不改变里面的过程的,因此可以将原始模拟结果和加入输出项的结果进行对比,确保输出项的加入不影响模拟过程即为正确。
|
|