RTTOV模式笔记:(七) 全天气地表微波比辐射反演方案
本笔记属于RTTOV辐射传输模式学习笔记专栏,包含以下文章:
© 2023-2030, Jiheng Hu. 本专栏内容禁止转载。本节将介绍RTTOV-SCATT模块内置的动态发射率反演的使用。这一部分源码中没有直接的example,但是文档和源码中已经提供了必备的接口,我们要做的就是把这些接口组合起来,实现反演流程。
反演流程的构建
流程框架
源码细节
引入必要的变量类型
fortranUSE rttov_types, ONLY : &
......
rttov_scatt_emis_retrieval_type引用必要的接口
fortraninclude "rttov_alloc_emis_ret_terms.interface"
# include "rttov_scatt_emis_terms.interface" !! 实际上在rttov_scatt.F90内部引用使用,此处不需要引用
include "rttov_scatt_emis_retrieval.interface"声明变量
fortranType(rttov_scatt_emis_retrieval_type) :: emis_retrieval_terms ! radiance terms for emissivity retrieve
INTEGER(KIND=jpim) :: err_alloc
INTEGER(KIND=jpim) :: asw
REAL(kind=jprb), ALLOCATABLE :: obs_tb (:) ! Observed TB
REAL(kind=jprb), ALLOCATABLE :: land_emis (:) ! Retrieved emissivity分配变量
fortran! --------------------------------------------------------------------------
! 3. Allocate RTTOV input and output structures
! --------------------------------------------------------------------------
nchanprof = nchannels * nprof
ALLOCATE(obs_tb(nchanprof))
ALLOCATE(land_emis(nchanprof))
obs_tb= (/122.978, 109.550, 145.061, 132.054, 168.257, 156.747, 183.278, 171.656, 239.429, 232.793, &
124.568, 111.924, 147.515, 135.568, 170.754, 160.350, 188.391, 178.397, 243.950, 239.090, &
119.652, 106.068, 136.334, 122.598, 154.660, 141.782, 164.872, 150.992, 213.784, 201.940/)
!! Allocate emis_retrieval_terms
!! @param[out] err status on exit
!! @param[in] nchanprof size of the chanprof array (total number of channels being simulated)
!! @param[in,out] emis_retrieval_terms emissivity retrieval terms structure to allocate/deallocate
!! @param[in] asw 1_jpim => allocate; 0_jpim => deallocate
Call rttov_alloc_emis_ret_terms(err_alloc, nchanprof, emis_retrieval_terms, 1_jpim)
IF (err_alloc /= errorstatus_success) THEN
WRITE(*,*) 'allocation error for emis_retrieval_terms structures'
CALL rttov_exit(errorstatus)
ENDIF调用rttov_scatt,输入可选参数emis_retrieval_terms
fortranCALL rttov_scatt ( &
errorstatus, &! out error flag
......
radiance, &! inout computed radiances
emis_retrieval_terms=emis_retrieval_terms)调用反演接口
fortran! --------------------------------------------------------------------------
! 8. Call Emssivity retrieval interface
! --------------------------------------------------------------------------
!! @param[in] chanprof channels and profiles simulated by RTTOV-SCATT
!! @param[in] coefs RTTOV coefficients structure
!! @param[in] emis_terms output radiances and corresponding BTs
!! @param[in] obs_tb observed BTs corresponding to simulated BTs
!! @param[out] land_emis output retrieved emissivities
call rttov_scatt_emis_retrieval(&
chanprof, &
coefs, &
emis_retrieval_terms, &
obs_tb, &
land_emis)输出
plaintextDO iprof = 1, nprof
joff = (iprof-1_jpim) * nchannels
WRITE(ioout,*)' '
WRITE(ioout,*)'Observed TBs:'
WRITE(ioout,444) (obs_tb(j), j = 1+joff, nchannels+joff)
WRITE(ioout,*)'Retrieved SURFACE EMISSIVITIES:'
WRITE(ioout,444) (land_emis(j), j = 1+joff, nchannels+joff)
ENDDO释放结构体
fortranCall rttov_alloc_emis_ret_terms(err_alloc, nchanprof, emis_retrieval_terms, 0_jpim)
IF (err_alloc /= errorstatus_success) THEN
WRITE(*,*) 'deallocation error for emis_retrieval_terms structures'
CALL rttov_exit(errorstatus)
ENDIF
deallocate(obs_tb)
deallocate(land_emis)
理想个例模拟
如上一章的理想模拟所诉,我们进行了三条廓线,十个通道的模拟,结果如下:
plaintext
廓线一: |
可以看出,我们将正向模拟的TB当作观测输入,成功地反演出来了surface emissivity, 这几个都是洋面样本。
敏感性
对emissivity%emis_in进行控制,检查敏感性。
fortran
!! enable self-specified MLSE |
plaintext
Profile 1 |
结果表明,初始设定的emissivity不会影响MLSE的反演。完整的输出结果:output_sensivitive_to_mlseini.dat
个例模拟
如上一章的个例,采用TELSEM2作为初始输入,考虑水凝物的RTTOV-SACTT模拟,同时嵌入本章所述的反演方案:
结果如下:
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment