LMDZ
lwvb.F90
Go to the documentation of this file.
1 SUBROUTINE lwvb &
2  &( kidia , kfdia , klon , klev , kuaer &
3  &, pabcu , padjd , padju &
4  &, pb , pbint , pbsur , pbtop &
5  &, pdisd , pdisu , pemis , pemiw &
6  &, pgasur, pgbsur, pgatop, pgbtop &
7  &, pdwfsu,pfluc &
8  &)
9 
10 !**** *LWVB* - L.W., VERTICAL INTEGRATION, EXCHANGE WITH BOUNDARIES
11 
12 ! PURPOSE.
13 ! --------
14 ! INTRODUCES THE EFFECTS OF THE BOUNDARIES IN THE VERTICAL
15 ! INTEGRATION
16 
17 !** INTERFACE.
18 ! ----------
19 
20 ! EXPLICIT ARGUMENTS :
21 ! --------------------
22 ! ==== INPUTS ===
23 ! PABCU : (KLON,NUA,3*KLEV+1); ABSORBER AMOUNTS
24 ! PADJ.. : (KLON,KLEV+1) ; CONTRIBUTION BY ADJACENT LAYERS
25 ! PB : (KLON,NSIL,KLEV+1); SPECTRAL HALF-LEVEL PLANCK FUNCTIONS
26 ! PBINT : (KLON,KLEV+1) ; HALF-LEVEL PLANCK FUNCTIONS
27 ! PBSUR : (KLON,NSIL) ; SPECTRAL SURFACE PLANCK FUNCTION
28 ! PBTOP : (KLON,NSIL) ; SPECTRAL T.O.A. PLANCK FUNCTION
29 ! PDIS.. : (KLON,KLEV+1) ; CONTRIBUTION BY DISTANT LAYERS
30 ! PEMIS : (KLON) ; SURFACE LW EMISSIVITY
31 ! PEMIW : (KLON) ; SURFACE LW WINDOW EMISSIVITY
32 ! PGASUR, PGBSUR ; SURFACE PADE APPROXIMANTS
33 ! PGATOP, PGBTOP ; T.O.A. PADE APPROXIMANTS
34 ! ==== OUTPUTS ===
35 ! PDWFSU : (KLON,NSIL) ; SPECTRAL DOWNWARD FLUX AT SURFACE
36 ! PFLUC(KLON,2,KLEV) ; RADIATIVE FLUXES CLEAR-SKY:
37 ! 1 ==> UPWARD FLUX TOTAL
38 
39 ! IMPLICIT ARGUMENTS : NONE
40 ! --------------------
41 
42 ! METHOD.
43 ! -------
44 
45 ! COMPUTES THE ENERGY EXCHANGE WITH TOP AND SURFACE OF THE
46 ! ATMOSPHERE AND ADDS UP ALL CONTRIBUTIONS TO GET THE CLEAR-SKY
47 ! FLUXES
48 
49 ! EXTERNALS.
50 ! ----------
51 
52 ! *LWTT*
53 
54 ! REFERENCE.
55 ! ----------
56 
57 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
58 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
59 
60 ! AUTHOR.
61 ! -------
62 ! JEAN-JACQUES MORCRETTE *ECMWF*
63 ! MODIFICATIONS.
64 ! --------------
65 ! ORIGINAL : 89-07-14
66 ! JJ Morcrette 96-06-07 Surface LW Window Emissivity
67 
68 !-----------------------------------------------------------------------
69 
70 #include "tsmbkind.h"
71 
72 USE yoelw , ONLY : nsil ,nipd ,ntra ,nua ,ng1p1
73 
74 
75 IMPLICIT NONE
76 
77 
78 ! DUMMY INTEGER SCALARS
79 integer_m :: kfdia
80 integer_m :: kidia
81 integer_m :: klev
82 integer_m :: klon
83 integer_m :: kuaer
84 
85 
86 
87 !-----------------------------------------------------------------------
88 
89 !* 0.1 ARGUMENTS
90 ! ---------
91 
92 
93 real_b :: pabcu(klon,nua,3*klev+1)&
94  &, padjd(klon,klev+1) , padju(klon,klev+1)&
95  &, pb(klon,nsil,klev+1),pbint(klon,klev+1)&
96  &, pbsur(klon,nsil) , pbtop(klon,nsil)&
97  &, pdisd(klon,klev+1) , pdisu(klon,klev+1)&
98  &, pemis(klon) , pemiw(klon)&
99  &, pgasur(klon,nipd,2), pgbsur(klon,nipd,2)&
100  &, pgatop(klon,nipd,2), pgbtop(klon,nipd,2)
101 
102 real_b :: pdwfsu(klon,nsil) , pfluc(klon,2,klev+1)
103 
104 !-----------------------------------------------------------------------
105 
106 !* 0.2 LOCAL ARRAYS
107 ! ------------
108 
109 real_b :: zbsur(klon,nsil)&
110  &, ztt(klon,ntra), ztt1(klon,ntra), ztt2(klon,ntra)&
111  &, zuu(klon,nua) , zcnsol(klon) , zcntop(klon)
112 
113 ! LOCAL INTEGER SCALARS
114 integer_m :: in, ja, jk, jl
115 
116 ! LOCAL REAL SCALARS
117 real_b :: zcntop1, zcntop2, zcntop3, zcntop4, zcntop5, zcntop6
118 
119 
120 !-----------------------------------------------------------------------
121 
122 !* 1. INITIALIZATION
123 ! --------------
124 
125 
126 !* 1.2 INITIALIZE TRANSMISSION FUNCTIONS
127 ! ---------------------------------
128 
129 DO ja=1,ntra
130  DO jl=kidia,kfdia
131  ztt(jl,ja)=_one_
132  ztt1(jl,ja)=_one_
133  ztt2(jl,ja)=_one_
134  ENDDO
135 ENDDO
136 
137 DO ja=1,nua
138  DO jl=kidia,kfdia
139  zuu(jl,ja)=_one_
140  ENDDO
141 ENDDO
142 
143 ! ------------------------------------------------------------------
144 
145 !* 2. VERTICAL INTEGRATION
146 ! --------------------
147 
148 
149 !* 2.3 EXCHANGE WITH TOP OF THE ATMOSPHERE
150 ! -----------------------------------
151 
152 DO jk = 1 , klev
153  in=(jk-1)*ng1p1+1
154 
155  DO ja=1,kuaer
156  DO jl=kidia,kfdia
157  zuu(jl,ja)=pabcu(jl,ja,in)
158  ENDDO
159  ENDDO
160 
161 
162  CALL lwtt &
163  &( kidia , kfdia , klon &
164  &, pgatop(1,1,1), pgbtop(1,1,1)&
165  &, zuu , ztt &
166  &)
167 
168  DO jl = kidia,kfdia
169  zcntop1=pbtop(jl,1)*ztt(jl,1) *ztt(jl,10)
170  zcntop2=pbtop(jl,2)*ztt(jl,2)*ztt(jl,7)*ztt(jl,11)
171  zcntop3=pbtop(jl,3)*ztt(jl,4)*ztt(jl,8)*ztt(jl,12)
172  zcntop4=pbtop(jl,4)*ztt(jl,5)*ztt(jl,9)*ztt(jl,13)
173  zcntop5=pbtop(jl,5)*ztt(jl,3) *ztt(jl,14)
174  zcntop6=pbtop(jl,6)*ztt(jl,6) *ztt(jl,15)
175  zcntop(jl)=zcntop1+zcntop2+zcntop3+zcntop4+zcntop5+zcntop6
176  pfluc(jl,2,jk)=zcntop(jl)-pbint(jl,jk)-pdisd(jl,jk)-padjd(jl,jk)
177  IF (jk == 1) THEN
178  pdwfsu(jl,1)=zcntop1-pb(jl,1,jk)-pdwfsu(jl,1)
179  pdwfsu(jl,2)=zcntop2-pb(jl,2,jk)-pdwfsu(jl,2)
180  pdwfsu(jl,3)=zcntop3-pb(jl,3,jk)-pdwfsu(jl,3)
181  pdwfsu(jl,4)=zcntop4-pb(jl,4,jk)-pdwfsu(jl,4)
182  pdwfsu(jl,5)=zcntop5-pb(jl,5,jk)-pdwfsu(jl,5)
183  pdwfsu(jl,6)=zcntop6-pb(jl,6,jk)-pdwfsu(jl,6)
184  ENDIF
185  ENDDO
186 
187 ENDDO
188 
189 jk = klev+1
190 in=(jk-1)*ng1p1+1
191 
192 DO jl = kidia,kfdia
193  zcntop(jl)= pbtop(jl,1)&
194  &+ pbtop(jl,2)&
195  &+ pbtop(jl,3)&
196  &+ pbtop(jl,4)&
197  &+ pbtop(jl,5)&
198  &+ pbtop(jl,6)
199  pfluc(jl,2,jk)=zcntop(jl)-pbint(jl,jk)-pdisd(jl,jk)-padjd(jl,jk)
200 ENDDO
201 
202 
203 !* 2.5 EXCHANGE WITH LOWER LIMIT
204 ! -------------------------
205 
206 jk = 1
207 in=(jk-1)*ng1p1+1
208 
209 DO jl = kidia,kfdia
210  zbsur(jl,1)=pbsur(jl,1)*pemis(jl) -(_one_-pemis(jl))*pdwfsu(jl,1)
211  zbsur(jl,2)=pbsur(jl,2)*pemis(jl) -(_one_-pemis(jl))*pdwfsu(jl,2)
212  zbsur(jl,3)=pbsur(jl,3)*pemiw(jl) -(_one_-pemiw(jl))*pdwfsu(jl,3)
213  zbsur(jl,4)=pbsur(jl,4)*pemiw(jl) -(_one_-pemiw(jl))*pdwfsu(jl,4)
214  zbsur(jl,5)=pbsur(jl,5)*pemis(jl) -(_one_-pemis(jl))*pdwfsu(jl,5)
215  zbsur(jl,6)=pbsur(jl,6)*pemis(jl) -(_one_-pemis(jl))*pdwfsu(jl,6)
216 
217  pfluc(jl,1,jk) = zbsur(jl,1)&
218  &+ zbsur(jl,2)&
219  &+ zbsur(jl,3)&
220  &+ zbsur(jl,4)&
221  &+ zbsur(jl,5)&
222  &+ zbsur(jl,6)
223 
224  zbsur(jl,1)=zbsur(jl,1)-pb(jl,1,1)
225  zbsur(jl,2)=zbsur(jl,2)-pb(jl,2,1)
226  zbsur(jl,3)=zbsur(jl,3)-pb(jl,3,1)
227  zbsur(jl,4)=zbsur(jl,4)-pb(jl,4,1)
228  zbsur(jl,5)=zbsur(jl,5)-pb(jl,5,1)
229  zbsur(jl,6)=zbsur(jl,6)-pb(jl,6,1)
230 ENDDO
231 
232 DO jk = 2 , klev+1
233  in=(jk-1)*ng1p1+1
234 
235  DO ja=1,kuaer
236  DO jl=kidia,kfdia
237  zuu(jl,ja)=pabcu(jl,ja,1)-pabcu(jl,ja,in)
238  ENDDO
239  ENDDO
240 
241 
242  CALL lwtt &
243  &( kidia , kfdia , klon &
244  &, pgasur(1,1,1), pgbsur(1,1,1)&
245  &, zuu, ztt &
246  &)
247 
248  DO jl = kidia,kfdia
249  zcnsol(jl)=zbsur(jl,1)*ztt(jl,1) *ztt(jl,10)&
250  &+zbsur(jl,2)*ztt(jl,2)*ztt(jl,7)*ztt(jl,11)&
251  &+zbsur(jl,3)*ztt(jl,4)*ztt(jl,8)*ztt(jl,12)&
252  &+zbsur(jl,4)*ztt(jl,5)*ztt(jl,9)*ztt(jl,13)&
253  &+zbsur(jl,5)*ztt(jl,3) *ztt(jl,14)&
254  &+zbsur(jl,6)*ztt(jl,6) *ztt(jl,15)
255  pfluc(jl,1,jk)=zcnsol(jl)+pbint(jl,jk)-pdisu(jl,jk)-padju(jl,jk)
256  ENDDO
257 
258 ENDDO
259 
260 ! ------------------------------------------------------------------
261 
262 RETURN
263 END SUBROUTINE lwvb
integer(kind=jpim) nipd
Definition: yoelw.F90:15
Definition: yoelw.F90:1
integer(kind=jpim) nsil
Definition: yoelw.F90:14
integer, save kidia
Definition: dimphy.F90:6
integer, save klon
Definition: dimphy.F90:3
integer(kind=jpim) nua
Definition: yoelw.F90:19
integer, save klev
Definition: dimphy.F90:7
subroutine lwvb(KIDIA, KFDIA, KLON, KLEV, KUAER, PABCU, PADJD, PADJU, PB, PBINT, PBSUR, PBTOP, PDISD, PDISU, PEMIS, PEMIW, PGASUR, PGBSUR, PGATOP, PGBTOP, PDWFSU, PFLUC)
Definition: lwvb.F90:9
integer, save kfdia
Definition: dimphy.F90:5
subroutine lwtt(KIDIA, KFDIA, KLON, PGA, PGB, PUU, PTT)
Definition: lwtt.F90:3
integer(kind=jpim) ng1p1
Definition: yoelw.F90:21
integer(kind=jpim) ntra
Definition: yoelw.F90:18