source: LMDZ5/branches/testing/libf/phymar/olw.F90 @ 5456

Last change on this file since 5456 was 2160, checked in by Laurent Fairhead, 10 years ago

Merged trunk changes -r2070:2158 into testing branch. Compilation problems introduced by revision r2155 have been corrected by hand

File size: 5.7 KB
Line 
1SUBROUTINE OLW &
2     & ( KIDIA, KFDIA , KLON  , KLEV &
3     & , PCCO2, PCLDLD, PCLDLU &
4     & , PDP  , PDT0  , PEMIS  &
5     & , PAPH , PQOF  , PTH &
6     & , PAER , PT    , PVIEW , PWV &
7     & , PCOLR, PCOLC , PFLUX, PFLUC &
8     & )
9!
10!**** *LW*   - ORGANIZES THE LONGWAVE CALCULATIONS
11!
12!     PURPOSE.
13!     --------
14!           DEPENDING ON KMODE, COMPUTES LONGWAVE FLUXES AND/OR
15!           RADIANCES
16!
17!**   INTERFACE.
18!     ----------
19!
20!        *LW* IS CALLED FROM *RADLSW*
21!
22!        EXPLICIT ARGUMENTS :
23!        --------------------
24! PAER   : (KLON,KLEV,6)     ; OPTICAL THICKNESS OF THE AEROSOLS
25! PCCO2  :                   ; CONCENTRATION IN CO2 (PA/PA)
26! PCLDLD : (KLON,KLEV)       ; DOWNWARD EFFECTIVE FRACTIONAL COVER
27! PCLDLU : (KLON,KLEV)       ; UPWARD EFFECTIVE FRACTIONAL COVER
28! PDP    : (KLON,KLEV)       ; LAYER PRESSURE THICKNESS
29! PDT0   : (KLON)            ; SURFACE TEMPERATURE DISCONTINUITY 
30! PEMIS  : (KLON)            ; SURFACE EMISSIVITY
31! PAPH   : (KLON,KLEV+1)     ; HALF LEVEL PRESSURE
32! PQOF   : (KLON,KLEV)       ; CONCENTRATION IN OZONE (PA/PA)
33! PT     : (KLON,KLEV)       ; TEMPERATURE
34! PTH    : (KLON,KLEV+1)     ; HALF LEVEL TEMPERATURE
35! PVIEW  : (KLON)            ; COSECANT OF VIEWING ANGLE
36! PWV    : (KLON,KLEV)       ; SPECIFIC HUMIDITY  (PA/PA)
37!     ==== OUTPUTS ===
38!  IF KMODE = 0, 1, 2
39! PFLUX(KLON,2,KLEV)         ; RADIATIVE FLUXES :
40!                     1  ==>  UPWARD   FLUX TOTAL
41!                     2  ==>  DOWNWARD FLUX TOTAL
42! PFLUC(KLON,2,KLEV)         ; RADIATIVE FLUXES CLEAR SKY:
43!                     1  ==>  UPWARD   FLUX TOTAL
44!                     2  ==>  DOWNWARD FLUX TOTAL
45! PCOLR(KLON,KLEV)           ; LONG-WAVE TENDENCY
46! PCOLC(KLON,KLEV)           ; LONG-WAVE TENDENCY CLEAR SKY
47!
48!        IMPLICIT ARGUMENTS :   NONE
49!        --------------------
50!
51!     METHOD.
52!     -------
53!
54!          1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
55!     ABSORBERS.
56!          2. COMPUTES THE PLANCK FUNCTIONS ON THE INTERFACES AND THE
57!     GRADIENT OF PLANCK FUNCTIONS IN THE LAYERS.
58!          3. PERFORMS THE VERTICAL INTEGRATION DISTINGUISHING THE CON-
59!     TRIBUTIONS OF THE ADJACENT AND DISTANT LAYERS AND THOSE FROM THE
60!     BOUNDARIES.
61!          4. COMPUTES THE CLEAR-SKY DOWNWARD AND UPWARD EMISSIVITIES.
62!          5. INTRODUCES THE EFFECTS OF THE CLOUDS ON THE FLUXES.
63!
64!     EXTERNALS.
65!     ----------
66!
67!          *LWU*, *LWBV*, *LWC*
68!
69!     REFERENCE.
70!     ----------
71!
72!        SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
73!        ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
74!
75!     AUTHOR.
76!     -------
77!        JEAN-JACQUES MORCRETTE  *ECMWF*
78!
79!     MODIFICATIONS.
80!     --------------
81!        ORIGINAL : 89-07-14
82!-----------------------------------------------------------------------
83
84#include "tsmbkind.h"
85
86USE YOEOLW   , ONLY : NUA
87USE YOERDU   , ONLY : RCDAY
88USE YOEDBUG  , ONLY : LDEBUG
89
90
91IMPLICIT NONE
92
93!     DUMMY INTEGER SCALARS
94INTEGER_M :: KFDIA
95INTEGER_M :: KIDIA
96INTEGER_M :: KLEV
97INTEGER_M :: KLON
98
99!     DUMMY REAL SCALARS
100REAL_B :: PCCO2, ZDFNET
101
102!-----------------------------------------------------------------------
103!
104!*       0.1   ARGUMENTS
105!              ---------
106!
107REAL_B :: PCLDLD(KLON,KLEV)      , PCLDLU(KLON,KLEV) &
108     &  ,  PDP(KLON,KLEV)   , PDT0(KLON) &
109     &  ,  PEMIS(KLON)      , PAPH(KLON,KLEV+1) &
110     &  ,  PQOF(KLON,KLEV)  , PTH(KLON,KLEV+1) &
111     &  ,  PAER(KLON,KLEV,6), PT(KLON,KLEV) &
112     &  ,  PVIEW(KLON)      , PWV(KLON,KLEV)
113!
114REAL_B :: PCOLR(KLON,KLEV)       , PCOLC(KLON,KLEV) &
115     &  ,  PFLUX(KLON,2,KLEV+1), PFLUC(KLON,2,KLEV+1)
116!
117!-------------------------------------------------------------------------
118!
119!*       0.2   LOCAL ARRAYS
120!              ------------
121REAL_B :: ZABCU(KLON,NUA,3*KLEV+1) &
122     &  ,  ZBINT(KLON,KLEV+1) &
123     &  ,  ZBSUI(KLON) &
124     &  ,  ZCNTRB(KLON,KLEV+1,KLEV+1) &
125     &  ,  ZFDN(KLON,KLEV+1) &
126     &  ,  ZFUP(KLON,KLEV+1)
127     
128!     LOCAL INTEGER SCALARS
129INTEGER_M :: JK, JKL, JL, ILIM, IUA, KLEVT, JK1, JK2
130
131     
132!
133!     ------------------------------------------------------------------
134!
135!*         1.    INITIALIZATION
136!                --------------
137!
138!     ------------------------------------------------------------------
139!
140!*         1.1   COMPUTES ABSORBER AMOUNTS
141!                -------------------------
142!
143
144CALL OLWU ( KIDIA, KFDIA, KLON, KLEV &
145     &  ,  PAER, PCCO2, PDP, PAPH, PQOF, PT, PVIEW, PWV &
146     &  ,  ZABCU   )
147
148!
149!     ------------------------------------------------------------------
150!
151!*         2.    COMPUTES PLANCK FUNCTIONS
152!                -------------------------
153!                PERFORMS THE VERTICAL INTEGRATION
154!                ---------------------------------
155
156DO JK1=1,KLEV+1
157  DO JK2=1,KLEV+1
158    DO JL=KIDIA,KFDIA
159      ZCNTRB(JL,JK1,JK2)=0.
160    END DO
161  END DO
162END DO     
163!
164CALL OLWBV( KIDIA,KFDIA,KLON,KLEV &
165     &          , PDP,PDT0,PEMIS,PTH &
166     &          , PT &
167     &          , PCOLC,PFLUC &
168     &          , ZABCU,ZBINT,ZBSUI,ZCNTRB,ZFDN,ZFUP)
169     
170!     ------------------------------------------------------------------
171!
172!*         4.    INTRODUCES THE EFFECTS OF CLOUDS
173!                --------------------------------
174!
175CALL OLWC ( KIDIA,KFDIA,KLON,KLEV &
176     &  , ZBINT,ZBSUI,PCLDLD,PCLDLU,ZCNTRB,PEMIS,ZFDN,ZFUP &
177     &  , PFLUX                                                )
178!
179DO JKL = 1 , KLEV
180  JK = KLEV+1 - JKL
181
182  DO JL = KIDIA,KFDIA
183    ZDFNET = PFLUX(JL,1,JK+1) + PFLUX(JL,2,JK+1) &
184     &        -PFLUX(JL,1,JK  ) - PFLUX(JL,2,JK  )
185    PCOLR(JL,JK) = RCDAY * ZDFNET / PDP(JL,JKL)
186   
187    ZDFNET = PFLUC(JL,1,JK+1) + PFLUC(JL,2,JK+1) &
188    &              -PFLUC(JL,1,JK  ) - PFLUC(JL,2,JK  )
189    PCOLC(JL,JK) = RCDAY * ZDFNET / PDP(JL,JKL)
190  END DO
191 
192END DO
193!
194!     ------------------------------------------------------------------
195!
196RETURN
197END SUBROUTINE OLW
Note: See TracBrowser for help on using the repository browser.