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