爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 440|回复: 4

RTTOV权重函数绘制心得

[复制链接]

新浪微博达人勋

发表于 2024-9-15 15:20:54 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
卫星权重函数虽然可以根据公式算出来,但我发现在RTTOV的rttov/src/other/文件夹下,有一个名为rttov_calc_weighting_fn.F90的函数,所以想直接调用该函数,来计算卫星的权重函数。
【1】RTTOV的各目录
RTTOV的大部分F90函数都放在了rttov/src/main文件夹下,而接口则放在了rttov/include文件夹下。
RTTOV有自带的测试个例,放在了rttov/rttov_test/文件夹下,这个文件夹里面有很多sh脚本,只要你编译成功了RTTOV,里面的大部分sh脚本都是可以直接运行的。而这些sh脚本涉及到的代码主要放置在rttov/src/test/文件夹下,该文件夹下还包含了Makefile_examples的文件来帮助你编译exe可执行文件,我们在rttov/rttov_test/内运行的sh脚本中调用的exe可执行文件,都是通过Makefile_examples编译的,编译成功的exe可执行文件都放在了rttov/bin/文件夹下。
所以,我们可以直接基于rttov/src/test/内的代码,修改代码让它能够调用rttov_calc_weighting_fn.F90函数并输出计算的权重函数结果,再重新通过Makefile_examples编译exe可执行文件,最后在rttov/rttov_test/运行对应的sh脚本,得到我们需要的输出结果。


【2】具体操作
具体操作方面,首先选择rttov/src/test/中的一个函数进行修改,比如我选择了example_fwd.F90函数。先在申明部分添加#include "rttov_calc_weighting_fn.interface"
然后再在变量定义部分定义添加所需要计算的权重函数
REAL(KIND=jprb), ALLOCATABLE    :: weighting_fn(:,:)        ! Output weighting_fn
再为其分配内存空间
ALLOCATE (weighting_fn(nlevels-1, nchannels))
再调用rttov_calc_weighting_fn函数,来计算权重函数,并把它存储在weighting_fn变量里
    DO jch = 1, nchannels
      CALL rttov_calc_weighting_fn(errorstatus,profiles(iprof) % p, transmission%tau_levels(:,jch+joff), weighting_fn(:,jch))
    ENDDO

最后再在恰当的位置输出权重函数的值
    IF (nchannels <= 20) THEN
      DO np = 1, nprint
          WRITE(ioout,*)' '
          WRITE(ioout,*)'Level to weighting function for channels'
          WRITE(ioout,1115) (chanprof(j+joff) % chan, &
                    j = 1+(np-1)*10, MIN(np*10, nchannels))
          DO ilev = 1, nlevels-1
            WRITE(ioout,4445) ilev, weighting_fn(ilev,:)
          ENDDO
          WRITE(ioout,1115) (chanprof(j+joff) % chan, &
                    j = 1+(np-1)*10, MIN(np*10, nchannels))
      ENDDO
    ENDIF

修改完example_fwd.F90函数后,我们再重新利用make -f Makefile_examples重新编译exe可执行文件(可能需要先Makefile_examples里面的FC和LDFLAGS_ARCH等参数,让它和你使用的编译器对应)。最后再在rttov/rttov_test/里运行run_example_fwd.sh脚本,就可以自动输出各通道的权重函数了。


【3】其它
同理,我们也可以依据上面的方法,自己修改rttov/src/test/里面的函数,以满足自己的需求。


【4】参考资料
权重函数的计算公式,参考https://nwp-saf.eumetsat.int/site/forums/topic/question-for-calculating-weighting-function/http://bbs.06climate.com/forum.php?mod=viewthread&tid=103083
关于RTTOV的使用,参考http://bbs.06climate.com/forum.php?mod=viewthread&tid=89882&highlight=rttov以及RTTOV官网的手册







密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2024-9-16 08:18:18 | 显示全部楼层
感谢,学习一下
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-9-16 19:10:56 | 显示全部楼层
不错不错,非常感谢楼主分享经验哟
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-9-16 23:14:28 | 显示全部楼层
感谢!学习
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2024-11-5 17:30:09 | 显示全部楼层
感谢楼主分享,期待更多精彩内容!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表