3 &tauaerl,fac00,fac01,fac10,fac11,forfac,jp,jt,jt1,oneminus,&
4 &colh2o,colco2,coln2o,laytrop,selffac,selffrac,indself,pfrac)
39 real_b :: fac00(
jplay)
40 real_b :: fac01(
jplay)
41 real_b :: fac10(
jplay)
42 real_b :: fac11(
jplay)
43 real_b :: forfac(
jplay)
46 integer_m :: jp(
jplay)
47 integer_m :: jt(
jplay)
48 integer_m :: jt1(
jplay)
54 real_b :: colh2o(
jplay)
55 real_b :: colco2(
jplay)
56 real_b :: coln2o(
jplay)
60 real_b :: selffac(
jplay)
61 real_b :: selffrac(
jplay)
62 integer_m :: indself(
jplay)
67 integer_m :: ijs(
jplay)
70 real_b :: n2omult(
jplay)
73 integer_m :: ig, js, lay, ns
76 real_b :: colref1, colref2, currn2o, fac000, fac001,&
77 &fac010, fac011, fac100, fac101, fac110, fac111, &
78 &fp, fs, ratio, specmult, specparm, wcomb1, &
88 speccomb(lay) = colh2o(lay) +
strrat*colco2(lay)
89 specparm = colh2o(lay)/speccomb(lay)
90 specparm=min(oneminus,specparm)
91 specmult = 8._jprb*(specparm)
92 js = 1 + int(specmult)
93 fs = mod(specmult,_one_)
95 IF (fs >= 0.9_jprb)
THEN
97 fs = 10._jprb * (fs - 0.9_jprb)
103 ns = js + int(fs + _half_)
104 fp = fac01(lay) + fac11(lay)
105 ind0(lay) = ((jp(lay)-1)*5+(jt(lay)-1))*
nspa(3) + js
106 ind1(lay) = (jp(lay)*5+(jt1(lay)-1))*
nspa(3) + js
107 inds(lay) = indself(lay)
109 colref2 =
n2oref(jp(lay)+1)
111 wcomb1 = _one_/
h2oref(jp(lay))
112 wcomb2 = _one_/
h2oref(jp(lay)+1)
117 ratio = (colref1*wcomb1)+fp*((colref2*wcomb2)-(colref1*wcomb1))
118 currn2o = speccomb(lay) * ratio
119 n2omult(lay) = coln2o(lay) - currn2o
145 tau(
ngs2+ig,lay) = speccomb(lay) * &
147 & ( (1. - fs) *(fac00(lay) *
absa(ind0(lay) ,ig) + &
148 & fac10(lay) *
absa(ind0(lay)+10,ig) + &
149 & fac01(lay) *
absa(ind1(lay) ,ig) + &
150 & fac11(lay) *
absa(ind1(lay)+10,ig))+ &
151 & fs *(fac00(lay) *
absa(ind0(lay)+ 1,ig) + &
152 & fac10(lay) *
absa(ind0(lay)+11,ig) + &
153 & fac01(lay) *
absa(ind1(lay)+ 1,ig) + &
154 & fac11(lay) *
absa(ind1(lay)+11,ig))) + &
165 &selffac(lay) * (
selfref(inds(lay),ig) + &
168 &+ forfac(lay) *
forref(ig) ) &
169 &+ n2omult(lay) *
absn2oa(ig) &
176 DO lay = laytrop+1,
klev
177 speccomb(lay) = colh2o(lay) +
strrat*colco2(lay)
178 specparm = colh2o(lay)/speccomb(lay)
179 specparm=min(oneminus,specparm)
180 specmult = 4._jprb*(specparm)
181 js = 1 + int(specmult)
182 fs = mod(specmult,_one_)
183 ns = js + int(fs + _half_)
184 fp = fac01(lay) + fac11(lay)
185 ind0(lay) = ((jp(lay)-13)*5+(jt(lay)-1))*
nspb(3) + js
186 ind1(lay) = ((jp(lay)-12)*5+(jt1(lay)-1))*
nspb(3) + js
188 colref2 =
n2oref(jp(lay)+1)
190 wcomb1 = _one_/
h2oref(jp(lay))
191 wcomb2 = _one_/
h2oref(jp(lay)+1)
196 ratio = (colref1*wcomb1)+fp*((colref2*wcomb2)-(colref1*wcomb1))
197 currn2o = speccomb(lay) * ratio
198 n2omult(lay) = coln2o(lay) - currn2o
205 DO lay = laytrop+1,
klev
221 tau(
ngs2+ig,lay) = speccomb(lay) * &
223 & ( (1. - fs) *(fac00(lay) *
absb(ind0(lay) ,ig) + &
224 & fac10(lay) *
absb(ind0(lay)+5,ig) + &
225 & fac01(lay) *
absb(ind1(lay) ,ig) + &
226 & fac11(lay) *
absb(ind1(lay)+5,ig))+ &
227 & fs *(fac00(lay) *
absb(ind0(lay)+1,ig) + &
228 & fac10(lay) *
absb(ind0(lay)+6,ig) + &
229 & fac01(lay) *
absb(ind1(lay)+1,ig) + &
230 & fac11(lay) *
absb(ind1(lay)+6,ig))) &
240 &+ colh2o(lay)*forfac(lay)*
forref(ig) &
real(kind=jprb), dimension(ng3, 10) fracrefa
real(kind=jprb), dimension(ng3, 5) fracrefb
integer(kind=jpim), parameter ng3
real(kind=jprb), dimension(1175, ng3) absb
real(kind=jprb), dimension(16) absn2ob
real(kind=jprb), dimension(10, 5, 13, ng3) ka
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(5, 5, 13:59, ng3) kb
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) ng
integer(kind=jpim), dimension(16) nspa
real(kind=jprb), dimension(10) etaref
integer(kind=jpim), parameter ngs2
integer(kind=jpim), parameter jplay
real(kind=jprb), dimension(10, ng3) selfref
integer(kind=jpim), parameter jpxsec