LMDZ
rrtm_taumol14.F90
Go to the documentation of this file.
1 !******************************************************************************
2 SUBROUTINE rrtm_taumol14 (KLEV,P_TAU,&
3  & p_tauaerl,p_fac00,p_fac01,p_fac10,p_fac11,k_jp,k_jt,k_jt1,&
4  & p_colco2,k_laytrop,p_selffac,p_selffrac,k_indself,pfrac)
5 
6 ! BAND 14: 2250-2380 cm-1 (low - CO2; high - CO2)
7 
8 ! Modifications
9 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
10 
11 ! D Salmond 1999-07-14 speed-up
12 
13 USE parkind1 ,ONLY : jpim ,jprb
14 USE yomhook ,ONLY : lhook, dr_hook
15 
16 USE parrrtm , ONLY : jplay ,jpband ,jpgpt ,ngs13
17 USE yoerrtwn , ONLY : nspa ,nspb
19 
20 IMPLICIT NONE
21 
22 ! Output
23 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
24 REAL(KIND=JPRB) ,INTENT(OUT) :: P_TAU(jpgpt,jplay)
25 REAL(KIND=JPRB) ,INTENT(IN) :: P_TAUAERL(jplay,jpband)
26 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC00(jplay)
27 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC01(jplay)
28 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC10(jplay)
29 REAL(KIND=JPRB) ,INTENT(IN) :: P_FAC11(jplay)
30 INTEGER(KIND=JPIM),INTENT(IN) :: K_JP(jplay)
31 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT(jplay)
32 INTEGER(KIND=JPIM),INTENT(IN) :: K_JT1(jplay)
33 REAL(KIND=JPRB) ,INTENT(IN) :: P_COLCO2(jplay)
34 INTEGER(KIND=JPIM),INTENT(IN) :: K_LAYTROP
35 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFAC(jplay)
36 REAL(KIND=JPRB) ,INTENT(IN) :: P_SELFFRAC(jplay)
37 INTEGER(KIND=JPIM),INTENT(IN) :: K_INDSELF(jplay)
38 REAL(KIND=JPRB) ,INTENT(OUT) :: PFRAC(jpgpt,jplay)
39 !- from AER
40 !- from INTFAC
41 !- from INTIND
42 !- from PROFDATA
43 !- from SELF
44 !- from SP
45 INTEGER(KIND=JPIM) :: IG, IND0, IND1, INDS, I_LAY
46 REAL(KIND=JPRB) :: ZHOOK_HANDLE
47 
48 ! Input
49 !#include "yoeratm.h"
50 
51 ! REAL TAUAER(JPLAY)
52 ! EQUIVALENCE (TAUAERL(1,14),TAUAER)
53 
54 ! Compute the optical depth by interpolating in ln(pressure) and
55 ! temperature. Below LAYTROP, the water vapor self-continuum
56 ! is interpolated (in temperature) separately.
57 
58 IF (lhook) CALL dr_hook('RRTM_TAUMOL14',0,zhook_handle)
59 DO i_lay = 1, k_laytrop
60  ind0 = ((k_jp(i_lay)-1)*5+(k_jt(i_lay)-1))*nspa(14) + 1
61  ind1 = (k_jp(i_lay)*5+(k_jt1(i_lay)-1))*nspa(14) + 1
62  inds = k_indself(i_lay)
63 !-- DS_990714
64 ! DO IG = 1, NG14
65  ig=1
66  p_tau(ngs13+ig,i_lay) = p_colco2(i_lay) *&
67  & (p_fac00(i_lay) * absa(ind0 ,ig) +&
68  & p_fac10(i_lay) * absa(ind0+1,ig) +&
69  & p_fac01(i_lay) * absa(ind1 ,ig) +&
70  & p_fac11(i_lay) * absa(ind1+1,ig) +&
71  & p_selffac(i_lay) * (selfref(inds,ig) + &
72  & p_selffrac(i_lay) *&
73  & (selfref(inds+1,ig) - selfref(inds,ig))))&
74  & + p_tauaerl(i_lay,14)
75  pfrac(ngs13+ig,i_lay) = fracrefa(ig)
76  ig=2
77  p_tau(ngs13+ig,i_lay) = p_colco2(i_lay) *&
78  & (p_fac00(i_lay) * absa(ind0 ,ig) +&
79  & p_fac10(i_lay) * absa(ind0+1,ig) +&
80  & p_fac01(i_lay) * absa(ind1 ,ig) +&
81  & p_fac11(i_lay) * absa(ind1+1,ig) +&
82  & p_selffac(i_lay) * (selfref(inds,ig) +&
83  & p_selffrac(i_lay) *&
84  & (selfref(inds+1,ig) - selfref(inds,ig))))&
85  & + p_tauaerl(i_lay,14)
86  pfrac(ngs13+ig,i_lay) = fracrefa(ig)
87 ! END DO
88 !-- DS_990714
89 ENDDO
90 
91 DO i_lay = k_laytrop+1, klev
92  ind0 = ((k_jp(i_lay)-13)*5+(k_jt(i_lay)-1))*nspb(14) + 1
93  ind1 = ((k_jp(i_lay)-12)*5+(k_jt1(i_lay)-1))*nspb(14) + 1
94 !-- DS_990714
95 ! DO IG = 1, NG14
96  ig=1
97  p_tau(ngs13+ig,i_lay) = p_colco2(i_lay) *&
98  & (p_fac00(i_lay) * absb(ind0 ,ig) +&
99  & p_fac10(i_lay) * absb(ind0+1,ig) +&
100  & p_fac01(i_lay) * absb(ind1 ,ig) +&
101  & p_fac11(i_lay) * absb(ind1+1,ig)) &
102  & + p_tauaerl(i_lay,14)
103  pfrac(ngs13+ig,i_lay) = fracrefb(ig)
104  ig=2
105  p_tau(ngs13+ig,i_lay) = p_colco2(i_lay) *&
106  & (p_fac00(i_lay) * absb(ind0 ,ig) +&
107  & p_fac10(i_lay) * absb(ind0+1,ig) +&
108  & p_fac01(i_lay) * absb(ind1 ,ig) +&
109  & p_fac11(i_lay) * absb(ind1+1,ig)) &
110  & + p_tauaerl(i_lay,14)
111  pfrac(ngs13+ig,i_lay) = fracrefb(ig)
112 ! END DO
113 !-- DS_990714
114 ENDDO
115 
116 IF (lhook) CALL dr_hook('RRTM_TAUMOL14',1,zhook_handle)
117 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(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(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, parameter jprb
Definition: parkind1.F90:31
integer(kind=jpim), dimension(16) nspb
Definition: yoerrtwn.F90:13
integer(kind=jpim), dimension(16) nspa
Definition: yoerrtwn.F90:12
logical lhook
Definition: yomhook.F90:12
real(kind=jprb), dimension(65, ng14) absa
Definition: yoerrta14.F90:19
integer(kind=jpim), parameter jplay
Definition: parrrtm.F90:15
subroutine dr_hook(CDNAME, KSWITCH, PKEY)
Definition: yomhook.F90:17
integer, parameter jpim
Definition: parkind1.F90:13
integer(kind=jpim), parameter ngs13
Definition: parrrtm.F90:52