LMDZ
rrtm_taumol10.F90
Go to the documentation of this file.
1 !*******************************************************************************
2 SUBROUTINE rrtm_taumol10 (KLEV,TAU,&
3  &tauaerl,fac00,fac01,fac10,fac11,jp,jt,jt1,&
4  &colh2o,laytrop,pfrac)
5 
6 ! BAND 10: 1390-1480 cm-1 (low - H2O; high - H2O)
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 , ngs9
17 USE yoerrtwn , ONLY : ng ,nspa ,nspb
18 USE yoerrta10, ONLY : ng10 ,absa ,absb ,fracrefa, fracrefb, ka , kb
19 
20 ! Input
21 !#include "yoeratm.h"
22 
23 ! REAL TAUAER(JPLAY)
24 
25 IMPLICIT NONE
26 
27 ! Output
28 real_b :: tau(jpgpt,jplay)
29 
30 ! DUMMY INTEGER SCALARS
31 integer_m :: klev
32 
33 !- from AER
34 real_b :: tauaerl(jplay,jpband)
35 
36 !- from INTFAC
37 real_b :: fac00(jplay)
38 real_b :: fac01(jplay)
39 real_b :: fac10(jplay)
40 real_b :: fac11(jplay)
41 
42 !- from INTIND
43 integer_m :: jp(jplay)
44 integer_m :: jt(jplay)
45 integer_m :: jt1(jplay)
46 
47 !- from PROFDATA
48 real_b :: colh2o(jplay)
49 integer_m :: laytrop
50 
51 !- from SP
52 real_b :: pfrac(jpgpt,jplay)
53 
54 integer_m :: ind0(jplay),ind1(jplay)
55 
56 ! LOCAL INTEGER SCALARS
57 integer_m :: ig, lay
58 
59 ! EQUIVALENCE (TAUAERL(1,10),TAUAER)
60 
61 ! Compute the optical depth by interpolating in ln(pressure) and
62 ! temperature.
63 
64 DO lay = 1, laytrop
65  ind0(lay) = ((jp(lay)-1)*5+(jt(lay)-1))*nspa(10) + 1
66  ind1(lay) = (jp(lay)*5+(jt1(lay)-1))*nspa(10) + 1
67 ENDDO
68 
69 !-- DS_000515
70 DO ig = 1, ng10
71  DO lay = 1, laytrop
72 !-- DS_000515
73  tau(ngs9+ig,lay) = colh2o(lay) *&
74  &(fac00(lay) * absa(ind0(lay) ,ig) +&
75  & fac10(lay) * absa(ind0(lay)+1,ig) +&
76  & fac01(lay) * absa(ind1(lay) ,ig) +&
77  & fac11(lay) * absa(ind1(lay)+1,ig)) &
78  &+ tauaerl(lay,10)
79  pfrac(ngs9+ig,lay) = fracrefa(ig)
80  ENDDO
81 ENDDO
82 
83 DO lay = laytrop+1, klev
84  ind0(lay) = ((jp(lay)-13)*5+(jt(lay)-1))*nspb(10) + 1
85  ind1(lay) = ((jp(lay)-12)*5+(jt1(lay)-1))*nspb(10) + 1
86 ENDDO
87 
88 !-- JJM_000517
89 DO ig = 1, ng10
90  DO lay = laytrop+1, klev
91 !-- JJM_000517
92  tau(ngs9+ig,lay) = colh2o(lay) *&
93  &(fac00(lay) * absb(ind0(lay) ,ig) +&
94  & fac10(lay) * absb(ind0(lay)+1,ig) +&
95  & fac01(lay) * absb(ind1(lay) ,ig) +&
96  & fac11(lay) * absb(ind1(lay)+1,ig)) &
97  &+ tauaerl(lay,10)
98  pfrac(ngs9+ig,lay) = fracrefb(ig)
99  ENDDO
100 ENDDO
101 
102 RETURN
103 END SUBROUTINE rrtm_taumol10
real(kind=jprb), dimension(ng10) fracrefb
Definition: yoerrta10.F90:17
integer, save klev
Definition: dimphy.F90:7
real(kind=jprb), dimension(5, 13, ng10) ka
Definition: yoerrta10.F90:19
integer(kind=jpim), parameter jpgpt
Definition: parrrtm.F90:21
integer(kind=jpim), parameter jpband
Definition: parrrtm.F90:18
integer(kind=jpim), parameter ng10
Definition: yoerrta10.F90:14
subroutine rrtm_taumol10(KLEV, P_TAU, P_TAUAERL, P_FAC00, P_FAC01, P_FAC10, P_FAC11, K_JP, K_JT, K_JT1, P_COLH2O, K_LAYTROP, PFRAC)
real(kind=jprb), dimension(ng10) fracrefa
Definition: yoerrta10.F90:16
real(kind=jprb), dimension(235, ng10) absb
Definition: yoerrta10.F90:20
integer(kind=jpim), parameter ngs9
Definition: parrrtm.F90:48
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
integer(kind=jpim), parameter jplay
Definition: parrrtm.F90:15
real(kind=jprb), dimension(5, 13:59, ng10) kb
Definition: yoerrta10.F90:20
real(kind=jprb), dimension(65, ng10) absa
Definition: yoerrta10.F90:19
integer(kind=jpim), parameter jpxsec
Definition: parrrtm.F90:19