LMDZ
olw.F90
Go to the documentation of this file.
1 SUBROUTINE 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 
86 USE yoeolw , ONLY : nua
87 USE yoerdu , ONLY : rcday
88 USE yoedbug , ONLY : ldebug
89 
90 
91 IMPLICIT NONE
92 
93 ! DUMMY INTEGER SCALARS
94 integer_m :: kfdia
95 integer_m :: kidia
96 integer_m :: klev
97 integer_m :: klon
98 
99 ! DUMMY REAL SCALARS
100 real_b :: pcco2, zdfnet
101 
102 !-----------------------------------------------------------------------
103 !
104 !* 0.1 ARGUMENTS
105 ! ---------
106 !
107 real_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 !
114 real_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 ! ------------
121 real_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
129 integer_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 
144 CALL 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 
156 DO 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
162 END DO
163 !
164 CALL 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 !
175 CALL olwc ( kidia,kfdia,klon,klev &
176  & , zbint,zbsui,pcldld,pcldlu,zcntrb,pemis,zfdn,zfup &
177  & , pflux )
178 !
179 DO 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 
192 END DO
193 !
194 ! ------------------------------------------------------------------
195 !
196 RETURN
197 END SUBROUTINE olw
INTERFACE SUBROUTINE RRTM_ECRT_140GP pcco2
INTERFACE SUBROUTINE RRTM_ECRT_140GP pth
subroutine olwbv(KIDIA, KFDIA, KLON, KLEV, PDP, PDT0, PEMIS, PTH, PT, PCOLC, PFLUC, PABCU, PBINT, PBSUI, PCNTRB, PFDN, PFUP)
Definition: olwbv.F90:7
subroutine olwu(KIDIA, KFDIA, KLON, KLEV, PAER, PCCO2, PDP, PAPH, PQOF, PT, PVIEW, PWV, PABCU)
Definition: olwu.F90:4
integer, save kidia
Definition: dimphy.F90:6
integer, save klon
Definition: dimphy.F90:3
integer, save klev
Definition: dimphy.F90:7
integer, save kfdia
Definition: dimphy.F90:5
logical ldebug
Definition: yoedbug.F90:14
subroutine olwc(KIDIA, KFDIA, KLON, KLEV, PBINT, PBSUIN, PCLDLD, PCLDLU, PCNTRB, PEMIS, PFDN, PFUP, PFLUX)
Definition: olwc.F90:4
real(kind=jprb) rcday
Definition: yoerdu.F90:17
subroutine olw(KIDIA, KFDIA, KLON, KLEV, PCCO2, PCLDLD, PCLDLU, PDP, PDT0, PEMIS, PAPH, PQOF, PTH, PAER, PT, PVIEW, PWV, PCOLR, PCOLC, PFLUX, PFLUC)
Definition: olw.F90:9
INTERFACE SUBROUTINE RRTM_ECRT_140GP paph
INTERFACE SUBROUTINE RRTM_ECRT_140GP pt
Definition: yoeolw.F90:1
INTERFACE SUBROUTINE RRTM_ECRT_140GP && paer
Definition: yoerdu.F90:1