LMDZ
rrtm_taumol6.F90
Go to the documentation of this file.
1 !----------------------------------------------------------------------------
2 SUBROUTINE rrtm_taumol6 (KLEV,TAU,WX,&
3  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
4  &colh2o,co2mult,laytrop,selffac,selffrac,indself,pfrac)
5 
6 ! BAND 6: 820-980 cm-1 (low - H2O; high - nothing)
7 
8 ! Modifications
9 !
10 ! D Salmond 2000-05-15 speed-up
11 ! JJMorcrette 2000-05-17 speed-up
12 
13 
14 #include "tsmbkind.h"
15 
16 USE parrrtm , ONLY : jplay ,jpband ,jpgpt ,jpxsec , ngs5
17 USE yoerrtwn , ONLY : ng ,nspa ,nspb
18 USE yoerrta6 , ONLY : ng6 ,absa ,absco2 ,cfc11adj , cfc12 ,&
20 
21 ! Input
22 !#include "yoeratm.h"
23 
24 ! REAL TAUAER(JPLAY)
25 
26 IMPLICIT NONE
27 
28 real_b :: wx(jpxsec,jplay) ! Amount of trace gases
29 ! Output
30 real_b :: tau(jpgpt,jplay)
31 
32 ! DUMMY INTEGER SCALARS
33 integer_m :: klev
34 
35 !- from AER
36 real_b :: tauaerl(jplay,jpband)
37 
38 !- from INTFAC
39 real_b :: fac00(jplay)
40 real_b :: fac01(jplay)
41 real_b :: fac10(jplay)
42 real_b :: fac11(jplay)
43 
44 !- from INTIND
45 integer_m :: jp(jplay)
46 integer_m :: jt(jplay)
47 integer_m :: jt1(jplay)
48 
49 !- from PROFDATA
50 real_b :: colh2o(jplay)
51 real_b :: co2mult(jplay)
52 integer_m :: laytrop
53 
54 !- from SELF
55 real_b :: selffac(jplay)
56 real_b :: selffrac(jplay)
57 integer_m :: indself(jplay)
58 
59 !- from SP
60 real_b :: pfrac(jpgpt,jplay)
61 
62 integer_m :: ind0(jplay),ind1(jplay),inds(jplay)
63 
64 ! LOCAL INTEGER SCALARS
65 integer_m :: ig, lay
66 
67 ! EQUIVALENCE (TAUAERL(1,6),TAUAER)
68 
69 ! Compute the optical depth by interpolating in ln(pressure) and
70 ! temperature. The water vapor self-continuum is interpolated
71 ! (in temperature) separately.
72 
73 DO lay = 1, laytrop
74  ind0(lay) = ((jp(lay)-1)*5+(jt(lay)-1))*nspa(6) + 1
75  ind1(lay) = (jp(lay)*5+(jt1(lay)-1))*nspa(6) + 1
76  inds(lay) = indself(lay)
77 ENDDO
78 
79 !-- DS_000515
80 DO ig = 1, ng6
81  DO lay = 1, laytrop
82 !-- DS_000515
83  tau(ngs5+ig,lay) = colh2o(lay) *&
84  &(fac00(lay) * absa(ind0(lay) ,ig) +&
85  & fac10(lay) * absa(ind0(lay)+1,ig) +&
86  & fac01(lay) * absa(ind1(lay) ,ig) +&
87  & fac11(lay) * absa(ind1(lay)+1,ig) +&
88  &selffac(lay) * (selfref(inds(lay),ig) + &
89  &selffrac(lay)*&
90  &(selfref(inds(lay)+1,ig)-selfref(inds(lay),ig))))&
91  &+ wx(2,lay) * cfc11adj(ig)&
92  &+ wx(3,lay) * cfc12(ig)&
93  &+ co2mult(lay) * absco2(ig)&
94  &+ tauaerl(lay,6)
95  pfrac(ngs5+ig,lay) = fracrefa(ig)
96  ENDDO
97 ENDDO
98 
99 ! Nothing important goes on above LAYTROP in this band.
100 !-- JJM_000517
101 DO ig = 1, ng6
102  DO lay = laytrop+1, klev
103 !-- JJM_000517
104  tau(ngs5+ig,lay) = _zero_ &
105  &+ wx(2,lay) * cfc11adj(ig)&
106  &+ wx(3,lay) * cfc12(ig)&
107  &+ tauaerl(lay,6)
108  pfrac(ngs5+ig,lay) = fracrefa(ig)
109  ENDDO
110 ENDDO
111 
112 RETURN
113 END SUBROUTINE rrtm_taumol6
real(kind=jprb), dimension(ng6) cfc11adj
Definition: yoerrta6.F90:18
real(kind=jprb), dimension(ng6) cfc12
Definition: yoerrta6.F90:19
subroutine rrtm_taumol6(KLEV, P_TAU, P_WX, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLH2O, P_CO2MULT, K_LAYTROP, P_SELFFAC, P_SELFFRAC, K_INDSELF, PFRAC)
Definition: rrtm_taumol6.F90:5
integer, save klev
Definition: dimphy.F90:7
real(kind=jprb), dimension(5, 13, ng6) ka
Definition: yoerrta6.F90:22
integer(kind=jpim), parameter jpgpt
Definition: parrrtm.F90:21
integer(kind=jpim), parameter jpband
Definition: parrrtm.F90:18
integer(kind=jpim), dimension(16) nspb
Definition: yoerrtwn.F90:13
integer(kind=jpim), dimension(16) ng
Definition: yoerrtwn.F90:11
real(kind=jprb), dimension(10, ng6) selfref
Definition: yoerrta6.F90:23
integer(kind=jpim), parameter ngs5
Definition: parrrtm.F90:44
integer(kind=jpim), dimension(16) nspa
Definition: yoerrtwn.F90:12
real(kind=jprb), dimension(65, ng6) absa
Definition: yoerrta6.F90:22
real(kind=jprb), dimension(ng6) fracrefa
Definition: yoerrta6.F90:16
integer(kind=jpim), parameter jplay
Definition: parrrtm.F90:15
integer(kind=jpim), parameter ng6
Definition: yoerrta6.F90:14
real(kind=jprb), dimension(ng6) absco2
Definition: yoerrta6.F90:20
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19