GCC Code Coverage Report


Directory: ./
File: rad/lwu.f90
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 141 0.0%
Branches: 0 44 0.0%

Line Branch Exec Source
1 !
2 ! $Id: lwu.F90 3666 2020-04-20 10:13:34Z lfalletti $
3 !
4 SUBROUTINE LWU &
5 & ( KIDIA, KFDIA, KLON, KLEV,&
6 & PAER , PCCO2, PDP , PPMB, PQOF , PTAVE, PVIEW, PWV,&
7 & PABCU &
8 & )
9
10 !**** *LWU* - LONGWAVE EFFECTIVE ABSORBER AMOUNTS
11
12 ! PURPOSE.
13 ! --------
14 ! COMPUTES ABSORBER AMOUNTS INCLUDING PRESSURE AND
15 ! TEMPERATURE EFFECTS
16
17 !** INTERFACE.
18 ! ----------
19
20 ! EXPLICIT ARGUMENTS :
21 ! --------------------
22 ! ==== INPUTS ===
23 ! PAER : (KLON,6,KLEV) ; OPTICAL THICKNESS OF THE AEROSOLS
24 ! PCCO2 : ; CONCENTRATION IN CO2 (PA/PA)
25 ! PDP : (KLON,KLEV) ; LAYER PRESSURE THICKNESS (PA)
26 ! PPMB : (KLON,KLEV+1) ; HALF LEVEL PRESSURE
27 ! PQOF : (KLON,KLEV) ; CONCENTRATION IN OZONE (PA/PA)
28 ! PTAVE : (KLON,KLEV) ; TEMPERATURE
29 ! PWV : (KLON,KLEV) ; SPECIFIC HUMIDITY PA/PA
30 ! PVIEW : (KLON) ; COSECANT OF VIEWING ANGLE
31 ! ==== OUTPUTS ===
32 ! PABCU :(KLON,NUA,3*KLEV+1); EFFECTIVE ABSORBER AMOUNTS
33
34 ! IMPLICIT ARGUMENTS : NONE
35 ! --------------------
36
37 ! METHOD.
38 ! -------
39
40 ! 1. COMPUTES THE PRESSURE AND TEMPERATURE WEIGHTED AMOUNTS OF
41 ! ABSORBERS.
42
43 ! EXTERNALS.
44 ! ----------
45
46 ! NONE
47
48 ! REFERENCE.
49 ! ----------
50
51 ! SEE RADIATION'S PART OF THE MODEL'S DOCUMENTATION AND
52 ! ECMWF RESEARCH DEPARTMENT DOCUMENTATION OF THE IFS
53
54 ! AUTHOR.
55 ! -------
56 ! JEAN-JACQUES MORCRETTE *ECMWF*
57
58 ! MODIFICATIONS.
59 ! --------------
60 ! ORIGINAL : 89-07-14
61 ! JJ Morcrette 97-04-18 Revised Continuum + Clean-up
62 ! M.Hamrud 01-Oct-2003 CY28 Cleaning
63
64 !-----------------------------------------------------------------------
65
66 USE PARKIND1 ,ONLY : JPIM ,JPRB
67 USE YOMHOOK ,ONLY : LHOOK, DR_HOOK
68
69 USE YOMCST , ONLY : RG
70 USE YOESW , ONLY : RAER
71 USE YOELW , ONLY : NSIL ,NUA ,NG1 ,NG1P1 ,&
72 & ALWT ,BLWT ,RO3T ,RT1 ,TREF ,&
73 & RVGCO2 ,RVGH2O ,RVGO3
74 !USE YOERDI , ONLY : RCH4 ,RN2O ,RCFC11 ,RCFC12
75 USE YOERDU , ONLY : R10E ,REPSCO ,REPSCQ
76
77
78 IMPLICIT NONE
79
80 INTEGER(KIND=JPIM),INTENT(IN) :: KLON
81 INTEGER(KIND=JPIM),INTENT(IN) :: KLEV
82 INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA
83 INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA
84 REAL(KIND=JPRB) ,INTENT(IN) :: PAER(KLON,6,KLEV)
85 REAL(KIND=JPRB) ,INTENT(IN) :: PCCO2
86 REAL(KIND=JPRB) ,INTENT(IN) :: PDP(KLON,KLEV)
87 REAL(KIND=JPRB) ,INTENT(IN) :: PPMB(KLON,KLEV+1)
88 REAL(KIND=JPRB) ,INTENT(IN) :: PQOF(KLON,KLEV)
89 REAL(KIND=JPRB) ,INTENT(IN) :: PTAVE(KLON,KLEV)
90 REAL(KIND=JPRB) ,INTENT(IN) :: PVIEW(KLON)
91 REAL(KIND=JPRB) ,INTENT(IN) :: PWV(KLON,KLEV)
92 REAL(KIND=JPRB) ,INTENT(OUT) :: PABCU(KLON,NUA,3*KLEV+1)
93
94 ! $Id: clesphys.h 3435 2019-01-22 15:21:59Z fairhead $
95 !
96 ! ATTENTION!!!!: ce fichier include est compatible format fixe/format libre
97 ! veillez \`a n'utiliser que des ! pour les commentaires
98 ! et \`a bien positionner les & des lignes de continuation
99 ! (les placer en colonne 6 et en colonne 73)
100 !
101 !..include cles_phys.h
102 !
103 INTEGER iflag_cycle_diurne
104 LOGICAL soil_model,new_oliq,ok_orodr,ok_orolf
105 LOGICAL ok_limitvrai
106 LOGICAL ok_all_xml
107 LOGICAL ok_lwoff
108 INTEGER nbapp_rad, iflag_con, nbapp_cv, nbapp_wk, iflag_ener_conserv
109 REAL co2_ppm, co2_ppm0, solaire
110 !FC
111 REAL Cd_frein
112 LOGICAL ok_suntime_rrtm
113 REAL(kind=8) RCO2, RCH4, RN2O, RCFC11, RCFC12
114 REAL(kind=8) RCO2_act, RCH4_act, RN2O_act, RCFC11_act, RCFC12_act
115 REAL(kind=8) CH4_ppb, N2O_ppb, CFC11_ppt, CFC12_ppt
116 !IM ajout CFMIP2/CMIP5
117 REAL(kind=8) RCO2_per,RCH4_per,RN2O_per,RCFC11_per,RCFC12_per
118 REAL(kind=8) CH4_ppb_per,N2O_ppb_per,CFC11_ppt_per,CFC12_ppt_per
119
120 !OM ---> correction du bilan d'eau global
121 !OM Correction sur precip KE
122 REAL cvl_corr
123 !OM Fonte calotte dans bilan eau
124 LOGICAL ok_lic_melt
125 !OB Depot de vapeur d eau sur la calotte pour le bilan eau
126 LOGICAL ok_lic_cond
127
128 !IM simulateur ISCCP
129 INTEGER top_height, overlap
130 !IM seuils cdrm, cdrh
131 REAL cdmmax, cdhmax
132 !IM param. stabilite s/ terres et en dehors
133 REAL ksta, ksta_ter, f_ri_cd_min
134 !IM ok_kzmin : clef calcul Kzmin dans la CL de surface cf FH
135 LOGICAL ok_kzmin
136 !IM, MAFo fmagic, pmagic : parametres - additionnel et multiplicatif -
137 ! pour regler l albedo sur ocean
138 REAL pbl_lmixmin_alpha
139 REAL fmagic, pmagic
140 ! Hauteur (imposee) du contenu en eau du sol
141 REAL qsol0,albsno0,evap0
142 ! Frottement au sol (Cdrag)
143 Real f_cdrag_ter,f_cdrag_oce
144 REAL min_wind_speed,f_gust_wk,f_gust_bl,f_qsat_oce,f_z0qh_oce
145 REAL z0m_seaice,z0h_seaice
146 INTEGER iflag_gusts,iflag_z0_oce
147
148 ! Rugoro
149 Real f_rugoro,z0min
150
151 ! tau_gl : constante de rappel de la temperature a la surface de la glace
152 REAL tau_gl
153
154 !IM lev_histhf : niveau sorties 6h
155 !IM lev_histday : niveau sorties journalieres
156 !IM lev_histmth : niveau sorties mensuelles
157 !IM lev_histdayNMC : on peut sortir soit sur 8 (comme AR5) ou bien
158 ! sur 17 niveaux de pression
159 INTEGER lev_histhf, lev_histday, lev_histmth
160 INTEGER lev_histdayNMC
161 Integer lev_histins, lev_histLES
162 !IM ok_histNMC : sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)
163 !IM freq_outNMC : frequences de sortie fichiers niveaux de pression (histmthNMC, histdayNMC, histhfNMC)
164 !IM freq_calNMC : frequences de calcul fis. hist*NMC.nc
165 LOGICAL ok_histNMC(3)
166 INTEGER levout_histNMC(3)
167 REAL freq_outNMC(3) , freq_calNMC(3)
168 CHARACTER(len=4) type_run
169 ! aer_type: pour utiliser un fichier constant dans readaerosol
170 CHARACTER(len=8) :: aer_type
171 LOGICAL ok_regdyn
172 REAL lonmin_ins, lonmax_ins, latmin_ins, latmax_ins
173 REAL ecrit_ins, ecrit_hf, ecrit_day
174 REAL ecrit_mth, ecrit_tra, ecrit_reg
175 REAL ecrit_LES
176 REAL freq_ISCCP, ecrit_ISCCP
177 REAL freq_COSP, freq_AIRS
178 LOGICAL :: ok_cosp,ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP
179 LOGICAL :: ok_airs
180 INTEGER :: ip_ebil_phy, iflag_rrtm, iflag_ice_thermo, NSW, iflag_albedo
181 LOGICAL :: ok_chlorophyll
182 LOGICAL :: ok_strato
183 LOGICAL :: ok_hines, ok_gwd_rando
184 LOGICAL :: ok_qch4
185 LOGICAL :: ok_conserv_q
186 LOGICAL :: adjust_tropopause
187 LOGICAL :: ok_daily_climoz
188 ! flag to bypass or not the phytrac module
189 INTEGER :: iflag_phytrac
190
191 COMMON/clesphys/ &
192 ! REAL FIRST
193 & co2_ppm, solaire &
194 & , RCO2, RCH4, RN2O, RCFC11, RCFC12 &
195 & , RCO2_act, RCH4_act, RN2O_act, RCFC11_act, RCFC12_act &
196 & , RCO2_per, RCH4_per, RN2O_per, RCFC11_per, RCFC12_per &
197 & , CH4_ppb, N2O_ppb, CFC11_ppt, CFC12_ppt &
198 & , CH4_ppb_per, N2O_ppb_per, CFC11_ppt_per, CFC12_ppt_per &
199 & , cdmmax,cdhmax,ksta,ksta_ter,f_ri_cd_min,pbl_lmixmin_alpha &
200 & , fmagic, pmagic &
201 & , f_cdrag_ter,f_cdrag_oce,f_rugoro,z0min,tau_gl &
202 & , min_wind_speed,f_gust_wk,f_gust_bl,f_qsat_oce,f_z0qh_oce &
203 & , z0m_seaice,z0h_seaice &
204 & , freq_outNMC, freq_calNMC &
205 & , lonmin_ins, lonmax_ins, latmin_ins, latmax_ins &
206 & , freq_ISCCP, ecrit_ISCCP, freq_COSP, freq_AIRS &
207 & , cvl_corr &
208 & , qsol0,albsno0,evap0 &
209 & , co2_ppm0 &
210 !FC
211 & , Cd_frein &
212 & , ecrit_LES &
213 & , ecrit_ins, ecrit_hf, ecrit_day &
214 & , ecrit_mth, ecrit_tra, ecrit_reg &
215 ! THEN INTEGER AND LOGICALS
216 & , top_height &
217 & , iflag_cycle_diurne, soil_model, new_oliq &
218 & , ok_orodr, ok_orolf, ok_limitvrai, nbapp_rad &
219 & , iflag_con, nbapp_cv, nbapp_wk &
220 & , iflag_ener_conserv &
221 & , ok_suntime_rrtm &
222 & , overlap &
223 & , ok_kzmin &
224 & , lev_histhf, lev_histday, lev_histmth &
225 & , lev_histins, lev_histLES, lev_histdayNMC, levout_histNMC &
226 & , ok_histNMC &
227 & , type_run, ok_regdyn, ok_cosp, ok_airs &
228 & , ok_mensuelCOSP,ok_journeCOSP,ok_hfCOSP &
229 & , ip_ebil_phy &
230 & , iflag_gusts ,iflag_z0_oce &
231 & , ok_lic_melt, ok_lic_cond, aer_type &
232 & , iflag_rrtm, ok_strato,ok_hines, ok_qch4 &
233 & , iflag_ice_thermo, ok_gwd_rando, NSW, iflag_albedo &
234 & , ok_chlorophyll,ok_conserv_q, adjust_tropopause &
235 & , ok_daily_climoz, ok_all_xml, ok_lwoff &
236 & , iflag_phytrac
237
238 save /clesphys/
239 !$OMP THREADPRIVATE(/clesphys/)
240 !-----------------------------------------------------------------------
241
242 !* 0.1 ARGUMENTS
243 ! ---------
244
245 !-----------------------------------------------------------------------
246
247 ! ------------
248 REAL(KIND=JPRB) :: ZABLY(KLON,7,3*KLEV+1) , ZDPM(KLON,3*KLEV)&
249 & , ZDUC(KLON, 3*KLEV+1) , ZFACT(KLON)&
250 & , ZUPM(KLON,3*KLEV)
251 REAL(KIND=JPRB) :: ZPHIO(KLON),ZPSC2(KLON) , ZPSC3(KLON), ZPSH1(KLON)&
252 & , ZPSH2(KLON),ZPSH3(KLON) , ZPSH4(KLON), ZPSH5(KLON)&
253 & , ZPSH6(KLON),ZPSIO(KLON) , ZTCON(KLON)&
254 & , ZPHM6(KLON),ZPSM6(KLON) , ZPHN6(KLON), ZPSN6(KLON)
255 REAL(KIND=JPRB) :: ZSSIG(KLON,3*KLEV+1) , ZTAVI(KLON)&
256 & , ZUAER(KLON,NSIL) , ZXOZ(KLON) , ZXWV(KLON)
257
258 INTEGER(KIND=JPIM) :: IAE1, IAE2, IAE3, IC, ICP1, IG1, IJ, IJPN,&
259 & IKIP1, IKJ, IKJP, IKJPN, IKJR, IKL, JA, JAE, &
260 & JK, JKI, JKK, JL
261
262 REAL(KIND=JPRB) :: ZALUP, ZCAC8, ZCAH1, ZCAH2, ZCAH3, ZCAH4,&
263 & ZCAH5, ZCAH6, ZCBC8, ZCBH1, ZCBH2, ZCBH3, &
264 & ZCBH4, ZCBH5, ZCBH6, ZDIFF, ZDPMG, ZDPMP0, &
265 & ZFPPW, ZTX, ZTX2, ZU6, ZUP, ZUPMCO2, ZUPMG, &
266 & ZUPMH2O, ZUPMO3, ZZABLY
267 REAL(KIND=JPRB) :: ZHOOK_HANDLE
268
269
270 !-----------------------------------------------------------------------
271
272 !* 1. INITIALIZATION
273 ! --------------
274
275 !-----------------------------------------------------------------------
276
277 !* 2. PRESSURE OVER GAUSS SUB-LEVELS
278 ! ------------------------------
279
280 IF (LHOOK) CALL DR_HOOK('LWU',0,ZHOOK_HANDLE)
281 DO JL = KIDIA,KFDIA
282 ZSSIG(JL, 1 ) = PPMB(JL,1) * 100._JPRB
283 ENDDO
284
285 DO JK = 1 , KLEV
286 IKJ=(JK-1)*NG1P1+1
287 IKJR = IKJ
288 IKJP = IKJ + NG1P1
289 DO JL = KIDIA,KFDIA
290 ZSSIG(JL,IKJP)=PPMB(JL,JK+1)* 100._JPRB
291 ENDDO
292 DO IG1=1,NG1
293 IKJ=IKJ+1
294 DO JL = KIDIA,KFDIA
295 ZSSIG(JL,IKJ)= (ZSSIG(JL,IKJR) + ZSSIG(JL,IKJP)) * 0.5_JPRB &
296 & + RT1(IG1) * (ZSSIG(JL,IKJP) - ZSSIG(JL,IKJR)) * 0.5_JPRB
297 ENDDO
298 ENDDO
299 ENDDO
300
301 !-----------------------------------------------------------------------
302
303 !* 4. PRESSURE THICKNESS AND MEAN PRESSURE OF SUB-LAYERS
304 ! --------------------------------------------------
305
306 DO JKI=1,3*KLEV
307 IKIP1=JKI+1
308 DO JL = KIDIA,KFDIA
309 ZUPM(JL,JKI)=(ZSSIG(JL,JKI)+ZSSIG(JL,IKIP1))*0.5_JPRB
310 ZDPM(JL,JKI)=(ZSSIG(JL,JKI)-ZSSIG(JL,IKIP1))/(10._JPRB*RG)
311 ENDDO
312 ENDDO
313
314 DO JK = 1 , KLEV
315 IKL = KLEV+1 - JK
316 DO JL = KIDIA,KFDIA
317 ZXWV(JL) = MAX (PWV(JL,IKL) , REPSCQ )
318 ZXOZ(JL) = MAX (PQOF(JL,IKL) / PDP(JL,IKL) , REPSCO )
319 ENDDO
320 IKJ=(JK-1)*NG1P1+1
321 IKJPN=IKJ+NG1
322 DO JKK=IKJ,IKJPN
323 DO JL = KIDIA,KFDIA
324 ZDPMG = ZDPM(JL,JKK)
325 ZDPMP0 = ZDPMG / 101325._JPRB
326 ZUPMG = ZUPM(JL,JKK) * ZDPMP0
327 ZUPMCO2 = ( ZUPM(JL,JKK) + RVGCO2 ) * ZDPMP0
328 ZUPMH2O = ( ZUPM(JL,JKK) + RVGH2O ) * ZDPMP0
329 ZUPMO3 = ( ZUPM(JL,JKK) + RVGO3 ) * ZDPMP0
330 ZDUC(JL,JKK) = ZDPMG
331 ZABLY(JL,6,JKK) = ZXOZ(JL) * ZDPMG
332 ZABLY(JL,7,JKK) = ZXOZ(JL) * ZUPMO3
333 ZU6 = ZXWV(JL) * ZUPMG
334 ZFPPW = 1.6078_JPRB * ZXWV(JL) / (1.0_JPRB+0.608_JPRB*ZXWV(JL))
335 ZABLY(JL,1,JKK) = ZXWV(JL) * ZUPMH2O
336 ZABLY(JL,5,JKK) = ZU6 * ZFPPW
337 ZABLY(JL,4,JKK) = ZU6 * (1.0_JPRB-ZFPPW)
338 ZABLY(JL,3,JKK) = PCCO2 * ZUPMCO2
339 ZABLY(JL,2,JKK) = PCCO2 * ZDPMG
340 ENDDO
341 ENDDO
342 ENDDO
343
344 !-----------------------------------------------------------------------
345
346 !* 5. CUMULATIVE ABSORBER AMOUNTS FROM TOP OF ATMOSPHERE
347 ! --------------------------------------------------
348
349 DO JA = 1, NUA
350 DO JL = KIDIA,KFDIA
351 PABCU(JL,JA,3*KLEV+1) = 0.0_JPRB
352 ENDDO
353 ENDDO
354
355 DO JK = 1 , KLEV
356 IJ=(JK-1)*NG1P1+1
357 IJPN=IJ+NG1
358 IKL=KLEV+1-JK
359
360 !* 5.1 CUMULATIVE AEROSOL AMOUNTS FROM TOP OF ATMOSPHERE
361 ! --------------------------------------------------
362 ! -- NB: 'PAER' AEROSOLS ARE ENTERED FROM TOP TO BOTTOM
363
364 IAE1=3*KLEV+1-IJ
365 IAE2=3*KLEV+1-(IJ+1)
366 IAE3=3*KLEV+1-IJPN
367 ! print *,'IAE1= ',IAE1
368 ! print *,'IAE2= ',IAE2
369 ! print *,'IAE3= ',IAE3
370 ! print *,'KIDIA= ',KIDIA
371 ! print *,'KFDIA= ',KFDIA
372 ! print *,'KLEV= ',KLEV
373 DO JAE=1,6
374 DO JL = KIDIA,KFDIA
375 ! print *,'JL= ',JL,'-JAE= ',JAE,'-JK= ',JK,'-NSIL= ',NSIL
376 ZUAER(JL,JAE) =&
377 & (RAER(JAE,1)*PAER(JL,1,JK)+RAER(JAE,2)*PAER(JL,2,JK)&
378 & +RAER(JAE,3)*PAER(JL,3,JK)+RAER(JAE,4)*PAER(JL,4,JK)&
379 & +RAER(JAE,5)*PAER(JL,5,JK)+RAER(JAE,6)*PAER(JL,6,JK))&
380 & /(ZDUC(JL,IAE1)+ZDUC(JL,IAE2)+ZDUC(JL,IAE3))
381 ENDDO
382 ENDDO
383
384 !* 5.2 INTRODUCES TEMPERATURE EFFECTS ON ABSORBER AMOUNTS
385 ! --------------------------------------------------
386
387 DO JL = KIDIA,KFDIA
388 ZTAVI(JL)=PTAVE(JL,IKL)
389 ZFACT(JL)=1.0_JPRB-ZTAVI(JL)/296._JPRB
390 ZTCON(JL)=EXP(6.08_JPRB*(296._JPRB/ZTAVI(JL)-1.0_JPRB))
391 ! ZTCON(JL)=EXP(6.08*ZFACT(JL))
392 ZTX=ZTAVI(JL)-TREF
393 ZTX2=ZTX*ZTX
394 ZZABLY = ZABLY(JL,1,IAE1)+ZABLY(JL,1,IAE2)+ZABLY(JL,1,IAE3)
395 ZUP=MIN( MAX( 0.5_JPRB*R10E*LOG( ZZABLY ) + 5._JPRB, 0.0_JPRB), 6.0_JPRB)
396 ZCAH1=ALWT(1,1)+ZUP*(ALWT(1,2)+ZUP*(ALWT(1,3)))
397 ZCBH1=BLWT(1,1)+ZUP*(BLWT(1,2)+ZUP*(BLWT(1,3)))
398 ZPSH1(JL)=EXP( ZCAH1 * ZTX + ZCBH1 * ZTX2 )
399 ZCAH2=ALWT(2,1)+ZUP*(ALWT(2,2)+ZUP*(ALWT(2,3)))
400 ZCBH2=BLWT(2,1)+ZUP*(BLWT(2,2)+ZUP*(BLWT(2,3)))
401 ZPSH2(JL)=EXP( ZCAH2 * ZTX + ZCBH2 * ZTX2 )
402 ZCAH3=ALWT(3,1)+ZUP*(ALWT(3,2)+ZUP*(ALWT(3,3)))
403 ZCBH3=BLWT(3,1)+ZUP*(BLWT(3,2)+ZUP*(BLWT(3,3)))
404 ZPSH3(JL)=EXP( ZCAH3 * ZTX + ZCBH3 * ZTX2 )
405 ZCAH4=ALWT(4,1)+ZUP*(ALWT(4,2)+ZUP*(ALWT(4,3)))
406 ZCBH4=BLWT(4,1)+ZUP*(BLWT(4,2)+ZUP*(BLWT(4,3)))
407 ZPSH4(JL)=EXP( ZCAH4 * ZTX + ZCBH4 * ZTX2 )
408 ZCAH5=ALWT(5,1)+ZUP*(ALWT(5,2)+ZUP*(ALWT(5,3)))
409 ZCBH5=BLWT(5,1)+ZUP*(BLWT(5,2)+ZUP*(BLWT(5,3)))
410 ZPSH5(JL)=EXP( ZCAH5 * ZTX + ZCBH5 * ZTX2 )
411 ZCAH6=ALWT(6,1)+ZUP*(ALWT(6,2)+ZUP*(ALWT(6,3)))
412 ZCBH6=BLWT(6,1)+ZUP*(BLWT(6,2)+ZUP*(BLWT(6,3)))
413 ZPSH6(JL)=EXP( ZCAH6 * ZTX + ZCBH6 * ZTX2 )
414 ZPHM6(JL)=EXP(-5.81E-4_JPRB * ZTX - 1.13E-6_JPRB * ZTX2 )
415 ZPSM6(JL)=EXP(-5.57E-4_JPRB * ZTX - 3.30E-6_JPRB * ZTX2 )
416 ZPHN6(JL)=EXP(-3.46E-5_JPRB * ZTX + 2.05E-7_JPRB * ZTX2 )
417 ZPSN6(JL)=EXP( 3.70E-3_JPRB * ZTX - 2.30E-6_JPRB * ZTX2 )
418 ENDDO
419
420 DO JL = KIDIA,KFDIA
421 ZTAVI(JL)=PTAVE(JL,IKL)
422 ZTX=ZTAVI(JL)-TREF
423 ZTX2=ZTX*ZTX
424 ZZABLY = ZABLY(JL,3,IAE1)+ZABLY(JL,3,IAE2)+ZABLY(JL,3,IAE3)
425 ZALUP = R10E * LOG ( ZZABLY )
426 ZUP = MAX( 0.0_JPRB , 5.0_JPRB + 0.5_JPRB * ZALUP )
427 ZPSC2(JL) = (ZTAVI(JL)/TREF) ** ZUP
428 ZCAC8=ALWT(8,1)+ZUP*(ALWT(8,2)+ZUP*(ALWT(8,3)))
429 ZCBC8=BLWT(8,1)+ZUP*(BLWT(8,2)+ZUP*(BLWT(8,3)))
430 ZPSC3(JL)=EXP( ZCAC8 * ZTX + ZCBC8 * ZTX2 )
431 ZPHIO(JL) = EXP( RO3T(1) * ZTX + RO3T(2) * ZTX2)
432 ZPSIO(JL) = EXP( 2.0_JPRB* (RO3T(3)*ZTX+RO3T(4)*ZTX2))
433 ENDDO
434
435 DO JKK=IJ,IJPN
436 IC=3*KLEV+1-JKK
437 ICP1=IC+1
438 DO JL = KIDIA,KFDIA
439 ZDIFF = PVIEW(JL)
440 !- H2O continuum
441 PABCU(JL,10,IC)=PABCU(JL,10,ICP1)+ ZABLY(JL,4,IC) *ZDIFF
442 PABCU(JL,11,IC)=PABCU(JL,11,ICP1)+ ZABLY(JL,5,IC)*ZTCON(JL)*ZDIFF
443 !- O3
444 PABCU(JL,12,IC)=PABCU(JL,12,ICP1)+ ZABLY(JL,6,IC)*ZPHIO(JL)*ZDIFF
445 PABCU(JL,13,IC)=PABCU(JL,13,ICP1)+ ZABLY(JL,7,IC)*ZPSIO(JL)*ZDIFF
446 !- CO2
447 PABCU(JL,7,IC)=PABCU(JL,7,ICP1)+ ZABLY(JL,3,IC)*ZPSC2(JL)*ZDIFF
448 PABCU(JL,8,IC)=PABCU(JL,8,ICP1)+ ZABLY(JL,3,IC)*ZPSC3(JL)*ZDIFF
449 PABCU(JL,9,IC)=PABCU(JL,9,ICP1)+ ZABLY(JL,3,IC)*ZPSC3(JL)*ZDIFF
450 !- H2O
451 PABCU(JL,1,IC)=PABCU(JL,1,ICP1)+ ZABLY(JL,1,IC)*ZPSH1(JL)
452 PABCU(JL,2,IC)=PABCU(JL,2,ICP1)+ ZABLY(JL,1,IC)*ZPSH2(JL)
453 PABCU(JL,3,IC)=PABCU(JL,3,ICP1)+ ZABLY(JL,1,IC)*ZPSH5(JL)*ZDIFF
454 PABCU(JL,4,IC)=PABCU(JL,4,ICP1)+ ZABLY(JL,1,IC)*ZPSH3(JL)
455 PABCU(JL,5,IC)=PABCU(JL,5,ICP1)+ ZABLY(JL,1,IC)*ZPSH4(JL)
456 PABCU(JL,6,IC)=PABCU(JL,6,ICP1)+ ZABLY(JL,1,IC)*ZPSH6(JL)*ZDIFF
457 !- aerosols
458 PABCU(JL,14,IC)=PABCU(JL,14,ICP1)+ ZUAER(JL,1) *ZDUC(JL,IC)*ZDIFF
459 PABCU(JL,15,IC)=PABCU(JL,15,ICP1)+ ZUAER(JL,2) *ZDUC(JL,IC)*ZDIFF
460 PABCU(JL,16,IC)=PABCU(JL,16,ICP1)+ ZUAER(JL,3) *ZDUC(JL,IC)*ZDIFF
461 PABCU(JL,17,IC)=PABCU(JL,17,ICP1)+ ZUAER(JL,4) *ZDUC(JL,IC)*ZDIFF
462 PABCU(JL,18,IC)=PABCU(JL,18,ICP1)+ ZUAER(JL,5) *ZDUC(JL,IC)*ZDIFF
463 !- CH4
464 PABCU(JL,19,IC)=PABCU(JL,19,ICP1)&
465 & + ZABLY(JL,2,IC)*RCH4/PCCO2*ZPHM6(JL)*ZDIFF
466 PABCU(JL,20,IC)=PABCU(JL,20,ICP1)&
467 & + ZABLY(JL,3,IC)*RCH4/PCCO2*ZPSM6(JL)*ZDIFF
468 !- N2O
469 PABCU(JL,21,IC)=PABCU(JL,21,ICP1)&
470 & + ZABLY(JL,2,IC)*RN2O/PCCO2*ZPHN6(JL)*ZDIFF
471 PABCU(JL,22,IC)=PABCU(JL,22,ICP1)&
472 & + ZABLY(JL,3,IC)*RN2O/PCCO2*ZPSN6(JL)*ZDIFF
473 !- CFC11
474 PABCU(JL,23,IC)=PABCU(JL,23,ICP1)&
475 & + ZABLY(JL,2,IC)*RCFC11/PCCO2 *ZDIFF
476 !- CFC12
477 PABCU(JL,24,IC)=PABCU(JL,24,ICP1)&
478 & + ZABLY(JL,2,IC)*RCFC12/PCCO2 *ZDIFF
479 ENDDO
480 ENDDO
481
482 ENDDO
483 ! print *,'END OF LWU'
484
485
486
487 !-----------------------------------------------------------------------
488
489 IF (LHOOK) CALL DR_HOOK('LWU',1,ZHOOK_HANDLE)
490 END SUBROUTINE LWU
491