MODULE radarz_iface ! ! !DESCRIPTION: initialize variables required for radarz library ! required for direct reflectivity DA capabilities ! ! !REVISION HISTORY: ! 2019-xx-xx CAPS - init commit ! 2021-05-17 J. Park(CAPS) - radaremul renamed to radarz ! - deleted unnecessary mphyopt options ! use kinds, only: r_kind,r_single,r_double,i_kind IMPLICIT NONE SAVE PRIVATE PUBLIC :: init_mphyopt CONTAINS SUBROUTINE init_mphyopt(mype,iret) use radarz_cst, only: mphyopt use radarz_cst, only: hail_ON, graupel_ON use radarz_cst, only: nscalar use radarz_cst, only: P_qc, P_qr, P_qi, P_qs, P_qh, P_qg use radarz_cst, only: P_nc, P_nr, P_ni, P_ns, P_nh, P_ng use radarz_cst, only: P_zr, P_zi, P_zs, P_zh, P_zg use radarz_cst, only: n0rain, n0snow, n0hail, n0grpl use radarz_cst, only: rhosnow, rhohail, rhogrpl use radarz_cst, only: alpharain, alphasnow, alphagrpl, alphahail, alphaice use radarz_cst, only: rfopt, wavelen use radarz_module, only: qgh_opt, grpl_ON, hl_ON, lambda, calcConstants, get_qgh_opt IMPLICIT NONE integer(i_kind), intent(in ) :: mype integer(i_kind), intent(inout) :: iret IF (mype == 0) & WRITE(6,*) "INIT_MPHYOPT: Initializing radar emulator ... (mphyopt=",mphyopt,")" P_qc = 0; P_qr = 0; P_qi = 0; P_qs = 0; P_qh = 0; P_qg = 0 P_nc = 0; P_nr = 0; P_ni = 0; P_ns = 0; P_nh = 0; P_ng = 0 P_zr = 0; P_zi = 0; P_zs = 0; P_zh = 0; P_zg = 0 alpharain = 0.0_r_kind alphasnow = 0.0_r_kind alphagrpl = 0.0_r_kind alphahail = 0.0_r_kind alphaice = 0.0_r_kind IF ( mphyopt == 2 .OR. mphyopt == 3 .OR. mphyopt == 4 ) THEN nscalar = 5 P_qc = 1; P_qr = 2; P_qi = 3; P_qs = 4; P_qh = 5 graupel_ON = 0 hail_ON = 1 ELSE IF ( mphyopt == 5 .OR. mphyopt == 6 .OR. mphyopt == 7 ) THEN nscalar = 5 P_qc = 1; P_qr = 2; P_qi = 3; P_qs = 4; P_qg = 5 graupel_ON = 1 hail_ON = 0 ELSE IF (mphyopt == 102 .OR. mphyopt == 106) THEN ! linscheme, wsm6scheme P_qc = 1; P_qr = 2; P_qi = 3; P_qs = 4; P_qg = 5 nscalar = 5 graupel_ON = 1 hail_ON = 0 ELSE IF (mphyopt == 108) THEN ! thompson P_qc = 1; P_qr = 2; P_qi = 3; P_qs = 4; P_qg = 5 P_nr = 6; P_ni = 7 nscalar = 7 graupel_ON = 1 hail_ON = 0 END IF grpl_ON = graupel_ON hl_ON = hail_ON qgh_opt = get_qgh_opt(graupel_ON, hail_ON) ! assign default values for radarz library for TM for EnKF IF (mphyopt == 108 ) then n0rain=8.0e6_r_kind n0snow=3.0e6_r_kind n0hail=4.0e4_r_kind n0grpl=4.0e5_r_kind rhosnow=100.0_r_kind rhohail=913.0_r_kind rhogrpl=500.0_r_kind rfopt=1 wavelen=107.0_r_kind END IF lambda = wavelen call calcConstants() iret = -1 SELECT CASE (mphyopt) CASE(2,3,4) ! Lin iret = 0 CASE(5,6,7) ! WSM6 iret = 0 CASE(108) ! Thompson iret = 0 CASE DEFAULT ! not ready for dbz operator iret = -1 END SELECT END SUBROUTINE init_mphyopt END MODULE