source: LMDZ5/trunk/libf/phylmd/rrtm/lw.F90 @ 2186

Last change on this file since 2186 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: 5.8 KB
Line 
1SUBROUTINE LW &
2 & ( KIDIA, KFDIA , KLON  , KLEV  , KMODE,&
3 & PCCO2, PCLDLD, PCLDLU,&
4 & PDP  , PDT0  , PEMIS , PEMIW,&
5 & PPMB , PQOF  , PTL,&
6 & PAER , PTAVE , PVIEW , PWV,&
7 & PEMIT, PFLUX , PFLUC &
8 & ) 
9
10!**** *LW*   - ORGANIZES THE LONGWAVE CALCULATIONS
11
12!     PURPOSE.
13!     --------
14!           COMPUTES LONGWAVE FLUXES
15
16!**   INTERFACE.
17!     ----------
18
19!        *LW* IS CALLED FROM *RADLSW*
20
21!        EXPLICIT ARGUMENTS :
22!        --------------------
23! PAER   : (KLON,6,KLEV)     ; OPTICAL THICKNESS OF THE AEROSOLS
24! PCCO2  :                   ; CONCENTRATION IN CO2 (PA/PA)
25! PCLDLD : (KLON,KLEV)       ; DOWNWARD EFFECTIVE CLOUD FRACTION
26! PCLDLU : (KLON,KLEV)       ; UPWARD EFFECTIVE CLOUD FRACTION
27! PDP    : (KLON,KLEV)       ; LAYER PRESSURE THICKNESS
28! PDT0   : (KLON)            ; SURFACE TEMPERATURE DISCONTINUITY 
29! PEMIS  : (KLON)            ; SURFACE LW EMISSIVITY
30! PEMIW  : (KLON)            ; SURFACE LW WINDOW EMISSIVITY
31! PPMB   : (KLON,KLEV+1)     ; HALF LEVEL PRESSURE
32! PQOF   : (KLON,KLEV)       ; CONCENTRATION IN OZONE (PA/PA)
33! PTAVE  : (KLON,KLEV)       ; TEMPERATURE
34! PTL    : (KLON,KLEV+1)     ; HALF LEVEL TEMPERATURE
35! PVIEW  : (KLON)            ; COSECANT OF VIEWING ANGLE
36! PWV    : (KLON,KLEV)       ; SPECIFIC HUMIDITY  (PA/PA)
37!     ==== OUTPUTS ===
38! PEMIT(KLON)                ; SURFACE TOTAL LW EMISSIVITY
39! PFLUX(KLON,2,KLEV+1)       ; RADIATIVE FLUXES :
40!                     1  ==>  UPWARD   FLUX TOTAL
41!                     2  ==>  DOWNWARD FLUX TOTAL
42! PFLUC(KLON,2,KLEV+1)       ; RADIATIVE FLUXES CLEAR SKY:
43!                     1  ==>  UPWARD   FLUX TOTAL
44!                     2  ==>  DOWNWARD FLUX TOTAL
45
46!        IMPLICIT ARGUMENTS :   NONE
47!        --------------------
48
49!     METHOD.
50!     -------
51
52!          1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
53!     ABSORBERS.
54!          2. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
55!     GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
56!          3. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
57!     TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
58!     BOUNDARIES.
59!          4. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
60!          5. INTRODUCES THE EFFECTS OF THE CLOUDS ON THE FLUXES.
61
62!     EXTERNALS.
63!     ----------
64
65!          *LWU*, *LWBV*, *LWC*
66
67!     REFERENCE.
68!     ----------
69
70!        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
71!        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
72
73!     AUTHOR.
74!     -------
75!        JEAN-JACQUES MORCRETTE  *ECMWF*
76
77!     MODIFICATIONS.
78!     --------------
79!        ORIGINAL : 89-07-14
80!        99-05-25   JJMorcrette    Revised aerosols
81!        M.Hamrud      01-Oct-2003 CY28 Cleaning
82
83!-----------------------------------------------------------------------
84
85USE PARKIND1  ,ONLY : JPIM     ,JPRB
86USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
87
88USE YOELW    , ONLY : NUA
89IMPLICIT NONE
90
91INTEGER(KIND=JPIM),INTENT(IN)    :: KLON
92INTEGER(KIND=JPIM),INTENT(IN)    :: KLEV
93INTEGER(KIND=JPIM),INTENT(IN)    :: KIDIA
94INTEGER(KIND=JPIM),INTENT(IN)    :: KFDIA
95INTEGER(KIND=JPIM),INTENT(IN)    :: KMODE
96REAL(KIND=JPRB)   ,INTENT(IN)    :: PCCO2
97REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLDLD(KLON,KLEV)
98REAL(KIND=JPRB)   ,INTENT(IN)    :: PCLDLU(KLON,KLEV)
99REAL(KIND=JPRB)   ,INTENT(IN)    :: PDP(KLON,KLEV)
100REAL(KIND=JPRB)   ,INTENT(IN)    :: PDT0(KLON)
101REAL(KIND=JPRB)   ,INTENT(IN)    :: PEMIS(KLON)
102REAL(KIND=JPRB)   ,INTENT(IN)    :: PEMIW(KLON)
103REAL(KIND=JPRB)   ,INTENT(IN)    :: PPMB(KLON,KLEV+1)
104REAL(KIND=JPRB)   ,INTENT(IN)    :: PQOF(KLON,KLEV)
105REAL(KIND=JPRB)   ,INTENT(IN)    :: PTL(KLON,KLEV+1)
106REAL(KIND=JPRB)   ,INTENT(IN)    :: PAER(KLON,6,KLEV)
107REAL(KIND=JPRB)   ,INTENT(IN)    :: PTAVE(KLON,KLEV)
108REAL(KIND=JPRB)   ,INTENT(IN)    :: PVIEW(KLON)
109REAL(KIND=JPRB)   ,INTENT(IN)    :: PWV(KLON,KLEV)
110REAL(KIND=JPRB)   ,INTENT(INOUT) :: PEMIT(KLON)
111REAL(KIND=JPRB)   ,INTENT(OUT)   :: PFLUX(KLON,2,KLEV+1)
112REAL(KIND=JPRB)   ,INTENT(INOUT) :: PFLUC(KLON,2,KLEV+1)
113!-----------------------------------------------------------------------
114
115!*       0.1   ARGUMENTS
116!              ---------
117
118!-------------------------------------------------------------------------
119
120!              ------------
121REAL(KIND=JPRB) :: ZABCU(KLON,NUA,3*KLEV+1)&
122 & ,  ZBINT(KLON,KLEV+1)        , ZBSUI(KLON)&
123 & ,  ZCNTRB(KLON,KLEV+1,KLEV+1) 
124
125REAL(KIND=JPRB) :: ZHOOK_HANDLE
126
127#include "lwbv.intfb.h"
128#include "lwc.intfb.h"
129#include "lwu.intfb.h"
130
131!     ------------------------------------------------------------------
132
133!*         1.    INITIALIZATION
134!                --------------
135
136!100  CONTINUE
137
138!     ------------------------------------------------------------------
139
140!*         1.1   COMPUTES ABSORBER AMOUNTS
141!                -------------------------
142
143IF (LHOOK) CALL DR_HOOK('LW',0,ZHOOK_HANDLE)
144print *,'       LW: Avant LWU'
145CALL LWU &
146 & (  KIDIA, KFDIA, KLON, KLEV,&
147 & PAER , PCCO2, PDP , PPMB, PQOF , PTAVE, PVIEW, PWV,&
148 & ZABCU &
149 & ) 
150
151!     ------------------------------------------------------------------
152
153!*         2.    COMPUTES PLANCK FUNCTIONS
154!                -------------------------
155!                PERFORMS THE VERTICAL INTEGRATION
156!                ---------------------------------
157
158print *,'       LW: Avant LWBV'
159CALL LWBV &
160 & ( KIDIA, KFDIA, KLON , KLEV  , KMODE,&
161 & PDT0 , PEMIS, PEMIW, PTL   , PTAVE,&
162 & PEMIT, PFLUC,&
163 & ZABCU, ZBINT, ZBSUI, ZCNTRB &
164 & ) 
165
166!     ------------------------------------------------------------------
167
168!*         4.    INTRODUCES THE EFFECTS OF CLOUDS
169!                --------------------------------
170
171print *,'       LW: Avant LWC'
172CALL LWC &
173 & ( KIDIA , KFDIA, KLON  , KLEV,&
174 & ZBINT , ZBSUI, PCLDLD, PCLDLU,&
175 & ZCNTRB, PEMIT, PFLUC,&
176 & PFLUX    &
177 & ) 
178
179!     ------------------------------------------------------------------
180
181IF (LHOOK) CALL DR_HOOK('LW',1,ZHOOK_HANDLE)
182END SUBROUTINE LW
Note: See TracBrowser for help on using the repository browser.