2 & p_fac00,p_fac01,p_fac10,p_fac11,p_forfac,k_jp,k_jt,k_jt1,&
3 & p_colh2o,p_colco2,p_colo3,p_coln2o,p_colch4,p_colo2,p_co2mult,&
4 & k_laytrop,k_layswtch,k_laylow,pavel,p_tavel,p_selffac,p_selffrac,k_indself)
21 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
22 REAL(KIND=JPRB) ,
INTENT(IN) :: P_COLDRY(
jplay)
24 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_FAC00(
jplay)
25 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_FAC01(
jplay)
26 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_FAC10(
jplay)
27 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_FAC11(
jplay)
28 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_FORFAC(
jplay)
29 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_JP(
jplay)
30 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_JT(
jplay)
31 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_JT1(
jplay)
32 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_COLH2O(
jplay)
33 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_COLCO2(
jplay)
34 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_COLO3(
jplay)
35 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_COLN2O(
jplay)
36 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_COLCH4(
jplay)
37 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_COLO2(
jplay)
38 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_CO2MULT(
jplay)
39 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_LAYTROP
40 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_LAYSWTCH
41 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_LAYLOW
42 REAL(KIND=JPRB) ,
INTENT(IN) :: PAVEL(
jplay)
43 REAL(KIND=JPRB) ,
INTENT(IN) :: P_TAVEL(
jplay)
44 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_SELFFAC(
jplay)
45 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_SELFFRAC(
jplay)
46 INTEGER(KIND=JPIM),
INTENT(OUT) :: K_INDSELF(
jplay)
52 INTEGER(KIND=JPIM) :: JP1, I_LAY
54 REAL(KIND=JPRB) :: Z_CO2REG, Z_COMPFP, Z_FACTOR, Z_FP, Z_FT, Z_FT1, Z_PLOG, Z_SCALEFAC, Z_STPFAC, Z_WATER
55 REAL(KIND=JPRB) :: ZHOOK_HANDLE
59 IF (
lhook)
CALL dr_hook(
'RRTM_SETCOEF_140GP',0,zhook_handle)
60 z_stpfac = 296._jprb/1013._jprb
70 z_plog = log(pavel(i_lay))
71 k_jp(i_lay) = int(36._jprb - 5*(z_plog+0.04_jprb))
72 IF (k_jp(i_lay) < 1)
THEN
74 ELSEIF (k_jp(i_lay) > 58)
THEN
78 z_fp = 5._jprb * (
preflog(k_jp(i_lay)) - z_plog)
88 k_jt(i_lay) = int(3._jprb + (p_tavel(i_lay)-
tref(k_jp(i_lay)))/15._jprb)
89 IF (k_jt(i_lay) < 1)
THEN
91 ELSEIF (k_jt(i_lay) > 4)
THEN
94 z_ft = ((p_tavel(i_lay)-
tref(k_jp(i_lay)))/15._jprb) -
REAL(k_jt(i_lay)-3)
95 k_jt1(i_lay) = int(3._jprb + (p_tavel(i_lay)-
tref(jp1))/15._jprb)
96 IF (k_jt1(i_lay) < 1)
THEN
98 ELSEIF (k_jt1(i_lay) > 4)
THEN
101 z_ft1 = ((p_tavel(i_lay)-
tref(jp1))/15._jprb) -
REAL(k_jt1(i_lay)-3)
103 z_water = p_wkl(1,i_lay)/p_coldry(i_lay)
104 z_scalefac = pavel(i_lay) * z_stpfac / p_tavel(i_lay)
110 IF (z_plog > 4.56_jprb)
THEN
111 k_laytrop = k_laytrop + 1
113 IF (z_plog >= 5.76_jprb) k_layswtch = k_layswtch + 1
114 IF (z_plog >= 6.62_jprb) k_laylow = k_laylow + 1
116 p_forfac(i_lay) = z_scalefac / (1.0_jprb+z_water)
121 p_selffac(i_lay) = z_water * p_forfac(i_lay)
122 z_factor = (p_tavel(i_lay)-188.0_jprb)/7.2_jprb
123 k_indself(i_lay) = min(9, max(1, int(z_factor)-7))
124 p_selffrac(i_lay) = z_factor -
REAL(K_INDSELF(I_LAY) + 7)
127 p_colh2o(i_lay) = 1.e-20_jprb * p_wkl(1,i_lay)
128 p_colco2(i_lay) = 1.e-20_jprb * p_wkl(2,i_lay)
129 p_colo3(i_lay) = 1.e-20_jprb * p_wkl(3,i_lay)
130 p_coln2o(i_lay) = 1.e-20_jprb * p_wkl(4,i_lay)
131 p_colch4(i_lay) = 1.e-20_jprb * p_wkl(6,i_lay)
132 p_colo2(i_lay) = 1.e-20_jprb * p_wkl(7,i_lay)
133 IF (p_colco2(i_lay) == 0.0_jprb) p_colco2(i_lay) = 1.e-32_jprb * p_coldry(i_lay)
134 IF (p_coln2o(i_lay) == 0.0_jprb) p_coln2o(i_lay) = 1.e-32_jprb * p_coldry(i_lay)
135 IF (p_colch4(i_lay) == 0.0_jprb) p_colch4(i_lay) = 1.e-32_jprb * p_coldry(i_lay)
137 z_co2reg = 3.55e-24_jprb * p_coldry(i_lay)
138 p_co2mult(i_lay)= (p_colco2(i_lay) - z_co2reg) *&
139 & 272.63_jprb*exp(-1919.4_jprb/p_tavel(i_lay))/(8.7604e-4_jprb*p_tavel(i_lay))
147 p_forfac(i_lay) = z_scalefac / (1.0_jprb+z_water)
149 p_colh2o(i_lay) = 1.e-20_jprb * p_wkl(1,i_lay)
150 p_colco2(i_lay) = 1.e-20_jprb * p_wkl(2,i_lay)
151 p_colo3(i_lay) = 1.e-20_jprb * p_wkl(3,i_lay)
152 p_coln2o(i_lay) = 1.e-20_jprb * p_wkl(4,i_lay)
153 p_colch4(i_lay) = 1.e-20_jprb * p_wkl(6,i_lay)
154 p_colo2(i_lay) = 1.e-20_jprb * p_wkl(7,i_lay)
155 IF (p_colco2(i_lay) == 0.0_jprb) p_colco2(i_lay) = 1.e-32_jprb * p_coldry(i_lay)
156 IF (p_coln2o(i_lay) == 0.0_jprb) p_coln2o(i_lay) = 1.e-32_jprb * p_coldry(i_lay)
157 IF (p_colch4(i_lay) == 0.0_jprb) p_colch4(i_lay) = 1.e-32_jprb * p_coldry(i_lay)
158 z_co2reg = 3.55e-24_jprb * p_coldry(i_lay)
159 p_co2mult(i_lay)= (p_colco2(i_lay) - z_co2reg) *&
160 & 272.63_jprb*exp(-1919.4_jprb/p_tavel(i_lay))/(8.7604e-4_jprb*p_tavel(i_lay))
172 z_compfp = 1.0_jprb - z_fp
173 p_fac10(i_lay) = z_compfp * z_ft
174 p_fac00(i_lay) = z_compfp * (1.0_jprb - z_ft)
175 p_fac11(i_lay) = z_fp * z_ft1
176 p_fac01(i_lay) = z_fp * (1.0_jprb - z_ft1)
182 IF (k_laylow == 0) k_laylow=1
184 IF (
lhook)
CALL dr_hook(
'RRTM_SETCOEF_140GP',1,zhook_handle)
subroutine rrtm_setcoef_140gp(KLEV, P_COLDRY, P_WKL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, P_FORFAC, K_JP, K_JT, K_JT1, P_COLH2O, P_COLCO2, P_COLO3, P_COLN2O, P_COLCH4, P_COLO2, P_CO2MULT, K_LAYTROP, K_LAYSWTCH, K_LAYLOW, PAVEL, P_TAVEL, P_SELFFAC, P_SELFFRAC, K_INDSELF)
real(kind=jprb), dimension(59) tref
integer(kind=jpim), parameter jpinpx
real(kind=jprb), dimension(59) preflog
integer(kind=jpim), parameter jplay
subroutine dr_hook(CDNAME, KSWITCH, PKEY)