LMDZ
rrtm_taumol14.F90
Go to the documentation of this file.
1 !******************************************************************************
2 SUBROUTINE rrtm_taumol14 (KLEV,TAU,&
3  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
4  &colco2,laytrop,selffac,selffrac,indself,pfrac)
5 
6 ! BAND 14: 2250-2380 cm-1 (low - CO2; high - CO2)
7 
8 ! Modifications
9 !
10 ! D Salmond 1999-07-14 speed-up
11 
12 
13 #include "tsmbkind.h"
14 
15 USE parrrtm , ONLY : jplay ,jpband ,jpgpt ,jpxsec , ngs13
16 USE yoerrtwn , ONLY : ng ,nspa ,nspb
17 USE yoerrta14, ONLY : ng14 ,absa ,absb ,fracrefa, fracrefb,&
18  &ka , kb ,selfref
19 
20 IMPLICIT NONE
21 
22 ! Output
23 real_b :: tau(jpgpt,jplay)
24 
25 ! DUMMY INTEGER SCALARS
26 integer_m :: klev
27 
28 !- from AER
29 real_b :: tauaerl(jplay,jpband)
30 
31 !- from INTFAC
32 real_b :: fac00(jplay)
33 real_b :: fac01(jplay)
34 real_b :: fac10(jplay)
35 real_b :: fac11(jplay)
36 
37 !- from INTIND
38 integer_m :: jp(jplay)
39 integer_m :: jt(jplay)
40 integer_m :: jt1(jplay)
41 
42 !- from PROFDATA
43 real_b :: colco2(jplay)
44 integer_m :: laytrop
45 
46 !- from SELF
47 real_b :: selffac(jplay)
48 real_b :: selffrac(jplay)
49 integer_m :: indself(jplay)
50 
51 !- from SP
52 real_b :: pfrac(jpgpt,jplay)
53 
54 
55 ! LOCAL INTEGER SCALARS
56 integer_m :: ig, ind0, ind1, inds, lay
57 
58 
59 ! Input
60 !#include "yoeratm.h"
61 
62 ! REAL TAUAER(JPLAY)
63 ! EQUIVALENCE (TAUAERL(1,14),TAUAER)
64 
65 ! Compute the optical depth by interpolating in ln(pressure) and
66 ! temperature. Below LAYTROP, the water vapor self-continuum
67 ! is interpolated (in temperature) separately.
68 
69 DO lay = 1, laytrop
70  ind0 = ((jp(lay)-1)*5+(jt(lay)-1))*nspa(14) + 1
71  ind1 = (jp(lay)*5+(jt1(lay)-1))*nspa(14) + 1
72  inds = indself(lay)
73 !-- DS_990714
74 ! DO IG = 1, NG14
75  ig=1
76  tau(ngs13+ig,lay) = colco2(lay) *&
77  &(fac00(lay) * absa(ind0 ,ig) +&
78  & fac10(lay) * absa(ind0+1,ig) +&
79  & fac01(lay) * absa(ind1 ,ig) +&
80  & fac11(lay) * absa(ind1+1,ig) +&
81  &selffac(lay) * (selfref(inds,ig) + &
82  &selffrac(lay) *&
83  &(selfref(inds+1,ig) - selfref(inds,ig))))&
84  &+ tauaerl(lay,14)
85  pfrac(ngs13+ig,lay) = fracrefa(ig)
86  ig=2
87  tau(ngs13+ig,lay) = colco2(lay) *&
88  &(fac00(lay) * absa(ind0 ,ig) +&
89  & fac10(lay) * absa(ind0+1,ig) +&
90  & fac01(lay) * absa(ind1 ,ig) +&
91  & fac11(lay) * absa(ind1+1,ig) +&
92  &selffac(lay) * (selfref(inds,ig) +&
93  &selffrac(lay) *&
94  &(selfref(inds+1,ig) - selfref(inds,ig))))&
95  &+ tauaerl(lay,14)
96  pfrac(ngs13+ig,lay) = fracrefa(ig)
97 ! END DO
98 !-- DS_990714
99 ENDDO
100 
101 DO lay = laytrop+1, klev
102  ind0 = ((jp(lay)-13)*5+(jt(lay)-1))*nspb(14) + 1
103  ind1 = ((jp(lay)-12)*5+(jt1(lay)-1))*nspb(14) + 1
104 !-- DS_990714
105 ! DO IG = 1, NG14
106  ig=1
107  tau(ngs13+ig,lay) = colco2(lay) *&
108  &(fac00(lay) * absb(ind0 ,ig) +&
109  & fac10(lay) * absb(ind0+1,ig) +&
110  & fac01(lay) * absb(ind1 ,ig) +&
111  & fac11(lay) * absb(ind1+1,ig)) &
112  &+ tauaerl(lay,14)
113  pfrac(ngs13+ig,lay) = fracrefb(ig)
114  ig=2
115  tau(ngs13+ig,lay) = colco2(lay) *&
116  &(fac00(lay) * absb(ind0 ,ig) +&
117  & fac10(lay) * absb(ind0+1,ig) +&
118  & fac01(lay) * absb(ind1 ,ig) +&
119  & fac11(lay) * absb(ind1+1,ig)) &
120  &+ tauaerl(lay,14)
121  pfrac(ngs13+ig,lay) = fracrefb(ig)
122 ! END DO
123 !-- DS_990714
124 ENDDO
125 
126 RETURN
127 END SUBROUTINE rrtm_taumol14
real(kind=jprb), dimension(ng14) fracrefb
Definition: yoerrta14.F90:17
real(kind=jprb), dimension(235, ng14) absb
Definition: yoerrta14.F90:20
real(kind=jprb), dimension(5, 13:59, ng14) kb
Definition: yoerrta14.F90:20
real(kind=jprb), dimension(10, ng14) selfref
Definition: yoerrta14.F90:21
subroutine rrtm_taumol14(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLCO2, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
integer, save klev
Definition: dimphy.F90:7
integer(kind=jpim), parameter jpgpt
Definition: parrrtm.F90:21
integer(kind=jpim), parameter jpband
Definition: parrrtm.F90:18
real(kind=jprb), dimension(ng14) fracrefa
Definition: yoerrta14.F90:16
integer(kind=jpim), dimension(16) nspb
Definition: yoerrtwn.F90:13
integer(kind=jpim), dimension(16) ng
Definition: yoerrtwn.F90:11
integer(kind=jpim), dimension(16) nspa
Definition: yoerrtwn.F90:12
real(kind=jprb), dimension(65, ng14) absa
Definition: yoerrta14.F90:19
integer(kind=jpim), parameter jplay
Definition: parrrtm.F90:15
real(kind=jprb), dimension(5, 13, ng14) ka
Definition: yoerrta14.F90:19
integer(kind=jpim), parameter ng14
Definition: yoerrta14.F90:14
integer(kind=jpim), parameter ngs13
Definition: parrrtm.F90:52
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19