! History log ! 2017-05-12 Johnson, Y. Wang and X. Wang - define reflectivity opeator and its adjoint for WSM6 scheme, POC: xuguang.wang@ou.edu module setupdbz_lib public :: hx_dart,jqr_dart,jqs_dart,jqg_dart contains subroutine hx_dart(qrgesin0,qggesin0,qsgesin0,rhogesin,tempgesin,rDBZ,debugging) use kinds, only: r_kind,r_double,i_kind use obsmod, only: static_gsi_nopcp_dbz implicit none real(r_kind) :: qrgesin0,qsgesin0,qggesin0 real(r_kind) :: qrgesin,qsgesin,qggesin,rhogesin,tempgesin,rDBZ real(r_kind) :: zqr,zqg,zqs logical :: debugging real(r_kind) :: param_r,param_dry_g,param_wet_g,param_dry_s,param_wet_s real(r_kind) ::n0r,n0s,n0g,rhor,rhos,rhog,dielectric,pi qrgesin=qrgesin0 qsgesin=qsgesin0 qggesin=qggesin0 pi=3.14159_r_kind dielectric=0.224_r_kind n0r=8e6_r_kind n0s=3e6_r_kind !(2e6) !*exp(0.12*(min(273.15,tempgesin)-273.15)) !this is n0s in WSM6 paper, dif. from DART constant of 3e6 n0g=4e6_r_kind rhos=100_r_kind rhor=1000_r_kind rhog=500_r_kind !this is rhog in WSM6 paper, dif. from DART 400 param_r=(7.2e20_r_kind)/(((pi*rhor)**1.75_r_kind)*(n0r**0.75_r_kind)) param_dry_g=dielectric*(rhog/rhor)*(rhog/rhor)*(7.2e20_r_kind)/(((pi*rhog)**1.75_r_kind)*(n0g**0.75_r_kind)) param_wet_g=(7.2e20_r_kind)/((((pi*rhog)**1.75_r_kind)*(n0g**0.75_r_kind))**0.95_r_kind) param_wet_s=(7.2e20_r_kind)/(((pi*rhos)**1.75_r_kind)*(n0s**0.75_r_kind)) param_dry_s=dielectric*(rhos/rhor)*(rhos/rhor)*param_wet_s zqr=param_r*((rhogesin*qrgesin)**1.75_r_kind) if (tempgesin < 273.15_r_kind) then zqr=0_r_kind zqg=param_dry_g*((rhogesin*qggesin)**1.75_r_kind) zqs=param_dry_s*((rhogesin*qsgesin)**1.75_r_kind) else if(tempgesin < 278.15_r_kind) then zqg=param_wet_g*((rhogesin*qggesin)**1.6675_r_kind) zqs=param_wet_s*((rhogesin*qsgesin)**1.75_r_kind) else zqg=0_r_kind zqs=0_r_kind endif rDBZ=zqr+zqg+zqs if (rdBZ > 1.0e-3_r_kind) then rdBZ=10_r_kind*log10(rdBZ) else rdBZ=-30_r_kind endif if(rdBZ