source: LMDZ6/branches/LMDZ-ECRAD/libf/phylmd/rrtm/rrtm_taumol11.F90 @ 4109

Last change on this file since 4109 was 1990, checked in by Laurent Fairhead, 11 years ago

Corrections à la version r1989 pour permettre la compilation avec RRTM
Inclusion de la licence CeCILL_V2 pour RRTM


Changes to revision r1989 to enable RRTM code compilation
RRTM part put under CeCILL_V2 licence

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 3.5 KB
Line 
1!******************************************************************************
2SUBROUTINE RRTM_TAUMOL11 (KLEV,P_TAU,&
3 & P_TAUAERL,P_FAC00,P_FAC01,P_FAC10,P_FAC11,K_JP,K_JT,K_JT1,&
4 & P_COLH2O,K_LAYTROP,P_SELFFAC,P_SELFFRAC,K_INDSELF,PFRAC) 
5
6!     BAND 11:  1480-1800 cm-1 (low - H2O; high - H2O)
7
8! Modifications
9!        M.Hamrud      01-Oct-2003 CY28 Cleaning
10
11!     D Salmond   2000-05-15 speed-up
12!     JJMorcrette 2000-05-17 speed-up
13
14USE PARKIND1  ,ONLY : JPIM     ,JPRB
15USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
16
17USE PARRRTM  , ONLY : JPLAY  ,JPBAND ,JPGPT  ,NG11  ,NGS10
18USE YOERRTWN , ONLY :      NSPA   ,NSPB
19USE YOERRTA11, ONLY : ABSA   ,ABSB   ,FRACREFA, FRACREFB,SELFREF
20
21!  Input
22!#include "yoeratm.h"
23
24!      REAL TAUAER(JPLAY)
25
26IMPLICIT NONE
27
28!  Output
29INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV
30REAL(KIND=JPRB)   ,INTENT(OUT)   :: P_TAU(JPGPT,JPLAY)
31REAL(KIND=JPRB)   ,INTENT(IN)    :: P_TAUAERL(JPLAY,JPBAND)
32REAL(KIND=JPRB)   ,INTENT(IN)    :: P_FAC00(JPLAY)
33REAL(KIND=JPRB)   ,INTENT(IN)    :: P_FAC01(JPLAY)
34REAL(KIND=JPRB)   ,INTENT(IN)    :: P_FAC10(JPLAY)
35REAL(KIND=JPRB)   ,INTENT(IN)    :: P_FAC11(JPLAY)
36INTEGER(KIND=JPIM),INTENT(IN)    :: K_JP(JPLAY)
37INTEGER(KIND=JPIM),INTENT(IN)    :: K_JT(JPLAY)
38INTEGER(KIND=JPIM),INTENT(IN)    :: K_JT1(JPLAY)
39REAL(KIND=JPRB)   ,INTENT(IN)    :: P_COLH2O(JPLAY)
40INTEGER(KIND=JPIM),INTENT(IN)    :: K_LAYTROP
41REAL(KIND=JPRB)   ,INTENT(IN)    :: P_SELFFAC(JPLAY)
42REAL(KIND=JPRB)   ,INTENT(IN)    :: P_SELFFRAC(JPLAY)
43INTEGER(KIND=JPIM),INTENT(IN)    :: K_INDSELF(JPLAY)
44REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFRAC(JPGPT,JPLAY)
45!- from AER
46!- from INTFAC     
47!- from INTIND
48!- from PROFDATA             
49!- from SELF             
50!- from SP             
51INTEGER(KIND=JPIM) :: IND0(JPLAY),IND1(JPLAY),INDS(JPLAY)
52
53INTEGER(KIND=JPIM) :: IG, I_LAY
54REAL(KIND=JPRB) :: ZHOOK_HANDLE
55
56!      EQUIVALENCE (TAUAERL(1,11),TAUAER)
57
58!     Compute the optical depth by interpolating in ln(pressure) and
59!     temperature.  Below LAYTROP, the water vapor self-continuum
60!     is interpolated (in temperature) separately.
61 
62IF (LHOOK) CALL DR_HOOK('RRTM_TAUMOL11',0,ZHOOK_HANDLE)
63DO I_LAY = 1, K_LAYTROP
64  IND0(I_LAY) = ((K_JP(I_LAY)-1)*5+(K_JT(I_LAY)-1))*NSPA(11) + 1
65  IND1(I_LAY) = (K_JP(I_LAY)*5+(K_JT1(I_LAY)-1))*NSPA(11) + 1
66  INDS(I_LAY) = K_INDSELF(I_LAY)
67ENDDO
68
69!-- DS_000515 
70DO IG = 1, NG11
71  DO I_LAY = 1, K_LAYTROP
72!-- DS_000515 
73    P_TAU (NGS10+IG,I_LAY) = P_COLH2O(I_LAY) *&
74     & (P_FAC00(I_LAY) * ABSA(IND0(I_LAY)  ,IG) +&
75     & P_FAC10(I_LAY) * ABSA(IND0(I_LAY)+1,IG) +&
76     & P_FAC01(I_LAY) * ABSA(IND1(I_LAY)  ,IG) +&
77     & P_FAC11(I_LAY) * ABSA(IND1(I_LAY)+1,IG) +&
78     & P_SELFFAC(I_LAY) * (SELFREF(INDS(I_LAY),IG) + &
79     & P_SELFFRAC(I_LAY) *&
80     & (SELFREF(INDS(I_LAY)+1,IG) - SELFREF(INDS(I_LAY),IG))))&
81     & + P_TAUAERL(I_LAY,11) 
82    PFRAC(NGS10+IG,I_LAY) = FRACREFA(IG)
83  ENDDO
84ENDDO
85
86DO I_LAY = K_LAYTROP+1, KLEV
87  IND0(I_LAY) = ((K_JP(I_LAY)-13)*5+(K_JT(I_LAY)-1))*NSPB(11) + 1
88  IND1(I_LAY) = ((K_JP(I_LAY)-12)*5+(K_JT1(I_LAY)-1))*NSPB(11) + 1
89ENDDO
90
91!-- JJM_000517
92DO IG = 1, NG11
93  DO I_LAY = K_LAYTROP+1, KLEV
94!-- JJM_000517
95    P_TAU (NGS10+IG,I_LAY) = P_COLH2O(I_LAY) *&
96     & (P_FAC00(I_LAY) * ABSB(IND0(I_LAY)  ,IG) +&
97     & P_FAC10(I_LAY) * ABSB(IND0(I_LAY)+1,IG) +&
98     & P_FAC01(I_LAY) * ABSB(IND1(I_LAY)  ,IG) +&
99     & P_FAC11(I_LAY) * ABSB(IND1(I_LAY)+1,IG)) &
100     & + P_TAUAERL(I_LAY,11) 
101    PFRAC(NGS10+IG,I_LAY) = FRACREFB(IG)
102  ENDDO
103ENDDO
104
105IF (LHOOK) CALL DR_HOOK('RRTM_TAUMOL11',1,ZHOOK_HANDLE)
106END SUBROUTINE RRTM_TAUMOL11
Note: See TracBrowser for help on using the repository browser.