3 & p_tauaerl,p_fac00,p_fac01,p_fac10,p_fac11,p_forfac,k_jp,k_jt,k_jt1,p_oneminus,&
4 & p_colh2o,p_colco2,p_coln2o,k_laytrop,p_selffac,p_selffrac,k_indself,pfrac)
31 INTEGER(KIND=JPIM),
INTENT(IN) :: KLEV
32 REAL(KIND=JPRB) ,
INTENT(OUT) :: P_TAU(
jpgpt,
jplay)
33 REAL(KIND=JPRB) ,
INTENT(IN) :: P_TAUAERL(
jplay,
jpband)
34 REAL(KIND=JPRB) ,
INTENT(IN) :: P_FAC00(
jplay)
35 REAL(KIND=JPRB) ,
INTENT(IN) :: P_FAC01(
jplay)
36 REAL(KIND=JPRB) ,
INTENT(IN) :: P_FAC10(
jplay)
37 REAL(KIND=JPRB) ,
INTENT(IN) :: P_FAC11(
jplay)
38 REAL(KIND=JPRB) ,
INTENT(IN) :: P_FORFAC(
jplay)
39 INTEGER(KIND=JPIM),
INTENT(IN) :: K_JP(
jplay)
40 INTEGER(KIND=JPIM),
INTENT(IN) :: K_JT(
jplay)
41 INTEGER(KIND=JPIM),
INTENT(IN) :: K_JT1(
jplay)
42 REAL(KIND=JPRB) ,
INTENT(IN) :: P_ONEMINUS
43 REAL(KIND=JPRB) ,
INTENT(IN) :: P_COLH2O(
jplay)
44 REAL(KIND=JPRB) ,
INTENT(IN) :: P_COLCO2(
jplay)
45 REAL(KIND=JPRB) ,
INTENT(IN) :: P_COLN2O(
jplay)
46 INTEGER(KIND=JPIM),
INTENT(IN) :: K_LAYTROP
47 REAL(KIND=JPRB) ,
INTENT(IN) :: P_SELFFAC(
jplay)
48 REAL(KIND=JPRB) ,
INTENT(IN) :: P_SELFFRAC(
jplay)
49 INTEGER(KIND=JPIM),
INTENT(IN) :: K_INDSELF(
jplay)
50 REAL(KIND=JPRB) ,
INTENT(OUT) :: PFRAC(
jpgpt,
jplay)
58 INTEGER(KIND=JPIM) :: IJS(
jplay)
59 REAL(KIND=JPRB) :: ZFS(
jplay),Z_SPECCOMB(
jplay)
61 REAL(KIND=JPRB) :: Z_N2OMULT(
jplay)
63 INTEGER(KIND=JPIM) :: IG, JS, I_LAY, I_NS
65 REAL(KIND=JPRB) :: Z_COLREF1, Z_COLREF2, Z_CURRN2O, Z_FAC000, Z_FAC001,&
66 & Z_FAC010, Z_FAC011, Z_FAC100, Z_FAC101, Z_FAC110, Z_FAC111, &
67 & Z_FP, Z_FS, Z_RATIO, Z_SPECMULT, Z_SPECPARM, Z_WCOMB1, &
69 REAL(KIND=JPRB) :: ZHOOK_HANDLE
78 DO i_lay = 1, k_laytrop
79 z_speccomb(i_lay) = p_colh2o(i_lay) +
strrat*p_colco2(i_lay)
80 z_specparm = p_colh2o(i_lay)/z_speccomb(i_lay)
81 z_specparm=min(p_oneminus,z_specparm)
82 z_specmult = 8._jprb*(z_specparm)
83 js = 1 + int(z_specmult)
84 z_fs = mod(z_specmult,1.0_jprb)
86 IF (z_fs >= 0.9_jprb)
THEN
88 z_fs = 10._jprb * (z_fs - 0.9_jprb)
94 i_ns = js + int(z_fs + 0.5_jprb)
95 z_fp = p_fac01(i_lay) + p_fac11(i_lay)
96 ind0(i_lay) = ((k_jp(i_lay)-1)*5+(k_jt(i_lay)-1))*
nspa(3) + js
97 ind1(i_lay) = (k_jp(i_lay)*5+(k_jt1(i_lay)-1))*
nspa(3) + js
98 inds(i_lay) = k_indself(i_lay)
99 z_colref1 =
n2oref(k_jp(i_lay))
100 z_colref2 =
n2oref(k_jp(i_lay)+1)
102 z_wcomb1 = 1.0_jprb/
h2oref(k_jp(i_lay))
103 z_wcomb2 = 1.0_jprb/
h2oref(k_jp(i_lay)+1)
108 z_ratio = (z_colref1*z_wcomb1)+z_fp*((z_colref2*z_wcomb2)-(z_colref1*z_wcomb1))
109 z_currn2o = z_speccomb(i_lay) * z_ratio
110 z_n2omult(i_lay) = p_coln2o(i_lay) - z_currn2o
119 DO i_lay = 1, k_laytrop
136 p_tau(
ngs2+ig,i_lay) = z_speccomb(i_lay) * &
138 & ( (1. - z_fs) *(p_fac00(i_lay) *
absa(ind0(i_lay) ,ig) + &
139 & p_fac10(i_lay) *
absa(ind0(i_lay)+10,ig) + &
140 & p_fac01(i_lay) *
absa(ind1(i_lay) ,ig) + &
141 & p_fac11(i_lay) *
absa(ind1(i_lay)+10,ig))+ &
142 & z_fs *(p_fac00(i_lay) *
absa(ind0(i_lay)+ 1,ig) + &
143 & p_fac10(i_lay) *
absa(ind0(i_lay)+11,ig) + &
144 & p_fac01(i_lay) *
absa(ind1(i_lay)+ 1,ig) + &
145 & p_fac11(i_lay) *
absa(ind1(i_lay)+11,ig))) + &
155 & p_colh2o(i_lay) * &
156 & p_selffac(i_lay) * (
selfref(inds(i_lay),ig) + &
157 & p_selffrac(i_lay) *&
159 & + p_forfac(i_lay) *
forref(ig) ) &
160 & + z_n2omult(i_lay) *
absn2oa(ig) &
161 & + p_tauaerl(i_lay,3)
167 DO i_lay = k_laytrop+1, klev
168 z_speccomb(i_lay) = p_colh2o(i_lay) +
strrat*p_colco2(i_lay)
169 z_specparm = p_colh2o(i_lay)/z_speccomb(i_lay)
170 z_specparm=min(p_oneminus,z_specparm)
171 z_specmult = 4._jprb*(z_specparm)
172 js = 1 + int(z_specmult)
173 z_fs = mod(z_specmult,1.0_jprb)
174 i_ns = js + int(z_fs + 0.5_jprb)
175 z_fp = p_fac01(i_lay) + p_fac11(i_lay)
176 ind0(i_lay) = ((k_jp(i_lay)-13)*5+(k_jt(i_lay)-1))*
nspb(3) + js
177 ind1(i_lay) = ((k_jp(i_lay)-12)*5+(k_jt1(i_lay)-1))*
nspb(3) + js
178 z_colref1 =
n2oref(k_jp(i_lay))
179 z_colref2 =
n2oref(k_jp(i_lay)+1)
181 z_wcomb1 = 1.0_jprb/
h2oref(k_jp(i_lay))
182 z_wcomb2 = 1.0_jprb/
h2oref(k_jp(i_lay)+1)
187 z_ratio = (z_colref1*z_wcomb1)+z_fp*((z_colref2*z_wcomb2)-(z_colref1*z_wcomb1))
188 z_currn2o = z_speccomb(i_lay) * z_ratio
189 z_n2omult(i_lay) = p_coln2o(i_lay) - z_currn2o
196 DO i_lay = k_laytrop+1, klev
212 p_tau(
ngs2+ig,i_lay) = z_speccomb(i_lay) * &
214 & ( (1. - z_fs) *(p_fac00(i_lay) *
absb(ind0(i_lay) ,ig) + &
215 & p_fac10(i_lay) *
absb(ind0(i_lay)+5,ig) + &
216 & p_fac01(i_lay) *
absb(ind1(i_lay) ,ig) + &
217 & p_fac11(i_lay) *
absb(ind1(i_lay)+5,ig))+ &
218 & z_fs *(p_fac00(i_lay) *
absb(ind0(i_lay)+1,ig) + &
219 & p_fac10(i_lay) *
absb(ind0(i_lay)+6,ig) + &
220 & p_fac01(i_lay) *
absb(ind1(i_lay)+1,ig) + &
221 & p_fac11(i_lay) *
absb(ind1(i_lay)+6,ig))) &
231 & + p_colh2o(i_lay)*p_forfac(i_lay)*
forref(ig) &
232 & + z_n2omult(i_lay) *
absn2ob(ig)&
233 & + p_tauaerl(i_lay,3)
real(kind=jprb), dimension(ng3, 10) fracrefa
real(kind=jprb), dimension(ng3, 5) fracrefb
real(kind=jprb), dimension(1175, ng3) absb
integer(kind=jpim), parameter ng3
real(kind=jprb), dimension(16) absn2ob
integer(kind=jpim), parameter jpgpt
real(kind=jprb), dimension(16) forref
real(kind=jprb), dimension(650, ng3) absa
subroutine rrtm_taumol3(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, P_FORFAC, K_JP, K_JT, K_JT1, P_ONEMINUS, P_COLH2O, P_COLCO2, P_COLN2O, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
integer(kind=jpim), parameter jpband
real(kind=jprb), dimension(59) h2oref
real(kind=jprb), dimension(59) co2ref
real(kind=jprb), dimension(59) n2oref
real(kind=jprb), dimension(16) absn2oa
integer(kind=jpim), dimension(16) nspb
integer(kind=jpim), dimension(16) nspa
real(kind=jprb), dimension(10) etaref
integer(kind=jpim), parameter ngs2
integer(kind=jpim), parameter jplay
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
real(kind=jprb), dimension(10, ng3) selfref