SURFEX v8.1
General documentation of Surfex
mode_aer_surf.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 !! ########################
7 !! ########################
8 !!
9 !! MODULE DUST PSD (Particle Size Distribution)
10 !! Purpose: Contains subroutines to convert from transported variables (ppp)
11 !! to understandable aerosol variables, e.g. #/m3, kg/m3, sigma, R_{n}
12 !-------------------------------------------------------------------------------
13 !! MODIFICATIONS
14 !! -------------
15 !!
16 !! J.Escobar 06/2013 for REAL4/8 add EPSILON management
17 !! M.Leriche 2015 : masse molaire Black carbon à 12 g/mol
18 !!
19 !-------------------------------------------------------------------------------
21  USE modd_dst_surf, ONLY : xdensity_dst
22 !
23  USE yomhook ,ONLY : lhook, dr_hook
24  USE parkind1 ,ONLY : jprb
25  USE modd_surf_par , ONLY : xsurf_tiny
26 !
27  IMPLICIT NONE
28 !!
29 CONTAINS
30 !!
31 SUBROUTINE init_var(PSV,PFAC,PCTOTA)
32 !
33 IMPLICIT NONE
34 !
35 REAL,DIMENSION(:,:), INTENT(IN) :: PSV ! [aerosol concentration]
36 REAL,DIMENSION(:), INTENT(OUT) :: PFAC ! M3 / mass conversion factor
37 REAL,DIMENSION(:,:,:), INTENT(OUT) :: PCTOTA
38 !
39 REAL,DIMENSION(NSP+NCARB+NSOA) :: ZMI ! [kg/mol] molar weight of aerosol
40 REAL,DIMENSION(NSP+NCARB+NSOA) :: ZRHOI ! aerosol density
41 REAL :: ZPI
42 INTEGER :: JJ
43 REAL, PARAMETER :: ZMOL = 6.0221367e+11
44 REAL(KIND=JPRB) :: ZHOOK_HANDLE
45 !
46 IF (lhook) CALL dr_hook('MODE_AER_SURF:INIT_VAR',0,zhook_handle)
47 !
48 zrhoi(:) = 1.8e3
49 zrhoi(jp_aer_h2o) = 1.0e3 ! water
50 zrhoi(jp_aer_dst) = xdensity_dst
51 !
52 ! Moments index
53 nm0(1) = 1
54 nm3(1) = 2
55 nm6(1) = 3
56 nm0(2) = 4
57 nm3(2) = 5
58 nm6(2) = 6
59 !
60 !Set density of aerosol, here (kg/m3)
61 ! Aerosol Density
62 ! Cf Ackermann (all to black carbon except water)
63 !
64 !Set molecular weightn g/mol
65 zmi(:) = 250.
66 zmi(jp_aer_so4) = 98.
67 zmi(jp_aer_no3) = 63.
68 zmi(jp_aer_nh3) = 17.
69 zmi(jp_aer_h2o) = 18.
70 zmi(jp_aer_bc) = 12.
71 zmi(jp_aer_dst) = 100.
72 IF (nsoa .EQ. 10) THEN
73  zmi(jp_aer_soa1) = 88.
74  zmi(jp_aer_soa2) = 180.
75  zmi(jp_aer_soa3) = 1.5374857e3
76  zmi(jp_aer_soa4) = 1.9586780e3
77  zmi(jp_aer_soa5) = 195.
78  zmi(jp_aer_soa6) = 195.
79  zmi(jp_aer_soa7) = 165.
80  zmi(jp_aer_soa8) = 195.
81  zmi(jp_aer_soa9) = 270.
82  zmi(jp_aer_soa10) = 210.
83 END IF
84 !
85 zpi = 2.*asin(1.)
86 DO jj=1,nsp+ncarb+nsoa
87  pfac(jj)=(4./3.)*zpi*zrhoi(jj)*1.e-9
88 ENDDO
89 !
90 !* 2 transfer aerosol mass from gas to aerosol variables
91 ! (and conversion of mol.cm-3 --> microgram/m3)
92 !
93 pctota(:,:,:) = 0.
94 ! aerosol phase
95 pctota(:,jp_aer_so4,1) = psv(:,jp_ch_so4i)*zmi(jp_aer_so4)/zmol
96 pctota(:,jp_aer_so4,2) = psv(:,jp_ch_so4j)*zmi(jp_aer_so4)/zmol
97 
98 pctota(:,jp_aer_no3,1) = psv(:,jp_ch_no3i)*zmi(jp_aer_no3)/zmol
99 pctota(:,jp_aer_no3,2) = psv(:,jp_ch_no3j)*zmi(jp_aer_no3)/zmol
100 
101 pctota(:,jp_aer_nh3,1) = psv(:,jp_ch_nh3i)*zmi(jp_aer_nh3)/zmol
102 pctota(:,jp_aer_nh3,2) = psv(:,jp_ch_nh3j)*zmi(jp_aer_nh3)/zmol
103 !
104 ! water
105 pctota(:,jp_aer_h2o,1) = psv(:,jp_ch_h2oi)*zmi(jp_aer_h2o)/zmol
106 pctota(:,jp_aer_h2o,2) = psv(:,jp_ch_h2oj)*zmi(jp_aer_h2o)/zmol
107 !
108 ! primary organic carbon
109 pctota(:,jp_aer_oc,1) = psv(:,jp_ch_oci)*zmi(jp_aer_oc)/zmol
110 pctota(:,jp_aer_oc,2) = psv(:,jp_ch_ocj)*zmi(jp_aer_oc)/zmol
111 !
112 ! primary black carbon
113 pctota(:,jp_aer_bc,1) = psv(:,jp_ch_bci)*zmi(jp_aer_bc)/zmol
114 pctota(:,jp_aer_bc,2) = psv(:,jp_ch_bcj)*zmi(jp_aer_bc)/zmol
115 !
116 !dust
117 pctota(:,jp_aer_dst,1) = psv(:,jp_ch_dsti)*zmi(jp_aer_dst)/6.0221367e+11
118 pctota(:,jp_aer_dst,2) = psv(:,jp_ch_dstj)*zmi(jp_aer_dst)/6.0221367e+11
119 !
120 IF (nsoa .EQ. 10) THEN
121  pctota(:,jp_aer_soa1,1) = psv(:,jp_ch_soa1i)*zmi(jp_aer_soa1)/zmol
122  pctota(:,jp_aer_soa1,2) = psv(:,jp_ch_soa1j)*zmi(jp_aer_soa1)/zmol
123  pctota(:,jp_aer_soa2,1) = psv(:,jp_ch_soa2i)*zmi(jp_aer_soa2)/zmol
124  pctota(:,jp_aer_soa2,2) = psv(:,jp_ch_soa2j)*zmi(jp_aer_soa2)/zmol
125  pctota(:,jp_aer_soa3,1) = psv(:,jp_ch_soa3i)*zmi(jp_aer_soa3)/zmol
126  pctota(:,jp_aer_soa3,2) = psv(:,jp_ch_soa3j)*zmi(jp_aer_soa3)/zmol
127  pctota(:,jp_aer_soa4,1) = psv(:,jp_ch_soa4i)*zmi(jp_aer_soa4)/zmol
128  pctota(:,jp_aer_soa4,2) = psv(:,jp_ch_soa4j)*zmi(jp_aer_soa4)/zmol
129  pctota(:,jp_aer_soa5,1) = psv(:,jp_ch_soa5i)*zmi(jp_aer_soa5)/zmol
130  pctota(:,jp_aer_soa5,2) = psv(:,jp_ch_soa5j)*zmi(jp_aer_soa5)/zmol
131 
132  pctota(:,jp_aer_soa6,1) = psv(:,jp_ch_soa6i)*zmi(jp_aer_soa6)/zmol
133  pctota(:,jp_aer_soa6,2) = psv(:,jp_ch_soa6j)*zmi(jp_aer_soa6)/zmol
134  pctota(:,jp_aer_soa7,1) = psv(:,jp_ch_soa7i)*zmi(jp_aer_soa7)/zmol
135  pctota(:,jp_aer_soa7,2) = psv(:,jp_ch_soa7j)*zmi(jp_aer_soa7)/zmol
136  pctota(:,jp_aer_soa8,1) = psv(:,jp_ch_soa8i)*zmi(jp_aer_soa8)/zmol
137  pctota(:,jp_aer_soa8,2) = psv(:,jp_ch_soa8j)*zmi(jp_aer_soa8)/zmol
138  pctota(:,jp_aer_soa9,1) = psv(:,jp_ch_soa9i)*zmi(jp_aer_soa9)/zmol
139  pctota(:,jp_aer_soa9,2) = psv(:,jp_ch_soa9j)*zmi(jp_aer_soa9)/zmol
140  pctota(:,jp_aer_soa10,1) = psv(:,jp_ch_soa10i)*zmi(jp_aer_soa10)/zmol
141  pctota(:,jp_aer_soa10,2) = psv(:,jp_ch_soa10j)*zmi(jp_aer_soa10)/zmol
142 END IF
143 !
144 IF (lhook) CALL dr_hook('MODE_AER_SURF:INIT_VAR',1,zhook_handle)
145 !
146 END SUBROUTINE init_var
147 !
148 !! ############################################################
149 SUBROUTINE ppp2aero_surf( &
150  PSVT, &!I [ppp] input scalar variables (moment of distribution)
151  prhodref, &!I [kg/m3] density of air
152  psig1d, &!O [-] standard deviation of aerosol distribution
153  prg1d, &!O [um] number median diameter of aerosol distribution
154  pn1d, &!O [#/m3] number concentration of aerosols
155  pctota, &!O [ug/m3] mass of each aerosol compounds
156  pm1d &!moments 0, 3 and 6
157  )
158 !! ############################################################
159 !
160 !!
161 !! PURPOSE
162 !! -------
163 !! Translate the three moments M0, M3 and M6 given in ppp into
164 !! Values which can be understood more easily (R, sigma, N, M)
165 !!
166 !! CALLING STRUCTURE NOTE: OPTIONAL VARIABLES
167 !! -------
168 !! CALL PPP2AERO_SURFS(PSVT, PRHODREF, PSIG1D=SIGVAR, &
169 !! PRG1D=RVAR, PN1D=NVAR, PM1D=ZM)
170 !!
171 !! REFERENCE
172 !! ---------
173 !! none
174 !!
175 !! AUTHOR
176 !! ------
177 !! Pierre TULET (LA)
178 !!
179 !! MODIFICATIONS
180 !! -------------
181 !! Alf Grini (CNRM)
182 !!
183 !! EXTERNAL
184 !! --------
185 !!
186  IMPLICIT NONE
187 !!
188 !-------------------------------------------------------------------------------
189 !
190 !* 0. DECLARATIONS
191 ! ------------
192 !
193 !* 0.1 declarations of arguments
194 !
195 !INPUT
196 REAL, DIMENSION(:,:), INTENT(IN) :: PSVT !I [#/molec_{air}] first moment
197  !I [molec_{aer}/molec_{air} 3rd moment
198  !I [um6/molec_{air}*(cm3/m3)] 6th moment
199 REAL, DIMENSION(:), INTENT(IN) :: PRHODREF !I [kg/m3] density of air
200 
201 !OUTPUT
202 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PSIG1D !O [-] standard deviation
203 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PRG1D !O [um] number median diameter
204 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PN1D !O [#/m3] number concentration
205 REAL, DIMENSION(:,:,:),OPTIONAL, INTENT(OUT) :: PCTOTA !O [ug/m3] mass of each component
206 REAL, DIMENSION(:,:), OPTIONAL, INTENT(OUT) :: PM1D !O moments 0,3 and 6
207 !
208 !* 0.2 declarations local variables
209 !
210 REAL,DIMENSION(SIZE(PSVT,1), SIZE(PSVT,2)) :: ZSV ! [aerosol concentration]
211 REAL,DIMENSION(SIZE(PSVT,1)) :: ZSIGMA ! [-] standard deviation
212 REAL,DIMENSION(SIZE(PSVT,1),NSP+NCARB+NSOA,JPMODE) :: ZCTOTA
213 REAL,DIMENSION(SIZE(PSVT,1),JPMODE*3) :: ZM
214 REAL,DIMENSION(JPMODE*3) :: ZMMIN
215 !
216 REAL,DIMENSION(NSP+NCARB+NSOA) :: ZFAC ! M3 / mass conversion factor
217 REAL, PARAMETER :: ZDEN2MOL = 1e-6 * 6.0221367e+23 / 28.9644e-3
218 INTEGER :: JJ, JN ! [idx] loop counters
219 REAL(KIND=JPRB) :: ZHOOK_HANDLE
220 !
221 !-------------------------------------------------------------------------------
222 IF (lhook) CALL dr_hook('MODE_AER_SURF:PPP2AERO_SURF',0,zhook_handle)
223 !
224 ! 1. initialisation
225 !
226 DO jj=1, SIZE(psvt,2)
227  zsv(:,jj) = psvt(:,jj) * zden2mol * prhodref(:)
228  zsv(:,jj) = max(zsv(:,jj),1e-40 * zden2mol * prhodref(:))
229 ENDDO
230 !
231  CALL init_var(zsv,zfac,zctota)
232 !
233 !* 2 calculate moment 3 from total aerosol mass
234 !
235 zm(:,2) = 0.
236 zm(:,5) = 0.
237 DO jj = 1,nsp+ncarb+nsoa
238  zm(:,2) = zm(:,2)+zctota(:,jj,1)/zfac(jj) !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
239  zm(:,5) = zm(:,5)+zctota(:,jj,2)/zfac(jj) !==>um3_{aer}/m3_{air} (volume ==> 3rd moment)
240 ENDDO
241 !
242 !
243 !* 3 set moment 0
244 !
245 zm(:,1)= max(zsv(:,jp_ch_m0i) * 1e+6, xsurf_tiny) ! molec_{aer}/m3_{air}
246 zm(:,4)= max(zsv(:,jp_ch_m0j) * 1e+6, xsurf_tiny) ! molec_{aer}/m3_{air}
247 WHERE ((zm(:,1) .LT. zmmin(1))) !.OR.(ZM(:,2) .LT. ZMMIN(2)))
248  zm(:,1)= zmmin(1)
249 ! ZM(:,2)= ZMMIN(2)
250 !
251 ! ZCTOTA(:,JP_AER_H2O,1) = 0.
252 ! ZCTOTA(:,JP_AER_NH3,1) = 0.
253 ! ZCTOTA(:,JP_AER_SO4,1) = 0.
254 ! ZCTOTA(:,JP_AER_NO3,1) = 0.
255 ! ZCTOTA(:,JP_AER_BC,1) = 0.5 * ZM(:,2) * ZFAC(JP_AER_BC)
256 ! ZCTOTA(:,JP_AER_OC,1) = 0.5 * ZM(:,2) * ZFAC(JP_AER_OC)
257 END WHERE
258 !!
259 WHERE ((zm(:,4) .LT. zmmin(4))) !.OR.(ZM(:,5) .LT. ZMMIN(5)))
260  zm(:,4)= zmmin(4)
261 ! ZM(:,5)= ZMMIN(5)
262 !
263 ! ZCTOTA(:,JP_AER_H2O,2) = 0.
264 ! ZCTOTA(:,JP_AER_NH3,2) = 0.
265 ! ZCTOTA(:,JP_AER_SO4,2) = 0.
266 ! ZCTOTA(:,JP_AER_NO3,2) = 0.
267 ! ZCTOTA(:,JP_AER_BC,2) = 0.5 * ZM(:,5) * ZFAC(JP_AER_BC)
268 ! ZCTOTA(:,JP_AER_OC,2) = 0.5 * ZM(:,5) * ZFAC(JP_AER_OC)
269 END WHERE
270 !
271 !* 4 set moment 6 ==> um6_{aer}/m3_{air}
272 !
273 IF (lvarsigi) THEN ! set M6 variable standard deviation
274  zm(:,3) = max(zsv(:,jp_ch_m6i), xsurf_tiny)
275 
276  zsigma(:)=zm(:,2)**2/(zm(:,1)*zm(:,3))
277  zsigma(:)=min(1-1e-10,zsigma(:))
278  zsigma(:)=max(1e-10,zsigma(:))
279  zsigma(:)= log(zsigma(:))
280  zsigma(:)= exp(1./3.*sqrt(-zsigma(:)))
281  zm(:,3) = zm(:,1) &
282  * ( (zm(:,2)/zm(:,1))**(1./3.) &
283  * exp(-(3./2.)*log(zsigma(:))**2))**6 &
284  * exp(18.*log(zsigma(:))**2)
285 
286  IF(PRESENT(psig1d)) psig1d(:,1) = zsigma(:)
287 
288 ELSE ! fixed standard deviation
289  zm(:,3) = zm(:,1) &
290  * ( (zm(:,2)/zm(:,1))**(1./3.) &
291  * exp(-(3./2.)*log(xemissigi)**2))**6 &
292  * exp(18.*log(xemissigi)**2)
293 
294  IF(PRESENT(psig1d)) psig1d(:,1) = xemissigi
295 END IF
296 
297 IF (lvarsigj) THEN ! set M6 variable standard deviation
298  zm(:,6) = max(zsv(:,jp_ch_m6j), xsurf_tiny)
299 
300  zsigma(:)=zm(:,5)**2/(zm(:,4)*zm(:,6))
301  zsigma(:)=min(1-1e-10,zsigma(:))
302  zsigma(:)=max(1e-10,zsigma(:))
303  zsigma(:)= log(zsigma(:))
304  zsigma(:)= exp(1./3.*sqrt(-zsigma(:)))
305 
306  zm(:,6) = zm(:,4) &
307  * ( (zm(:,5)/zm(:,4))**(1./3.) &
308  * exp(-(3./2.)*log(zsigma(:))**2))**6 &
309  * exp(18.*log(zsigma(:))**2)
310 
311  IF(PRESENT(psig1d)) psig1d(:,2) = zsigma(:)
312 
313 ELSE ! fixed standard deviation
314  zm(:,6) = zm(:,4) &
315  * ( (zm(:,5)/zm(:,4))**(1./3.) &
316  * exp(-(3./2.)*log(xemissigj)**2))**6 &
317  * exp(18.*log(xemissigj)**2)
318 
319  IF(PRESENT(psig1d)) psig1d(:,2) = xemissigj
320 END IF
321 
322 
323 !* 6 calculate modal parameters from moments
324 DO jn=1,jpmode
325  IF(PRESENT(pn1d)) pn1d(:,jn) = zm(:,nm0(jn))
326 
327  IF(PRESENT(prg1d)) prg1d(:,jn)=(zm(:,nm3(jn))**4. &
328  / (zm(:,nm6(jn))*zm(:,nm0(jn))**3.))**(1./6.)
329 ENDDO
330 
331 IF(PRESENT(pctota)) pctota(:,:,:) = zctota(:,:,:)
332 IF(PRESENT(pm1d)) pm1d(:,:) = zm(:,:)
333 IF (lhook) CALL dr_hook('MODE_AER_SURF:PPP2AERO_SURF',1,zhook_handle)
334 !
335 END SUBROUTINE ppp2aero_surf
336 !! ############################################################
337 SUBROUTINE aero2ppp_surf( &
338  PSVT, &!IO [ppp] input scalar variables (moment of distribution)
339  prhodref, &!I [kg/m3] density of air
340  psig1d, &!I [-] standard deviation of aerosol distribution
341  prg1d &!I [um] number median diameter of aerosol distribution
342  )
343 !! ############################################################
344 !
345 !!
346 !! PURPOSE
347 !! -------
348 !! Translate the aerosol Mass, RG and SIGMA in the three moments M0, M3 and M6 given in ppp
349 !!
350 !! REFERENCE
351 !! ---------
352 !! none
353 !!
354 !! AUTHOR
355 !! ------
356 !! Pierre TULET (LA)
357 !!
358 !! MODIFICATIONS
359 !! -------------
360 !! Alf Grini (CNRM)
361 !!
362 !! EXTERNAL
363 !! --------
364 !!
365 IMPLICIT NONE
366 !!
367 !-------------------------------------------------------------------------------
368 !
369 !* 0. DECLARATIONS
370 ! ------------
371 !
372 !* 0.1 declarations of arguments
373 !
374 !INPUT
375 REAL, DIMENSION(:,:), INTENT(INOUT) :: PSVT !I [#/molec_{air}] first moment
376  !I [molec_{aer}/molec_{air} 3rd moment
377  !I [um6/molec_{air}*(cm3/m3)] 6th moment
378 REAL, DIMENSION(:), INTENT(IN) :: PRHODREF !I [kg/m3] density of air
379 
380 !OUTPUT
381 REAL, DIMENSION(:,:), INTENT(IN) :: PSIG1D !O [-] standard deviation
382 REAL, DIMENSION(:,:), INTENT(IN) :: PRG1D !O [um] number median diameter
383 !
384 !* 0.2 declarations local variables
385 !
386 REAL,DIMENSION(SIZE(PSVT,1),NSP+NCARB+NSOA,JPMODE):: ZCTOTA
387 REAL,DIMENSION(SIZE(PSVT,1), JPMODE*3) :: ZM ! [aerosol units] local array which goes to output later
388 !
389 REAL,DIMENSION(NSP+NCARB+NSOA) :: ZFAC ! M3 / mass conversion factor
390 REAL, PARAMETER :: ZDEN2MOL = 1e-6 * 6.0221367e+23 / 28.9644e-3
391 INTEGER :: JJ ! [idx] loop counters
392 REAL(KIND=JPRB) :: ZHOOK_HANDLE
393 !
394 !-------------------------------------------------------------------------------
395 IF (lhook) CALL dr_hook('MODE_AER_SURF:AERO2PPP_SURF',0,zhook_handle)
396 !
397 ! 1. initialisation
398 !
399 DO jj=1, SIZE(psvt, 2)
400  psvt(:,jj) = psvt(:,jj) * zden2mol * prhodref(:)
401 ENDDO
402 !
403  CALL init_var(psvt,zfac,zctota)
404 !
405 !* 3 calculate moment 3 from total aerosol mass
406 !
407 zm(:,2) = 0.
408 zm(:,5) = 0.
409 DO jj = 1,nsp+ncarb+nsoa
410  zm(:,2) = zm(:,2)+zctota(:,jj,1)/zfac(jj)
411  zm(:,5) = zm(:,5)+zctota(:,jj,2)/zfac(jj)
412 ENDDO
413 !
414 !
415 !* 4 calculate moment 0 from dispersion and mean radius
416 !
417 zm(:,1)= zm(:,2)/ ( (prg1d(:,1)**3)*exp(4.5 * log(psig1d(:,1))**2) )
418 zm(:,4)= zm(:,5)/ ( (prg1d(:,2)**3)*exp(4.5 * log(psig1d(:,2))**2) )
419 !
420 !* 5 calculate moment 6 from dispersion and mean radius
421 !
422 zm(:,3) = zm(:,1)*(prg1d(:,1)**6) * exp(18 *(log(psig1d(:,1)))**2)
423 zm(:,6) = zm(:,4)*(prg1d(:,2)**6) * exp(18 *(log(psig1d(:,2)))**2)
424 !
425 !* 6 return to ppp
426 !
427 psvt(:,jp_ch_m0i) = zm(:,1) * 1e-6
428 psvt(:,jp_ch_m0j) = zm(:,4) * 1e-6
429 !
430 IF (lvarsigi) psvt(:,jp_ch_m6i) = zm(:,3)
431 IF (lvarsigj) psvt(:,jp_ch_m6j) = zm(:,6)
432 !
433 DO jj=1,SIZE(psvt,2)
434  psvt(:,jj) = psvt(:,jj) / (zden2mol * prhodref(:))
435 ENDDO
436 !
437 IF (lhook) CALL dr_hook('MODE_AER_SURF:AERO2PPP_SURF',1,zhook_handle)
438 !
439 END SUBROUTINE aero2ppp_surf
440 
441 END MODULE mode_aer_surf
integer, parameter jp_aer_oc
integer, parameter nsp
subroutine init_var(PSV, PFAC, PCTOTA)
integer, parameter ncarb
real, parameter xdensity_dst
integer, parameter jp_aer_nh3
real, parameter xsurf_tiny
integer, parameter jprb
Definition: parkind1.F90:32
integer, parameter jpmode
integer, dimension(jpmode), save nm6
integer, parameter jp_aer_so4
subroutine aero2ppp_surf(PSVT, PRHODREF, PSIG1D, PRG1D)
subroutine ppp2aero_surf(PSVT, PRHODREF, PSIG1D, PRG1D, PN1D, PCTOTA, PM1D)
logical lhook
Definition: yomhook.F90:15
integer, parameter jp_aer_bc
integer, parameter jp_aer_h2o
integer, dimension(jpmode), save nm0
integer, parameter jp_aer_dst
integer, dimension(jpmode), save nm3
integer, parameter jp_aer_no3