Merge remote-tracking branch 'origin/release-v4.6.1'
[WRF.git] / chem / module_data_soa_vbs_het.F
blob088c1c5b0b9a0d35d062014bcc2495bcce0d2b0d
1 MODULE module_data_soa_vbs_het
2 ! This module is based on module_data_sorgam.F, it has been updated to use
3 ! for the new SOA scheme - SOA_VBS
5 !   USE module_data_radm2
7 !   param.inc start
8       IMPLICIT NONE
9       INTEGER NP                !bs maximum expected value of N
10       PARAMETER (NP = 8)
11 !      integer numaer
12 !      parameter (numaer=50)
14       INTEGER MAXITS            !bs maximum number of iterations
15       PARAMETER (MAXITS = 100)
17       REAL TOLF                 !bs convergence criterion on function values
18       PARAMETER (TOLF = 1.E-09)
20       REAL TOLMIN                 !bs criterion whether superios convergence to
21       PARAMETER (TOLMIN = 1.E-12) !bs a minimum of fmin has occurred
23       REAL TOLX                 !bs convergence criterion on delta_x
24       PARAMETER (TOLX = 1.E-10)
26       REAL STPMX                !bs scaled maximum step length allowed
27       PARAMETER (STPMX = 100.)
29       REAL c303, c302
30       PARAMETER (c303=19.83, c302=5417.4)
32       INTEGER lcva, lcvb, lspcv, ldesn
33       PARAMETER (lcva=4,lcvb=4, lspcv=lcva+lcvb)
34       PARAMETER (ldesn=13)
35 !mh    ldesn is number of deposition species
36 !mh    true number of deposited species may be larger since there
37 !mh    are species which are deposited with the same rate
39       INTEGER laerdvc, lnonaerdvc, l1ae, laero, imodes, aspec
40 !liqy
41        PARAMETER (laerdvc=46,lnonaerdvc=17+lspcv)
42 !liqy-20140912
43 !      PARAMETER (laerdvc=39,lnonaerdvc=8+lspcv)
44       PARAMETER (l1ae=laerdvc+lnonaerdvc)
45       PARAMETER (laero=4,imodes=4,aspec=1)
46 !     LAERDVC  number of advected aerosol dynamic parameters for a given
47 !     component species
48 !ia     L1AE        advected parameters+non-advected parameters
49 !ia     LAERO       number of aerosol component species
50 !ia     imodes      number of aerosol modes
51 !ia     ASPEC       number of gas phase comp. that are added dynamically
52 !ia                 currently only sulfate (=1)
53 !bs
54 !bs * BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS **
55 !bs
56       INTEGER aemiss
57       PARAMETER (aemiss=4)
58 !bs *  AEMISS      # of aerosol species with emissions link to gas phase
59 !bs                currently ECI, ECJ, BCI, BCJ
60  ! updated ldrog numbers for the new SOA mechanism
61       INTEGER, PARAMETER :: ldroga=6    ! anthropogenic: ALK4,ALK5,OLE1,OLE2,ARO1,ARO2
62       INTEGER, PARAMETER :: ldrogb=3    ! biogenic: ISOP,SESQ,TERP
63       INTEGER, PARAMETER :: ldrogr=1    ! for branching ratio
64       INTEGER, PARAMETER :: ldrog_vbs=ldroga+ldrogb+ldrogr ! I've renamed this parameter to separate from "ldrog" for MADE/SORGAM
66 !      INTEGER ldroga
67 !      PARAMETER (ldroga=11)
68 !      INTEGER ldrogb
69 !      PARAMETER (ldrogb=6)
70 !      INTEGER ldrog
71 !bs * LDROGA      # of anthropogenic organic aerosol precursor gases (DR
72 !bs * LDROGB      # of biogenic organic aerosol precursor gases (DROG)
73 !bs * LSPCV       # of condensable organic vapor interacting between gas
74 !bs               aerosol phase with SORGAM
75 !bs
76 !     param.inc stop
78 ! //////////////////////////////////////////////////////////////////////
79 ! FSB include file
81 ! *** declare and set flag for organic aerosol production method
82 ! *** Two method are available:
84 ! *** The method of Pandis,Harley, Cass, and Seinfeld, 1992,
85 !     Secondary aerosol formation and transport, Atmos. Environ., 26A,
86 !     pp 2453-2466
87 !     Bowman et al. Atmospheric Environment
88 !     Vol 29, pp 579-589, 1995.
89 ! *** and
90 ! *** The method of Odum, Hoffmann, Bowman, Collins, Flagen and
91 !     Seinfeld, 1996, Gas/particle partitioning and secondary organic ae
92 !     yields, Environ. Sci, Technol, 30, pp 2580-2585.
93                             ! 1 = Pandis et al.  1992 method is used
94       INTEGER orgaer
95                             ! 2 = Pankow 1994/Odum et al. 1996 method is
96 ! ***
97 ! switch for organic aerosol method         
98       PARAMETER (orgaer=2)
100 ! *** information about visibility variables
101 ! number of visibility variables    
102       INTEGER n_ae_vis_spc
103       PARAMETER (n_ae_vis_spc=2)
105 ! index for visual range in deciview             
106       INTEGER idcvw
107       PARAMETER (idcvw=1)
108 ! index for extinction [ 1/km ]                  
109       INTEGER ibext
110       PARAMETER (ibext=2)
112 ! *** set up indices for array  CBLK
114 ! index for Accumulation mode sulfate aerosol
115       INTEGER vso4aj
116       PARAMETER (vso4aj=1)
118 ! index for Aitken mode sulfate concentration
119       INTEGER vso4ai
120       PARAMETER (vso4ai=2)
122 ! index for Accumulation mode aerosol ammonium
123       INTEGER vnh4aj
124       PARAMETER (vnh4aj=3)
126 ! index for Aitken mode ammonium concentration
127       INTEGER vnh4ai
128       PARAMETER (vnh4ai=4)
130 ! index for Accumulation mode aerosol nitrate
131       INTEGER vno3aj
132       PARAMETER (vno3aj=5)
134 ! index for Aitken mode nitrate concentration
135       INTEGER vno3ai
136       PARAMETER (vno3ai=6)
138 ! index for Accumulation mode aerosol sodium
139       INTEGER vnaaj
140       PARAMETER (vnaaj=7)
142 ! index for Aitken mode sodium concentration
143       INTEGER vnaai
144       PARAMETER (vnaai=8)
146 ! index for Accumulation mode aerosol chloride
147       INTEGER vclaj
148       PARAMETER (vclaj=9)
150 ! index for Aitken mode chloride concentration
151       INTEGER vclai
152       PARAMETER (vclai=10)
155 ! I've changed the names and simplified
156 ! indices for accumulation and aitken modes of anthropogenic SOA
157       INTEGER, PARAMETER ::  vasoa1j=11
158       INTEGER, PARAMETER ::  vasoa1i=12
160       INTEGER, PARAMETER ::  vasoa2j=13
161       INTEGER, PARAMETER ::  vasoa2i=14
163       INTEGER, PARAMETER ::  vasoa3j=15
164       INTEGER, PARAMETER ::  vasoa3i=16
166       INTEGER, PARAMETER ::  vasoa4j=17
167       INTEGER, PARAMETER ::  vasoa4i=18
169 ! indices for accumulation and aitken modes of biogenic SOA
170       INTEGER, PARAMETER ::  vbsoa1j=19
171       INTEGER, PARAMETER ::  vbsoa1i=20
173       INTEGER, PARAMETER ::  vbsoa2j=21
174       INTEGER, PARAMETER ::  vbsoa2i=22
176       INTEGER, PARAMETER ::  vbsoa3j=23
177       INTEGER, PARAMETER ::  vbsoa3i=24
179       INTEGER, PARAMETER ::  vbsoa4j=25
180       INTEGER, PARAMETER ::  vbsoa4i=26
181 !------------------------------------------------------------------------------
183 ! index for Accumulation mode primary anthropogenic
184       INTEGER vorgpaj
185       PARAMETER (vorgpaj=27)
187 ! index for Aitken mode primary anthropogenic
188       INTEGER vorgpai
189       PARAMETER (vorgpai=28)
191 ! index for Accumulation mode aerosol elemen
192       INTEGER vecj
193       PARAMETER (vecj=29)
195 ! index for Aitken mode elemental carbon    
196       INTEGER veci
197       PARAMETER (veci=30)
198 !liqy
199 ! index for Accumulation mode aerosol calcium
200                 INTEGER vcaaj
201                 PARAMETER (vcaaj=31)
202 ! index for Aitken mode aerosol calcium         
203                 INTEGER vcaai
204                 PARAMETER (vcaai=32)
206 ! index for Accumulation mode aerosol potassium
207                 INTEGER vkaj
208                 PARAMETER (vkaj=33)
209 ! index for Aitken mode aerosol potassium               
210                 INTEGER vkai
211                 PARAMETER (vkai=34)
213 ! index for Accumulation mode aerosol magesium
214                 INTEGER vmgaj
215                 PARAMETER (vmgaj=35)
216 ! index for Aitken mode aerosol magesium                
217                 INTEGER vmgai
218                 PARAMETER (vmgai=36)
220 ! index for Accumulation mode primary PM2.5 
221       INTEGER vp25aj
222       PARAMETER (vp25aj=37)
224 ! index for Aitken mode primary PM2.5 concentration
225       INTEGER vp25ai
226       PARAMETER (vp25ai=38)
228 ! index for coarse mode anthropogenic aerososol
229       INTEGER vantha
230       PARAMETER (vantha=39)
232 ! index for coarse mode marine aerosol concentration
233       INTEGER vseas
234       PARAMETER (vseas=40)
236 ! index for coarse mode soil-derived aerosol
237       INTEGER vsoila
238       PARAMETER (vsoila=41)
240 ! index for Aitken mode number              
241       INTEGER vnu0
242       PARAMETER (vnu0=42)
244 ! index for accum  mode number              
245       INTEGER vac0
246       PARAMETER (vac0=43)
248 ! index for coarse mode number              
249       INTEGER vcorn
250       PARAMETER (vcorn=44)
252 ! index for Accumulation mode aerosol water 
253       INTEGER vh2oaj
254       PARAMETER (vh2oaj=45)
256 ! index for Aitken mode aerosol water concentration
257       INTEGER vh2oai
258       PARAMETER (vh2oai=46)
260 ! index for Aitken mode 3'rd moment         
261       INTEGER vnu3
262       PARAMETER (vnu3=47)
263 ! index for Accumulation mode 3'rd moment   
264       INTEGER vac3
265       PARAMETER (vac3=48)
267 ! index for coarse mode 3rd moment          
268       INTEGER vcor3
269       PARAMETER (vcor3=49)
271 ! index for sulfuric acid vapor concentration
272       INTEGER vsulf
273       PARAMETER (vsulf=50)
275 ! index for nitric acid vapor concentration
276       INTEGER vhno3
277       PARAMETER (vhno3=51)
279 ! index for ammonia gas concentration
280       INTEGER vnh3
281       PARAMETER (vnh3=52)
283 ! index for HCL gas concentration
284       INTEGER vhcl
285       PARAMETER (vhcl=53)
288 ! index for N2O5 gas concentration
289         INTEGER vn2o5
290         PARAMETER (vn2o5=54)
291 ! index for CLNO2 gas concentration
292         INTEGER vclno2
293         PARAMETER (vclno2=55)
295 ! index for n2o5 uptake
296         INTEGER vgamn2o5
297         PARAMETER (vgamn2o5=56)
299 ! index for n2o5 velocity
300         INTEGER vcn2o5
301         PARAMETER (vcn2o5=57)
303 ! index for n2o5 heterogeneous reaction rate
304         INTEGER vkn2o5
305         PARAMETER (vkn2o5=58)
307 ! index for clno2 yield from n2o5 heterogeneous rate
308         INTEGER vyclno2
309         PARAMETER (vyclno2=59)
311 ! index for surface area of aerosol nuclei mode
312         INTEGER vsnu
313         PARAMETER (vsnu=60)
315 ! index for surface area of aerosol accum mode
316         INTEGER vsac
317         PARAMETER (vsac=61)
319 ! index for surface area of aerosol coarse mode
320         INTEGER vsco
321         PARAMETER (vsco=62)
323 ! index for the inverse of air density, used to transform ug/m3 to and from
324 ! ug/kg dry air.
326         INTEGER valt_in
327         PARAMETER (valt_in=63)
329 INTEGER, PARAMETER :: vcvasoa1=64
330 INTEGER, PARAMETER :: vcvasoa2=65
331 INTEGER, PARAMETER :: vcvasoa3=66
332 INTEGER, PARAMETER :: vcvasoa4=67
333 INTEGER, PARAMETER :: vcvbsoa1=68
334 INTEGER, PARAMETER :: vcvbsoa2=69
335 INTEGER, PARAMETER :: vcvbsoa3=70
336 INTEGER, PARAMETER :: vcvbsoa4=71
337 !liqy-20140912
338 !-----------------------------------------------------------------------------
340 ! *** set up species dimension and indices for sedimentation
341 !     velocity array VSED
343 ! number of sedimentation velocities         
344       INTEGER naspcssed
345       PARAMETER (naspcssed=6)
347 ! index for Aitken mode number                  
348       INTEGER vsnnuc
349       PARAMETER (vsnnuc=1)
351 ! index for Accumulation mode number            
352       INTEGER vsnacc
353       PARAMETER (vsnacc=2)
355 ! index for coarse mode number                  
356       INTEGER vsncor
357       PARAMETER (vsncor=3)
359 ! index for Aitken mode mass                     
360       INTEGER vsmnuc
361       PARAMETER (vsmnuc=4)
363 ! index for accumulation mode mass               
364       INTEGER vsmacc
365       PARAMETER (vsmacc=5)
367 ! index for coarse mass                         
368       INTEGER vsmcor
369       PARAMETER (vsmcor=6)
371 ! *** set up species dimension and indices for deposition
372 !     velocity array VDEP
374 ! number of deposition velocities            
375       INTEGER naspcsdep
376       PARAMETER (naspcsdep=7)
378 ! index for Aitken mode number                  
379       INTEGER vdnnuc
380       PARAMETER (vdnnuc=1)
382 ! index for accumulation mode number            
383       INTEGER vdnacc
384       PARAMETER (vdnacc=2)
386 ! index for coarse mode number                  
387       INTEGER vdncor
388       PARAMETER (vdncor=3)
390 ! index for Aitken mode mass                    
391       INTEGER vdmnuc
392       PARAMETER (vdmnuc=4)
394 ! index for accumulation mode                   
395       INTEGER vdmacc
396       PARAMETER (vdmacc=5)
398 ! index for fine mode mass (Aitken + accumulation)
399       INTEGER vdmfine
400       PARAMETER (vdmfine=6)
402 ! index for coarse mode mass                    
403       INTEGER vdmcor
404       PARAMETER (vdmcor=7)
406 ! SOA precursors + OH, O3, NO3
407 ! anthropogenic
408 INTEGER, PARAMETER :: palk4=1
409 INTEGER, PARAMETER :: palk5=2
410 INTEGER, PARAMETER :: pole1=3
411 INTEGER, PARAMETER :: pole2=4
412 INTEGER, PARAMETER :: paro1=5
413 INTEGER, PARAMETER :: paro2=6
415 ! biogenic
416 INTEGER, PARAMETER :: pisop=7
417 INTEGER, PARAMETER :: pterp=8
418 INTEGER, PARAMETER :: psesq=9
420 ! for branching
421 INTEGER, PARAMETER :: pbrch=10
423  ! new indices
424 INTEGER, PARAMETER :: pasoa1=1
425 INTEGER, PARAMETER :: pasoa2=2
426 INTEGER, PARAMETER :: pasoa3=3
427 INTEGER, PARAMETER :: pasoa4=4
428       
429 INTEGER, PARAMETER :: pbsoa1=5
430 INTEGER, PARAMETER :: pbsoa2=6
431 INTEGER, PARAMETER :: pbsoa3=7
432 INTEGER, PARAMETER :: pbsoa4=8
433 !-----------------------------------------------
436 !bs * end of AERO_SOA.EXT *
439 ! *** include file for aerosol routines
442 !....................................................................
444 !  CONTAINS: Fundamental constants for air quality modeling
446 !  DEPENDENT UPON:  none
448 !  REVISION HISTORY:
450 !    Adapted 6/92 by CJC from ROM's PI.EXT.
452 !    Revised 3/1/93 John McHenry to include constants needed by
453 !    LCM aqueous chemistry
454 !    Revised 9/93 by John McHenry to include additional constants
455 !    needed for FMEM clouds and aqueous chemistry
457 !    Revised 3/4/96 by Dr. Francis S. Binkowski to reflect current
458 !    Models3 view that MKS units should be used wherever possible,
459 !    and that sources be documentated. Some variables have been added
460 !    names changed, and values revised.
462 !    Revised 3/7/96 to have universal gas constant input and compute
463 !    gas constant is chemical form. TWOPI is now calculated rather than
465 !    Revised 3/13/96 to group declarations and parameter statements.
467 !    Revised 9/13/96 to include more physical constants.
468 !    Revised 12/24/96 eliminate silly EPSILON, AMISS
470 !    Revised 1/06/97 to eliminate most derived constants
471 !    10/12/11- Modified to use with soa_vbs, by Ravan Ahmadov
473 !    Revised 10/10/2022 for only RACM_SOA_VBS_HET, Jordan Schnell
475 ! FSB REFERENCES:
477 !      CRC76,        CRC Handbook of Chemistry and Physics (76th Ed),
478 !                     CRC Press, 1995
479 !      Hobbs, P.V.   Basic Physical Chemistry for the Atmospheric Scien
480 !                     Cambridge Univ. Press, 206 pp, 1995.
481 !      Snyder, J.P., Map Projections-A Working Manual, U.S. Geological
482 !                     Paper 1395 U.S.GPO, Washington, DC, 1987.
483 !      Stull, R. B., An Introduction to Bounday Layer Meteorology, Klu
484 !                     Dordrecht, 1988
486 ! Geometric Constants:
488       REAL*8 & ! PI (single precision 3.141593)
489         pirs
490       PARAMETER (pirs=3.14159265358979324)
491 !      REAL     PIRS ! PI (single precision 3.141593)
492 !      PARAMETER ( PIRS = 3.141593 )
493 ! Fundamental Constants: ( Source: CRC76, pp 1-1 to 1-6)
495 ! Avogadro's Constant [ 1/mol ]
496       REAL avo
497       PARAMETER (avo=6.0221367E23)
499 ! universal gas constant [ J/mol-K ]
500       REAL rgasuniv
501       PARAMETER (rgasuniv=8.314510)
503 ! standard atmosphere  [ Pa ]
504       REAL stdatmpa
505       PARAMETER (stdatmpa=101325.0)
507 ! Standard Temperature [ K ]
508       REAL stdtemp
509       PARAMETER (stdtemp=273.15)
511 ! Stefan-Boltzmann [ W/(m**2 K**4) ]
512       REAL stfblz
513       PARAMETER (stfblz=5.67051E-8)
516 ! mean gravitational acceleration [ m/sec**2 ]
517       REAL grav
518       PARAMETER (grav=9.80622)
519 ! FSB Non MKS qualtities:
521 ! Molar volume at STP [ L/mol ] Non MKS units
522       REAL molvol
523       PARAMETER (molvol=22.41410)
526 ! Atmospheric Constants:
528 ! FSB                     78.06%  N2, 21% O2 and 0.943% A on a mole
529       REAL mwair
530                         ! fraction basis. ( Source : Hobbs, 1995) pp 69-
531 ! mean molecular weight for dry air [ g/mol ]
532       PARAMETER (mwair=28.9628)
534 ! dry-air gas constant [ J / kg-K ]
535       REAL rdgas
536       PARAMETER (rdgas=1.0E3*rgasuniv/mwair)
538 !  3*PI
539       REAL threepi
540       PARAMETER (threepi=3.0*pirs)
542 !  6/PI
543       REAL f6dpi
544       PARAMETER (f6dpi=6.0/pirs)
546 !  1.0e9 * 6/PIRS
547       REAL f6dpi9
548       PARAMETER (f6dpi9=1.0E9*f6dpi)
550 ! 1.0e-9 * 6/PIRS
551       REAL f6dpim9
552       PARAMETER (f6dpim9=1.0E-9*f6dpi)
554 !  SQRT( PI )
555       REAL sqrtpi
556       PARAMETER (sqrtpi=1.7724539)
558 !  SQRT( 2 )
559       REAL sqrt2
560       PARAMETER (sqrt2=1.4142135623731)
562 !  ln( sqrt( 2 ) )
563       REAL lgsqt2
564       PARAMETER (lgsqt2=0.34657359027997)
566 !  1/ln( sqrt( 2 ) )
567       REAL dlgsqt2
568       PARAMETER (dlgsqt2=1.0/lgsqt2)
570 !  1/3
571       REAL one3
572       PARAMETER (one3=1.0/3.0)
574 !  2/3
575       REAL two3
576       PARAMETER (two3=2.0/3.0)
579 ! *** physical constants:
581 ! Boltzmann's Constant [ J / K ]
582       REAL boltz
583       PARAMETER (boltz=rgasuniv/avo)
586 ! *** component densities [ kg/m**3 ] :
589 !  bulk density of aerosol sulfate
590       REAL rhoso4
591       PARAMETER (rhoso4=1.8E3)
593 !  bulk density of aerosol ammonium
594       REAL rhonh4
595       PARAMETER (rhonh4=1.8E3)
597 ! bulk density of aerosol nitrate
598       REAL rhono3
599       PARAMETER (rhono3=1.8E3)
601 !  bulk density of aerosol water
602       REAL rhoh2o
603       PARAMETER (rhoh2o=1.0E3)
605 ! bulk density for aerosol organics
606       REAL rhoorg
607       PARAMETER (rhoorg=1.0E3)
609 ! bulk density for aerosol soil dust
610       REAL rhosoil
611       PARAMETER (rhosoil=2.6E3)
613 ! bulk density for marine aerosol
614       REAL rhoseas
615       PARAMETER (rhoseas=2.2E3)
617 ! bulk density for anthropogenic aerosol
618       REAL rhoanth
619       PARAMETER (rhoanth=2.2E3)
621 ! bulk density of aerosol sodium
622       REAL rhona
623       PARAMETER (rhona=2.2E3)
625 ! bulk density of aerosol chloride
626       REAL rhocl
627       PARAMETER (rhocl=2.2E3)
629 !liqy
630 ! bulk density of aerosol casium. equals to dust.
631                 REAL rhoca
632                 PARAMETER (rhoca=2.6E3)
634 ! bulk density of aerosol k. equals to dust.
635                 REAL rhok
636                 PARAMETER (rhok=2.6E3)
638 ! bulk density of aerosol mg. equals to dust.
639                 REAL rhomg
640                 PARAMETER (rhomg=2.6E3)
641 !liqy-20140616
642 ! *** Factors for converting aerosol mass concentration [ ug m**-3] to
643 !         to 3rd moment concentration [ m**3 m^-3]
645       REAL so4fac
646       PARAMETER (so4fac=f6dpim9/rhoso4)
648       REAL nh4fac
649       PARAMETER (nh4fac=f6dpim9/rhonh4)
651       REAL h2ofac
652       PARAMETER (h2ofac=f6dpim9/rhoh2o)
654       REAL no3fac
655       PARAMETER (no3fac=f6dpim9/rhono3)
657       REAL orgfac
658       PARAMETER (orgfac=f6dpim9/rhoorg)
660       REAL soilfac
661       PARAMETER (soilfac=f6dpim9/rhosoil)
663       REAL seasfac
664       PARAMETER (seasfac=f6dpim9/rhoseas)
666       REAL anthfac
667       PARAMETER (anthfac=f6dpim9/rhoanth)
669       REAL nafac
670       PARAMETER (nafac=f6dpim9/rhona)
672       REAL clfac
673       PARAMETER (clfac=f6dpim9/rhocl)
675 !liqy
676                 REAL cafac
677                 PARAMETER (cafac=f6dpim9/rhoca)
679                 REAL kfac
680                 PARAMETER (kfac=f6dpim9/rhok)
682                 REAL mgfac
683                 PARAMETER (mgfac=f6dpim9/rhomg)
686 !liqy-20140616
687 !  starting standard surface pressure [ Pa ]  
688       REAL pss0
689       PARAMETER (pss0=101325.0)
691 !  starting standard surface temperature [ K ]
692       REAL tss0
693       PARAMETER (tss0=288.15)
695 !  initial sigma-G for nucleimode                 
696       REAL sginin
697       PARAMETER (sginin=1.70)
699 !  initial sigma-G for accumulation mode          
700       REAL sginia
701       PARAMETER (sginia=2.00)
703 ! initial sigma-G for coarse mode               
704       REAL sginic
705       PARAMETER (sginic=2.5)
707 !  initial mean diameter for nuclei mode [ m ]    
708       REAL dginin
709       PARAMETER (dginin=0.01E-6)
711 !  initial mean diameter for accumulation mode [ m ]
712       REAL dginia
713       PARAMETER (dginia=0.07E-6)
715 ! initial mean diameter for coarse mode [ m ]  
716       REAL dginic
717       PARAMETER (dginic=1.0E-6)
719 !................   end   AERO3box.EXT   ...............................
720 !///////////////////////////////////////////////////////////////////////
722 !     LOGICAL diagnostics
723 ! *** Scalar variables for fixed standard deviations.
725 ! Flag for writing diagnostics to file       
726 ! nuclei mode exp( log^2( sigmag )/8 )  
727       REAL en1
728 ! accumulation mode exp( log^2( sigmag )
729       REAL ea1
731       REAL ec1
732 ! coarse mode exp( log^2( sigmag )/8 )  
733 ! nuclei        **4                    
734       REAL esn04
735 ! accumulation                         
736       REAL esa04
738       REAL esc04
739 ! coarse                               
740 ! nuclei        **5                    
741       REAL esn05
743       REAL esa05
744 ! accumulation                         
745 ! nuclei        **8                    
746       REAL esn08
747 ! accumulation                         
748       REAL esa08
750       REAL esc08
751 ! coarse                               
752 ! nuclei        **9                    
753       REAL esn09
755       REAL esa09
756 ! accumulation                         
757 ! nuclei        **12                   
758       REAL esn12
759 ! accumulation                         
760       REAL esa12
762       REAL esc12
763 ! coarse mode                          
764 ! nuclei        **16                   
765       REAL esn16
766 ! accumulation                         
767       REAL esa16
769       REAL esc16
770 ! coarse                               
771 ! nuclei        **20                   
772       REAL esn20
773 ! accumulation                         
774       REAL esa20
776       REAL esc20
777 ! coarse                               
778 ! nuclei        **25                   
779       REAL esn25
781       REAL esa25
782 ! accumulation                         
783 ! nuclei        **24                   
784       REAL esn24
785 ! accumulation                         
786       REAL esa24
788       REAL esc24
789 ! coarse                               
790 ! nuclei        **28                   
791       REAL esn28
792 ! accumulation                         
793       REAL esa28
795       REAL esc28
796 ! coarse                               
797 ! nuclei        **32                   
798       REAL esn32
799 ! accumulation                         
800       REAL esa32
802       REAL esc32
803 ! coarese                              
804 ! nuclei        **36                   
805       REAL esn36
806 ! accumulation                         
807       REAL esa36
809       REAL esc36
810 ! coarse                               
811 ! nuclei        **49                   
812       REAL esn49
814       REAL esa49
815 ! accumulation                         
816 ! nuclei        **52                   
817       REAL esn52
819       REAL esa52
820 ! accumulation                         
821 ! nuclei        **64                   
822       REAL esn64
823 ! accumulation                         
824       REAL esa64
826       REAL esc64
827 ! coarse                               
829       REAL esn100
830 ! nuclei        **100                  
831 ! nuclei        **(-20)                
832       REAL esnm20
833 ! accumulation                         
834       REAL esam20
836       REAL escm20
837 ! coarse                               
838 ! nuclei        **(-32)                
839       REAL esnm32
840 ! accumulation                         
841       REAL esam32
843       REAL escm32
844 ! coarse                               
845 ! log(sginin)                           
846       REAL xxlsgn
847 ! log(sginia)                           
848       REAL xxlsga
850       REAL xxlsgc
851 ! log(sginic )                          
852 ! log(sginin ) ** 2                           
853       REAL l2sginin
854 ! log(sginia ) ** 2                           
855       REAL l2sginia
857       REAL l2sginic
859 ! *** set up COMMON blocks for esg's:
861 ! log(sginic ) ** 2
863 ! *** SET NUCLEATION FLAG:
865                             ! INUCL = 0, Kerminen & Wexler Mechanism
866       INTEGER inucl
867                             ! INUCL = 1, Youngblood and Kreidenweis mech
868                             ! INUCL = 2, Kulmala et al. mechanism
869 ! Flag for Choice of nucleation Mechanism   
870       PARAMETER (inucl=2)
872 ! *** Set flag for sedimentation velocities:
874       LOGICAL icoarse
875       PARAMETER (icoarse=.FALSE.) ! *** END AERO_INTERNAL.EXT
876 ! *** Diameters and standard deviations for emissions
877 !     the diameters are the volume (mass) geometric mean diameters
879 ! *** Aitken mode:
880 ! special factor to compute mass transfer           
881       REAL dgvem_i
882       PARAMETER (dgvem_i=0.03E-6) ! [ m ]                            
883       REAL sgem_i
884       PARAMETER (sgem_i=1.7)
886 ! *** Accumulation mode:
887       REAL dgvem_j
888       PARAMETER (dgvem_j=0.3E-6) ! [ m ]                             
889       REAL sgem_j
890       PARAMETER (sgem_j=2.0)
892 ! *** Coarse mode
893       REAL dgvem_c
894       PARAMETER (dgvem_c=6.0E-6) ! [ m ] <<< Corrected 11/19/97      
895       REAL sgem_c
896       PARAMETER (sgem_c=2.2)
898 ! *** factors for getting number emissions rate from mass emissions rate
899 ! Aitken mode                                       
900       REAL factnumn
901 ! accumulation mode                                 
902       REAL factnuma
904       REAL factnumc
905 ! coarse mode                                       
906       REAL facatkn_min, facacc_min
907       PARAMETER (facatkn_min=0.04,facacc_min=1.0-facatkn_min)
908       REAL xxm3
909       REAL, PARAMETER ::  conmin = 1.E-16
910       REAL, PARAMETER ::  epsilc = 1.E-16
911 ! [ ug/m**3 ] ! changed 1/6/98 
912       REAL*8 & ! factor to set minimum for Aitken mode number  
913         nummin_i
914       REAL*8 & ! factor to set minimum for accumulation mode nu
915         nummin_j
916       REAL*8 & 
917         nummin_c
918 ! factor to set minimum for coarse mode number  
920 !bs      REAL ALPHSULF ! Accommodation coefficient for sulfuric acid
921 !bs      PARAMETER ( ALPHSULF = 0.05 ) ! my be set to one in future
923 !bs      REAL DIFFSULF ! molecular diffusivity for sulfuric acid [ m**2
924 !bs      PARAMETER( DIFFSULF = 0.08E-4 ) ! may be changed in future
926 !bs * 23/03/99 updates of ALPHSULF and DIFFSULF adopted fro new code fro
927 !bs * DIFFSULF is calculated from Reid, Prausnitz, and Poling, The prope
928 !bs * of gases and liquids, 4th edition, McGraw-Hill, 1987, pp 587-588.
929 !bs * Equation (11-4.4) was used.
930 !bs * The value is at T = 273.16 K and P = 1.01325E05 Pa
931 !bs * Temperature dependence is included for DIFFSULF via DIFFCORR (see
933 ! Accommodation coefficient for sulfuric
934       REAL alphsulf
935       PARAMETER (alphsulf=1.0) 
936 !bs updated from code of FSB         
937 ! molecular weight for sulfuric acid [ kg/mole ] MKS 
938       REAL mwh2so4
939       PARAMETER (mwh2so4=98.07354E-3) 
940 !cia corrected error 24/11/97
941 ! molecular diffusivity for sulfuric acid [ m**2 /se
942       REAL diffsulf
943       PARAMETER (diffsulf=9.362223E-06) 
944 !bs updated from code of FSB 
945 !bs Accomodation coefficient for organic
946       REAL alphaorg
947       PARAMETER (alphaorg=1.0)                                    !bs Kleeman et al. '99 propose alpha
948 !bs Bowman et al. '97 uses alpha = 1.
949 !bs mean molecular weight of organics [k
950       REAL mworg
951       PARAMETER (mworg=175.0E-03)
953 !bs * DIFFORG is calculated from the same formula as DIFFSULF.
954 !bs * An average elemental composition of C=8, O=3, N=1, H=17 is asuumed
955 !bs * to calculate DIFFORG at T = 273.16K and  P = 1.01325E05 Pa.
956 !bs * Temperature dependence is included below.
957 !bs molecular diffusivity for organics [
958       REAL difforg
959       PARAMETER (difforg=5.151174E-06)
960 ! *** CCONC is the factor for near-continuum condensation.
961 ! ccofm * sqrt( ta )                    
962       REAL cconc
963       PARAMETER (cconc=2.0*pirs*diffsulf) 
964 !bs * factor for NC condensation for organics
965 ! [ m**2 / sec ]       
966       REAL cconc_org
967       PARAMETER (cconc_org=2.0*pirs*difforg) 
968 ! [ m**2 / sec ]    
969 !bs analogue to CCOFM but for organics  
970       REAL ccofm_org
971 ! FSB  CCOFM is  the accommodation coefficient
972 !      times the mean molecular velocity for h2so4 without the temperatu
973 !      after some algebra
975 !bs CCOFM_ORG * sqrt(TA)                
976 ! set to a value below                  
977       REAL ccofm
978 ! minimum aerosol sulfate concentration          
979       REAL aeroconcmin
980       PARAMETER (aeroconcmin=0.0001) 
982 !*******************************************************************
983 !*                                                                 *
984 !*  start parameters and variables for aerosol-cloud interactions  *
985 !*                                                                 *
986 !*******************************************************************
988 !   maxd_atype = maximum allowable number of aerosol types
989 !   maxd_asize = maximum allowable number of aerosol size bins
990 !   maxd_acomp = maximum allowable number of chemical components
991 !       in each aerosol size bin
992 !   maxd_aphase = maximum allowable number of aerosol phases (gas, cloud, ice, rain, ...)
994 !   ntype_aer = number of aerosol types
995 !   nsize_aer(t) = number of aerosol size bins for aerosol type t. each bin w/ same set of components
996 !   nphase_aer = number of aerosol phases
998 !   msectional - if positive, moving-center sectional code is utilized,
999 !       and each mode is actually a section.
1000 !   maerosolincw - if positive, both unactivated/interstitial and activated
1001 !       aerosol species are simulated.  if zero/negative, only the
1002 !       unactivated are simulated.
1004 !   ncomp_aer(t) = number of chemical components for aerosol type t
1005 !   ncomp_aer_nontracer(t) = number of "non-tracer" chemical components while in gchm code
1006 !   mastercompptr_aer(c,t) = mastercomp type/i.d. for chemical component c
1007 !       (1=sulfate, others to be defined) and aerosol type t.
1008 !   massptr_aer(c,s,t,p) = gchm r-array index for the mixing ratio
1009 !       (moles-x/mole-air) for chemical component c in size bin s for type t and phase p
1011 !   waterptr_aer(s,t) = mixing ratio (moles-water/mole-air) for water
1012 !       associated with aerosol size bin s and type t
1013 !   hygroptr_aer(s,t) = gchm r-array index for the bulk hygroscopicity of the size bin and type
1014 !   numptr_aer(s,t,p) = gchm r-array index for the number mixing ratio
1015 !       (particles/mole-air) for aerosol size bin s, type t, and phase p
1016 !       If zero or negative, then number is not being simulated.
1018 !   mprognum_aer(s,t,p) - if positive, number mixing-ratio for size s, type t,
1019 !       and phase p will be prognosed.  Otherwise, no.
1021 !   ntot_mastercomp_aer = number of aerosol chemical components defined
1022 !   dens_mastercomp_aer(mc) = dry density (g/cm^3) of aerosol master chemical component type c
1023 !   mw_mastercomp_aer(mc) = molecular weight of aerosol master chemical component type mc
1024 !   name_mastercomp_aer(mc) = name of aerosol master chemical component type mc
1025 !   mc=mastercompptr_aer(c,t)
1026 !   dens_aer(c,t) = dry density (g/cm^3) of aerosol chemical component type c and type t
1027 !   mw_aer(c,t) = molecular weight of aerosol chemical component type c and type t
1028 !   name_aer(c,t) = name of aerosol chemical component type c and type t
1030 !   lptr_so4_aer(s,t,p) = gchm r-array index for the
1031 !       mixing ratio for sulfate associated with aerosol size bin s, type t, and phase p
1032 !   (similar for msa, oc, bc, nacl, dust)
1034 !-----------------------------------------------------------------------
1036 !   volumcen_sect(s,t)= volume (cm^3) at center of section m
1037 !   volumlo_sect(s,t) = volume (cm^3) at lower boundary of section m
1038 !   volumhi_sect(s,t) = volume (cm^3) at upper boundary of section m
1040 !   dlo_sect(s,t) = diameter (cm) at lower boundary of section m
1041 !   dhi_sect(s,t) = diameter (cm) at upper boundary of section m
1042 !   dcen_sect(s,t) = volume arithmetic-mean diameter (cm) of section m
1043 !       (corresponds to volumcen_sect == 0.5*(volumlo_sect + volumhi_sect)
1045 !-----------------------------------------------------------------------
1046 !   nov-04 sg ! replaced amode with aer and expanded aerosol dimension to include type and phase
1048         integer, parameter :: maxd_atype = 2
1049         integer, parameter :: maxd_asize = 2
1050         integer, parameter :: maxd_acomp = 19
1051         integer, parameter :: maxd_aphase = 2
1052         integer, save :: ai_phase ! interstitial phase of aerosol
1053         integer, save :: cw_phase ! cloud water phase of aerosol
1054         integer, save :: ci_phase ! cloud ice  phase of aerosol
1055         integer, save :: cr_phase ! rain  phase of aerosol
1056         integer, save :: cs_phase ! snow  phase of aerosol
1057         integer, save :: cg_phase ! graupel phase of aerosol
1059         integer, save :: ntype_aer = 0 ! number of types
1060         integer, save :: ntot_mastercomp_aer = 0 ! number of master components
1061         integer, save :: nphase_aer = 0 ! number of phases
1063         integer, save ::   &
1064           msectional, maerosolincw,   &
1065           nsize_aer( maxd_atype ),   & ! number of size bins
1066           ncomp_aer( maxd_atype ),   & ! number of chemical components
1067           ncomp_aer_nontracer( maxd_atype ),   &
1068           mastercompptr_aer(maxd_acomp, maxd_atype), &   !  mastercomp index
1069           massptr_aer( maxd_acomp, maxd_asize, maxd_atype, maxd_aphase ), & ! index for mixing ratio
1070           waterptr_aer( maxd_asize, maxd_atype ), & ! index for aerosol water
1071           hygroptr_aer( maxd_asize, maxd_atype ), & ! index for aerosol hygroscopicity
1072           numptr_aer( maxd_asize, maxd_atype, maxd_aphase ), & ! index for the number mixing ratio
1073           mprognum_aer(maxd_asize,maxd_atype,maxd_aphase)
1075         real, save ::   &
1076           dens_aer( maxd_acomp, maxd_atype ),   &
1077           dens_mastercomp_aer( maxd_acomp ),   &
1078           mw_mastercomp_aer( maxd_acomp ), &
1079           mw_aer( maxd_acomp, maxd_atype ),  &
1080           hygro_mastercomp_aer( maxd_acomp ), &
1081           hygro_aer( maxd_acomp, maxd_atype )
1082         character*10, save ::   &
1083           name_mastercomp_aer( maxd_acomp ), &
1084           name_aer( maxd_acomp, maxd_atype )
1086         real, save ::   &
1087           volumcen_sect( maxd_asize, maxd_atype ),   &
1088           volumlo_sect( maxd_asize, maxd_atype ),   &
1089           volumhi_sect( maxd_asize, maxd_atype ),   &
1090           dcen_sect( maxd_asize, maxd_atype ),   &
1091           dlo_sect( maxd_asize, maxd_atype ),   &
1092           dhi_sect( maxd_asize, maxd_atype ),   &
1093           sigmag_aer(maxd_asize, maxd_atype)
1095         integer, save ::                     &
1096           lptr_so4_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1097           lptr_nh4_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1098           lptr_no3_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1100           lptr_asoa1_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1101           lptr_asoa2_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1102           lptr_asoa3_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1103           lptr_asoa4_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1104           lptr_bsoa1_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1105           lptr_bsoa2_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1106           lptr_bsoa3_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1107           lptr_bsoa4_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1109 !         lptr_orgaro1_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1110 !         lptr_orgaro2_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1111 !         lptr_orgalk_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1112 !         lptr_orgole_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1113 !         lptr_orgba1_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1114 !         lptr_orgba2_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1115 !         lptr_orgba3_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1116 !         lptr_orgba4_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1118           lptr_orgpa_aer(maxd_asize,maxd_atype,maxd_aphase),      &
1119           lptr_ec_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1120           lptr_p25_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1121           lptr_anth_aer(maxd_asize,maxd_atype,maxd_aphase),       &
1122           lptr_cl_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1123           lptr_na_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1124           lptr_seas_aer(maxd_asize,maxd_atype,maxd_aphase),       &
1125           lptr_soil_aer(maxd_asize,maxd_atype,maxd_aphase)
1127         logical, save ::                     &
1128           do_cloudchem_aer(maxd_asize,maxd_atype)
1131 !   molecular weights (g/mol)
1132         real, parameter :: mw_so4_aer   = 96.066
1133         real, parameter :: mw_no3_aer   = 62.007
1134         real, parameter :: mw_nh4_aer   = 18.042
1135         real, parameter :: mw_oc_aer    = 250.0
1136         real, parameter :: mw_ec_aer    = 1.0
1137         real, parameter :: mw_oin_aer   = 1.0
1138         real, parameter :: mw_dust_aer  = 100.087
1139         real, parameter :: mw_seas_aer  = 58.440
1140         real, parameter :: mw_cl_aer    = 35.450
1141         real, parameter :: mw_na_aer    = 22.990
1142         real, parameter :: mw_water_aer = 18.016
1144 !   dry densities (g/cm3)
1145         real, parameter :: dens_so4_aer  = 1.80   ! = rhoso4
1146         real, parameter :: dens_no3_aer  = 1.80   ! = rhono3
1147         real, parameter :: dens_nh4_aer  = 1.80   ! = rhonh4
1148         real, parameter :: dens_oc_aer   = 1.5    ! = rhoorg ! changed from 1.0
1149         real, parameter :: dens_ec_aer   = 1.70
1150         real, parameter :: dens_dust_aer = 2.60  ! = rhosoil
1151         real, parameter :: dens_oin_aer  = 2.20  ! = rhoanth
1152         real, parameter :: dens_seas_aer = 2.20  ! = rhoseas
1153         real, parameter :: dens_cl_aer   = 2.20
1154         real, parameter :: dens_na_aer   = 2.20
1156 !   water density (g/cm3)
1157         real, parameter :: dens_water_aer  = 1.0
1159 !   hygroscopicity (dimensionless)
1160         real, parameter :: hygro_so4_aer  = 0.5
1161         real, parameter :: hygro_no3_aer  = 0.5
1162         real, parameter :: hygro_nh4_aer  = 0.5
1163         real, parameter :: hygro_oc_aer   = 0.14
1164         real, parameter :: hygro_ec_aer   = 1.e-6
1165         real, parameter :: hygro_oin_aer  = 0.14
1166         real, parameter :: hygro_dust_aer = 0.1
1167         real, parameter :: hygro_seas_aer = 1.16
1168         real, parameter :: hygro_cl_aer   = 1.16
1169         real, parameter :: hygro_na_aer   = 1.16
1171 ! table lookup of aerosol impaction/interception scavenging rates
1172         real dlndg_nimptblgrow
1173         integer nimptblgrow_mind, nimptblgrow_maxd
1174         parameter (nimptblgrow_mind=-14, nimptblgrow_maxd=24)
1175         real scavimptblnum(4, nimptblgrow_mind:nimptblgrow_maxd, maxd_asize, maxd_atype), &
1176              scavimptblvol(4, nimptblgrow_mind:nimptblgrow_maxd, maxd_asize, maxd_atype)
1178 !SAM 10/08 Gaussian quadrature constants for SOA_VBS deposition numerical integration
1179       INTEGER NGAUSdv
1180       PARAMETER( NGAUSdv = 7 )  ! Number of Gaussian Quadrature Points - constants defined in aerosols_sorgam_init
1181       REAL Y_GQ(NGAUSdv), WGAUS(NGAUSdv)
1183 !*****************************************************************
1184 !*                                                               *
1185 !*  end parameters and variables for aerosol-cloud interactions  *
1186 !*                                                               *
1187 !*****************************************************************
1190 END Module module_data_soa_vbs_het