Newer
Older

WAUTELET Philippe
committed
!MNH_LIC Copyright 1994-2019 CNRS, Meteo-France and Universite Paul Sabatier
!MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence

WAUTELET Philippe
committed
!MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
!MNH_LIC for details. version 1.
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
!-----------------------------------------------------------------
! ##########################
MODULE MODI_AEROZON
! ##########################
!
INTERFACE
SUBROUTINE AEROZON(PPABST,PTHT,PTSRAD,PLAT,PLON,TPDTCUR,TPDTEXP, &
KDLON,KFLEV,HAER,KAER,KSTATM, &
PSINDEL,PCOSDEL,PTSIDER,PCORSOL, &
PSTATM,POZON, PAER)
!
USE MODD_TIME
!
CHARACTER (LEN=*), INTENT(IN) :: HAER ! aerosol optical thickness climatology
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST! pressure
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT !Temperature
REAL, DIMENSION(:,:), INTENT(IN) :: PTSRAD ! surface radiative temperature
REAL, DIMENSION(:,:), INTENT(IN) :: PLAT, PLON ! arrays of latitude-longitude
!
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time
TYPE (DATE_TIME), INTENT(IN) :: TPDTEXP ! Current date and time
!
INTEGER, INTENT(IN) :: KDLON ! number of columns where the radiation
! calculations are performed
INTEGER, INTENT(IN) :: KFLEV ! number of vertical levels where the radiation
! calculations are performed
INTEGER, INTENT(IN) :: KAER ! number of AERosol classes
INTEGER, INTENT(IN) :: KSTATM ! index of the STAndard ATMosphere level just
! above the model top
REAL, INTENT(OUT) :: PSINDEL ! sine of the solar declination angle
REAL, INTENT(OUT) :: PCOSDEL ! cosine of the solar declination angle
REAL, INTENT(OUT) :: PTSIDER ! sideral decimal time correction
REAL, INTENT(OUT) :: PCORSOL ! daily solar constant correction
!
REAL, DIMENSION(:,:), INTENT(IN) :: PSTATM ! working standard atmosphere
!
REAL, DIMENSION(:,:,:), POINTER :: POZON ! ozone mixing ratio ( from climato.)
REAL, DIMENSION(:,:,:,:), POINTER :: PAER ! aerosols optical thickness (from climato)
!
END SUBROUTINE AEROZON
!
END INTERFACE
!
END MODULE MODI_AEROZON
!
! #################################################################
SUBROUTINE AEROZON(PPABST,PTHT,PTSRAD,PLAT,PLON,TPDTCUR,TPDTEXP, &
KDLON,KFLEV,HAER,KAER,KSTATM, &
PSINDEL,PCOSDEL,PTSIDER,PCORSOL, &
PSTATM,POZON, PAER)
! ###############################################################
!
!!**** *AEROZON * - initialisation for ECMWF radiation scheme in the MesoNH framework
!!
!! PURPOSE
!! -------
!! Basically the same purpose as ini_radiations but only for aerosols and
!! ozon distribution.
!!
!!** METHOD
!! ------
!! The formulae of astronomy are taken from Paltridge and Platt (1976).
!! The latitudinal and seasonal dependences for the choice of the standard
!! atmosphere is straightforward.
!! The set up of ECMWF radiation package is mainly done in the "ini_radconf" routine
!! in function of defined options ( eg use of RRTM for LW).
!! Ozone field and Aerosols optical thickness are defined through specific
!! climatologies. For aerosols distribution set up, several option are allowed :
!! 1) in function of underlying cover types ( land, sea, desert, town)
!! 2) using the ECMWF global distribution of Tanre (1984) interpolated on the domain
!! The carbon dioxide concentration is homogeneously distributed at 360 ppm. Note that
!! other active gaz are directly initialised in ECMWF Package
!! Finally, the radiative tendency and the short and long waves surface
!! fluxes are read or set to 0 and also the instants at which full or
!! partial radiations' call has been performed.
!!
!! EXTERNAL
!! --------
!!
!! Subroutine INI_STAND_ATM : Initialization of 5 standard atmosphere
!! Subroutine AEROZON : Initialization of ECMWF radiation package constant
!! CAUTION: the following routine do not use the MNH norm
!! Subroutine SUECOZC : ozone climatology loading
!! Subroutine RADOZC : ozone climatology interpolation
!! Subroutine INI_HOR_AERCLIM : aerosol climatology : horizontal distribution on domain
!! Subroutine SUAERV : aerosol climatology : vertical distribution
!! Subroutine RADAER : interpolation on domain
!! these routine use ECMWF specific module "yo===="
!! END CAUTION
!! GET_DIM_EXT_ll : get extended sub-domain sizes
!! GET_INDICE_ll : get physical sub-domain bounds
!! GET_GLOBALDIMS_ll : get physical global domain sizes
!! REDUCESUM_ll : sum into a scalar variable
!!
!! IMPLICIT ARGUMENTS
!! ------------------
!!
!! Use of "yo===" ECMWF radiation package specific modules for climatologies
!! initialisation
!! Module MODD_CONF : define model configuration
!! LCARTESIAN : knowledge of PLAT and PLON
!! L2D : bidimensionnal case
!! LFLAT : flat terrain
!! CCONF : temporal configuration START or RESTART
!! Module MODD_CST : define constants
!! XPI : pi
!! XMD : molar mass of dry air
!! XDAY: length of the day
!! Module MODD_GRID : define the projection parameters
!! XLAT0 : reference latitude
!! XLON0 : reference longitude
!! Module MODD_PARAMETERS : parameter variables
!! JPVEXT : Vertical EXTernal point number
!! Module MODD_STAND_ATM : contains 5 standard atmospheres
!! XSTROATM : standard tropical atmosphere
!! XSMLSATM : standard mid-latitudes summer atmosphere
!! XSMLWATM : standard mid-latitudes winter atmosphere
!! XSPOSATM : standard polar summer atmosphere
!! XSPOWATM : standard polar winter atmosphere
!!
!! REFERENCE
!! ---------
!! ECMWF IFS radiation documentation
!! Book2 of documentation ( routine AEROZON )
!! Paltridge, G.W. and Platt, C.M.R. (1976) in "Radiative Processes
!! in Meteorology and Climatology", Elsevier, New-York
!!
!! AUTHOR
!! ------
!! P. Peyrille
!!
!! MODIFICATIONS
!! -------------
!! (P.Peyrille) 20/07/04 : add LFIX_DAT to have perpetual day

ESCOBAR Juan
committed
!! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4

WAUTELET Philippe
committed
! P. Wautelet 26/04/2019: replace non-standard FLOAT function by REAL function
!-------------------------------------------------------------------------------
!
!* 0. DECLARATIONS
! ------------
!ECMWF radiation scheme specific modules
!

ESCOBAR Juan
committed
USE PARKIND1 , ONLY : JPRB
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
USE YOEAERD , ONLY : RCAEOPS ,RCAEOPL ,RCAEOPU ,RCAEOPD ,RCTRBGA ,&
RCVOBGA ,RCSTBGA ,RCTRPT ,RCAEADM ,RCAEROS ,&
RCAEADK
!
!MESO-NH modules
!
USE MODD_CONF
USE MODD_CST
USE MODD_GRID
USE MODD_PARAMETERS
USE MODD_STAND_ATM
USE MODD_TIME
USE MODD_GROUND_PAR
USE MODD_PARAM_RAD_n, ONLY: LFIX_DAT
!
USE MODE_ll
!
USE MODI_SHUMAN
USE MODI_INI_RADCONF
USE MODI_INI_HOR_AERCLIM
USE MODI_SUECOZC
USE MODI_RADOZC
USE MODI_SUAERV
USE MODI_RADAER
!
IMPLICIT NONE
!
!* 0.1 Declarations of dummy arguments :
!
CHARACTER (LEN=*), INTENT(IN) :: HAER ! aerosol optical thickness climatology
!
REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST! pressure
REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT !Temperature
REAL, DIMENSION(:,:), INTENT(IN) :: PTSRAD ! surface radiative temperature
REAL, DIMENSION(:,:), INTENT(IN) :: PLAT, PLON ! arrays of latitude-longitude
!
TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time
TYPE (DATE_TIME), INTENT(IN) :: TPDTEXP ! Current date and time
!
INTEGER, INTENT(IN) :: KDLON ! number of columns where the radiation
! calculations are performed
INTEGER, INTENT(IN) :: KFLEV ! number of vertical levels where the radiation
! calculations are performed
INTEGER, INTENT(IN) :: KAER ! number of AERosol classes
INTEGER, INTENT(IN) :: KSTATM ! index of the STAndard ATMosphere level just
! above the model top
REAL, INTENT(OUT) :: PSINDEL ! sine of the solar declination angle
REAL, INTENT(OUT) :: PCOSDEL ! cosine of the solar declination angle
REAL, INTENT(OUT) :: PTSIDER ! sideral decimal time correction
REAL, INTENT(OUT) :: PCORSOL ! daily solar constant correction
!
REAL, DIMENSION(:,:), INTENT(IN) :: PSTATM ! working standard atmosphere
!
REAL, DIMENSION(:,:,:), POINTER :: POZON ! ozone mixing ratio ( from climato.)
REAL, DIMENSION(:,:,:,:), POINTER :: PAER ! aerosols optical thickness (from climato)
!
! last radiation call only for the cloudy verticals
!
!
INTEGER :: JI, JJ, JK, JK1, JKRAD,IIJ,JL
!
INTEGER :: IIB ! I index value of the first inner mass point
INTEGER :: IJB ! J index value of the first inner mass point
INTEGER :: IKB ! K index value of the first inner mass point
INTEGER :: IIE ! I index value of the last inner mass point
INTEGER :: IJE ! J index value of the last inner mass point
INTEGER :: IKE ! K index value of the last inner mass point
INTEGER :: IIU ! array size for the first index
INTEGER :: IJU ! array size for the second index
INTEGER :: IKU ! array size for the third index
INTEGER :: IKUP !
!
INTEGER, DIMENSION(0:11) :: IBIS, INOBIS ! Cumulative number of days per month
! for bissextile and regular years
REAL :: ZDATE ! Julian day of the year
REAL :: ZAD ! Angular Julian day of the year
REAL :: ZDECSOL ! Daily solar declination angle
REAL :: ZA1, ZA2 ! Ancillary variables
!
!
REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZEXNT ! Exner function
!
! Variables for aerosols and ozone climatologies set up

ESCOBAR Juan
committed
REAL, DIMENSION (:,:), ALLOCATABLE :: ZPAVE, ZWORK_GRID
REAL, DIMENSION (:), ALLOCATABLE :: ZAESEA, ZAELAN, ZAEURB, ZAEDES
!
REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZT_HL
REAL(KIND=JPRB), DIMENSION (:), ALLOCATABLE :: ZAESEA_RAD, ZAELAN_RAD, ZAEURB_RAD, ZAEDES_RAD
REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZCVDAES, ZCVDAEL, ZCVDAEU, ZCVDAED
REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZPRES_HL,ZOZON,ZETAH
REAL(KIND=JPRB), DIMENSION (:), ALLOCATABLE :: ZGEMU
INTEGER :: ZYMD, ZHOURS ! date for climatology initialisation
INTEGER :: JKCEP,JK_NH

ESCOBAR Juan
committed
REAL(KIND=JPRB), DIMENSION (:,:,:), ALLOCATABLE :: ZAER
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
REAL, DIMENSION(:), ALLOCATABLE :: ZAECOV_SEA, ZAECOV_URB, ZAECOV_LAN, ZAECOV_DES
!
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------
!-------------------------------------------------------------------------------
!
!* 0.1 INITIALIZATIONS
!
!
!* 0.2 COMPUTES THE PHYSICAL SUBDOMAIN BOUNDS
!
CALL GET_DIM_EXT_ll ('B',IIU,IJU)
IKU = SIZE(PPABST,3)
!
CALL GET_INDICE_ll (IIB,IJB,IIE,IJE)
IKB = 1 + JPVEXT
IKE = IKU - JPVEXT
!
! size of global physical domain
!
!* 1. COMPUTES THE DAY OF THE YEAR
! ----------------------------
!
INOBIS(:) = (/0,31,59,90,120,151,181,212,243,273,304,334/)
IBIS(0) = INOBIS(0)
DO JI=1,11
IBIS(JI) = INOBIS(JI)+1
END DO
!
IF ( LFIX_DAT ) THEN
IF( MOD(TPDTEXP%TDATE%YEAR,4).EQ.0 ) THEN

WAUTELET Philippe
committed
ZDATE = REAL(TPDTEXP%TDATE%DAY + IBIS(TPDTEXP%TDATE%MONTH-1)) - 1

WAUTELET Philippe
committed
ZDATE = REAL(TPDTEXP%TDATE%DAY + INOBIS(TPDTEXP%TDATE%MONTH-1)) - 1
ZAD = 2.0*XPI*ZDATE/365.0
END IF
ELSE
IF( MOD(TPDTCUR%TDATE%YEAR,4).EQ.0 ) THEN

WAUTELET Philippe
committed
ZDATE = REAL(TPDTCUR%TDATE%DAY + IBIS(TPDTCUR%TDATE%MONTH-1)) - 1

WAUTELET Philippe
committed
ZDATE = REAL(TPDTCUR%TDATE%DAY + INOBIS(TPDTCUR%TDATE%MONTH-1)) - 1
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
ZAD = 2.0*XPI*ZDATE/365.0
END IF
END IF
!
!-------------------------------------------------------------------------------
!
!* 2. COMPUTES THE SOLAR DECLINATION ANGLE
! ------------------------------------
!
ZDECSOL = 0.006918-0.399912*COS(ZAD) +0.070257*SIN(ZAD) &
-0.006758*COS(2.*ZAD)+0.000907*SIN(2.*ZAD) &
-0.002697*COS(3.*ZAD)+0.00148 *SIN(3.*ZAD)
PSINDEL = SIN(ZDECSOL)
PCOSDEL = COS(ZDECSOL)
!
!-------------------------------------------------------------------------------
!
!* 3. COMPUTES THE SIDERAL HOUR CORRECTION
! ------------------------------------
!
ZA1 = (1.00554*ZDATE- 6.28306)*(XPI/180.0)
ZA2 = (1.93946*ZDATE+23.35089)*(XPI/180.0)
PTSIDER = (7.67825*SIN(ZA1)+10.09176*SIN(ZA2)) / 60.0
!
!-------------------------------------------------------------------------------
!
!* 4. COMPUTES THE DAILY SOLAR CONSTANT CORRECTION
! --------------------------------------------
!
PCORSOL = 1.00011+0.034221*COS(ZAD) +0.001280*SIN(ZAD) &
+0.000719*COS(2.*ZAD)+0.000077*SIN(2.*ZAD)
!
!-------------------------------------------------------------------------------
!
!* 8. INITIALIZE RADIATIVELY ACTIVE COMPOUNDS (3D FIELDS)
! ------------------------------------------------------
!
!* 8.1 set up for grid dependant quantitites (from initial state)
!
ALLOCATE (ZPRES_HL(KDLON,KFLEV+1))
ALLOCATE (ZPAVE(KDLON,KFLEV))
ALLOCATE (ZETAH(KDLON,KFLEV+1))
ALLOCATE (ZT_HL(KDLON,KFLEV+1))
ALLOCATE (ZGEMU(KDLON))
!
ZEXNT(:,:,:)= ( PPABST(:,:,:)/XP00 ) ** (XRD/XCPD)
!
DO JK=IKB,IKE+1
JKRAD = JK-JPVEXT
DO JJ=IJB,IJE
DO JI=IIB,IIE
IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB)
ZPRES_HL(IIJ,JKRAD) = XP00 * (0.5*(ZEXNT(JI,JJ,JK)+ZEXNT(JI,JJ,JK-1)))**(XCPD/XRD)
ZT_HL(IIJ,JKRAD) = 0.5*(PTHT(JI,JJ,JK)*ZEXNT(JI,JJ,JK)+PTHT(JI,JJ,JK-1)*ZEXNT(JI,JJ,JK-1))
END DO
END DO
END DO
!
! Surface temperature at the first level
!
DO JJ=IJB,IJE
DO JI=IIB,IIE
IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB)
ZT_HL(IIJ,1) = PTSRAD(JI,JJ)
END DO
END DO
!
! Standard atmosphere extension
!* begining at ikup+1 level allows to use a model domain higher than 50km
IKUP = IKE-JPVEXT+1
!
DO JK=IKUP+1,KFLEV+1
JK1 = (KSTATM-1)+(JK-IKUP)
ZPRES_HL(:,JK) = PSTATM(JK1,2)*100.0
ZT_HL(:,JK) = PSTATM(JK1,3)
END DO
!
! vertical grid inversion for compatibility with ECMWF routines
ALLOCATE (ZWORK_GRID(SIZE(ZPRES_HL,1),KFLEV+1))
!
!half level pressure
ZWORK_GRID(:,:)=ZPRES_HL(:,:)
DO JKRAD=1, KFLEV+1
JK1=(KFLEV+1)+1-JKRAD
ZPRES_HL(:,JKRAD) = ZWORK_GRID(:,JK1)
END DO
!
!half level temperature
ZWORK_GRID(:,:)=ZT_HL(:,:)
DO JKRAD=1, KFLEV+1
JK1=(KFLEV+1)+1-JKRAD
ZT_HL(:,JKRAD)=ZWORK_GRID(:,JK1)
END DO
DEALLOCATE(ZWORK_GRID)
!
DO JKRAD=1,KFLEV
ZPAVE(:,JKRAD)=0.5*(ZPRES_HL(:,JKRAD)+ZPRES_HL(:,JKRAD+1))
END DO
!
!coo geographique
!
IF(.NOT.LCARTESIAN) THEN
DO JJ=IJB,IJE
DO JI=IIB,IIE
IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB)
ZGEMU(IIJ) = SIN ( PLAT(JI,JJ) * XPI/180)
END DO
END DO
ELSE
ZGEMU(:) = SIN ( XLAT0 * XPI/180)
END IF
!
!* 8.2 OZONE climatology
! -----------------------------
!
ALLOCATE (ZOZON(KDLON,KFLEV))
!
IF (LFIX_DAT ) THEN
ZYMD = TPDTEXP%TDATE%YEAR * 1E4 + TPDTEXP%TDATE%MONTH * 1E2 + TPDTEXP%TDATE%DAY
ZHOURS = INT(TPDTCUR%TIME / 60.)
ELSE
ZYMD = TPDTCUR%TDATE%YEAR * 1E4 + TPDTCUR%TDATE%MONTH * 1E2 + TPDTCUR%TDATE%DAY
ZHOURS = INT(TPDTCUR%TIME / 60.)
END IF
!
! Fortuin langematz climatology loading
CALL SUECOZC ( ZYMD , ZHOURS )
!
! DOESN'T WORK WITH A ROTATED OR STRETCHED GRID
! Interpolation on the simulation domain
CALL RADOZC ( 1 , KDLON, KDLON , 1, KFLEV, 1 ,&
KDLON ,0,ZPRES_HL, ZGEMU, &
ZOZON )
!
! 8.3 time interpolation of AEROSOLS climatogy
! ----------------------------------------------
!
ALLOCATE (ZAER(KDLON, KFLEV,KAER))
IF(HAER /= 'NONE') THEN
!
! 8.3.1 horizontal ditributions
!
ALLOCATE (ZAESEA(KDLON))
ALLOCATE (ZAELAN(KDLON))
ALLOCATE (ZAEURB(KDLON))
ALLOCATE (ZAEDES(KDLON))

ESCOBAR Juan
committed
ALLOCATE (ZAESEA_RAD(KDLON))
ALLOCATE (ZAELAN_RAD(KDLON))
ALLOCATE (ZAEURB_RAD(KDLON))
ALLOCATE (ZAEDES_RAD(KDLON))
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
!
! AEROSOLS ECMWF climatologies
!
IF ( HAER == 'TEGE' ) THEN
CALL INI_HOR_AERCLIM (HAER,IIB,IIE,IJB,IJE,KDLON,ZYMD,ZHOURS, &
PLAT,PLON,ZAESEA,ZAELAN,ZAEURB,ZAEDES )
END IF
!
!
! 8.3.2 vertical ditributions (standard profiles derived from Tanre)
!
ALLOCATE (ZCVDAES(KDLON,KFLEV+1))
ALLOCATE (ZCVDAEL(KDLON,KFLEV+1))
ALLOCATE (ZCVDAEU(KDLON,KFLEV+1))
ALLOCATE (ZCVDAED(KDLON,KFLEV+1))
DO JL=1,KDLON
ZETAH(JL,:)=ZPRES_HL(JL,:)/101300. ! reference pressure for normalisation
END DO
WHERE (ZETAH (:,:) > 1.)
ZETAH(:,:)=1.
END WHERE
!
! set up of vertical ditribution parameters
CALL SUAERV ( KDLON, KFLEV , ZETAH, &
ZCVDAES ,ZCVDAEL ,ZCVDAEU ,ZCVDAED, &
RCTRBGA,RCVOBGA,RCSTBGA,RCAEOPS,RCAEOPL,RCAEOPU,&
RCAEOPD,RCTRPT ,RCAEADK,RCAEADM,RCAEROS )
!
! modification of initial ECMWF maximum optical thickness
! for aerosols classes in case of HAER=SURF
! note : these variables belongs to yoeaerd module
!
! final aerosol profiles on mnh grid
!

ESCOBAR Juan
committed
ZAESEA_RAD = ZAESEA ; ZAELAN_RAD = ZAELAN ; ZAEURB_RAD = ZAEURB ; ZAEDES_RAD = ZAEDES
CALL RADAER (1, KDLON, KDLON, 1, KFLEV, ZPRES_HL,ZT_HL, &
ZCVDAES ,ZCVDAEL ,ZCVDAEU ,ZCVDAED, &

ESCOBAR Juan
committed
ZAESEA_RAD, ZAELAN_RAD, ZAEURB_RAD, ZAEDES_RAD, &
ZAER )
!
!!- VOLCANIC AEROSOL SET TO epsilon IN ABSENCE OF ERUPTION
ZAER(:,:,5) = 1.E-12
!
DEALLOCATE (ZCVDAES)
DEALLOCATE (ZCVDAEL)
DEALLOCATE (ZCVDAEU)
DEALLOCATE (ZCVDAED)
DEALLOCATE (ZAESEA)
DEALLOCATE (ZAELAN)
DEALLOCATE (ZAEURB)
DEALLOCATE (ZAEDES)

ESCOBAR Juan
committed
DEALLOCATE (ZAESEA_RAD)
DEALLOCATE (ZAELAN_RAD)
DEALLOCATE (ZAEURB_RAD)
DEALLOCATE (ZAEDES_RAD)
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
ELSE
ZAER(:,:,:)= 1E-12
END IF
!
!* 8.4 Adaptation on mnh domain
! --------------------------------
!
!
POZON (:,:,:)=0.
PAER (:,:,:,:)=0.
!
DO JJ=IJB,IJE
DO JI=IIB,IIE
IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB)
DO JKRAD=1,KFLEV
JK1 = KFLEV +1 -JKRAD
PAER (JI,JJ,JKRAD,:) = ZAER (IIJ,JK1,:)
POZON (JI,JJ,JKRAD) = ZOZON (IIJ,JK1)
END DO
END DO
END DO
!
!
!
DEALLOCATE (ZPRES_HL)
DEALLOCATE (ZPAVE)
DEALLOCATE (ZT_HL)
DEALLOCATE (ZETAH)
DEALLOCATE (ZGEMU)
DEALLOCATE (ZOZON)
!
!-------------------------------------------------------------------------------
!
!-------------------------------------------------------------------------------
!
END SUBROUTINE AEROZON