Merge pull request #22 from wirc-sjsu/develop-w21
[WRF-Fire-merge.git] / chem / module_data_soa_vbs.F
blob3c4c7ae7564d2a544e76fd09309e9d43f5815712
1 MODULE module_data_soa_vbs
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)
154 !liqy
156 ! index for Accumulation mode aerosol calcium
157                 INTEGER vcaaj
158                 PARAMETER (vcaaj=11)
159 ! index for Aitken mode aerosol calcium         
160                 INTEGER vcaai
161                 PARAMETER (vcaai=12)
163 ! index for Accumulation mode aerosol potassium
164                 INTEGER vkaj
165                 PARAMETER (vkaj=13)
166 ! index for Aitken mode aerosol potassium               
167                 INTEGER vkai
168                 PARAMETER (vkai=14)
170 ! index for Accumulation mode aerosol magesium
171                 INTEGER vmgaj
172                 PARAMETER (vmgaj=15)
173 ! index for Aitken mode aerosol magesium                
174                 INTEGER vmgai
175                 PARAMETER (vmgai=16)
177 ! I've changed the names and simplified
178 ! indices for accumulation and aitken modes of anthropogenic SOA
179       INTEGER, PARAMETER ::  vasoa1j=17
180       INTEGER, PARAMETER ::  vasoa1i=18
182       INTEGER, PARAMETER ::  vasoa2j=19
183       INTEGER, PARAMETER ::  vasoa2i=20
185       INTEGER, PARAMETER ::  vasoa3j=21
186       INTEGER, PARAMETER ::  vasoa3i=22
188       INTEGER, PARAMETER ::  vasoa4j=23
189       INTEGER, PARAMETER ::  vasoa4i=24
191 ! indices for accumulation and aitken modes of biogenic SOA
192       INTEGER, PARAMETER ::  vbsoa1j=25
193       INTEGER, PARAMETER ::  vbsoa1i=26
195       INTEGER, PARAMETER ::  vbsoa2j=27
196       INTEGER, PARAMETER ::  vbsoa2i=28
198       INTEGER, PARAMETER ::  vbsoa3j=29
199       INTEGER, PARAMETER ::  vbsoa3i=30
201       INTEGER, PARAMETER ::  vbsoa4j=31
202       INTEGER, PARAMETER ::  vbsoa4i=32
203 !------------------------------------------------------------------------------
205 ! index for Accumulation mode primary anthropogenic
206       INTEGER vorgpaj
207       PARAMETER (vorgpaj=33)
209 ! index for Aitken mode primary anthropogenic
210       INTEGER vorgpai
211       PARAMETER (vorgpai=34)
213 ! index for Accumulation mode aerosol elemen
214       INTEGER vecj
215       PARAMETER (vecj=35)
217 ! index for Aitken mode elemental carbon    
218       INTEGER veci
219       PARAMETER (veci=36)
221 ! index for Accumulation mode primary PM2.5 
222       INTEGER vp25aj
223       PARAMETER (vp25aj=37)
225 ! index for Aitken mode primary PM2.5 concentration
226       INTEGER vp25ai
227       PARAMETER (vp25ai=38)
229 ! index for coarse mode anthropogenic aerososol
230       INTEGER vantha
231       PARAMETER (vantha=39)
233 ! index for coarse mode marine aerosol concentration
234       INTEGER vseas
235       PARAMETER (vseas=40)
237 ! index for coarse mode soil-derived aerosol
238       INTEGER vsoila
239       PARAMETER (vsoila=41)
241 ! index for Aitken mode number              
242       INTEGER vnu0
243       PARAMETER (vnu0=42)
245 ! index for accum  mode number              
246       INTEGER vac0
247       PARAMETER (vac0=43)
249 ! index for coarse mode number              
250       INTEGER vcorn
251       PARAMETER (vcorn=44)
253 ! index for Accumulation mode aerosol water 
254       INTEGER vh2oaj
255       PARAMETER (vh2oaj=45)
257 ! index for Aitken mode aerosol water concentration
258       INTEGER vh2oai
259       PARAMETER (vh2oai=46)
261 ! index for Aitken mode 3'rd moment         
262       INTEGER vnu3
263       PARAMETER (vnu3=47)
264 ! index for Accumulation mode 3'rd moment   
265       INTEGER vac3
266       PARAMETER (vac3=48)
268 ! index for coarse mode 3rd moment          
269       INTEGER vcor3
270       PARAMETER (vcor3=49)
272 ! index for sulfuric acid vapor concentration
273       INTEGER vsulf
274       PARAMETER (vsulf=50)
276 ! index for nitric acid vapor concentration
277       INTEGER vhno3
278       PARAMETER (vhno3=51)
280 ! index for ammonia gas concentration
281       INTEGER vnh3
282       PARAMETER (vnh3=52)
284 ! index for HCL gas concentration
285       INTEGER vhcl
286       PARAMETER (vhcl=53)
289 ! index for N2O5 gas concentration
290         INTEGER vn2o5
291         PARAMETER (vn2o5=54)
292 ! index for CLNO2 gas concentration
293         INTEGER vclno2
294         PARAMETER (vclno2=55)
296 ! index for n2o5 uptake
297         INTEGER vgamn2o5
298         PARAMETER (vgamn2o5=56)
300 ! index for n2o5 velocity
301         INTEGER vcn2o5
302         PARAMETER (vcn2o5=57)
304 ! index for n2o5 heterogeneous reaction rate
305         INTEGER vkn2o5
306         PARAMETER (vkn2o5=58)
308 ! index for clno2 yield from n2o5 heterogeneous rate
309         INTEGER vyclno2
310         PARAMETER (vyclno2=59)
312 ! index for surface area of aerosol nuclei mode
313         INTEGER vsnu
314         PARAMETER (vsnu=60)
316 ! index for surface area of aerosol accum mode
317         INTEGER vsac
318         PARAMETER (vsac=61)
320 ! index for surface area of aerosol coarse mode
321         INTEGER vsco
322         PARAMETER (vsco=62)
324 ! index for the inverse of air density, used to transform ug/m3 to and from
325 ! ug/kg dry air.
327         INTEGER valt_in
328         PARAMETER (valt_in=63)
330 INTEGER, PARAMETER :: vcvasoa1=64
331 INTEGER, PARAMETER :: vcvasoa2=65
332 INTEGER, PARAMETER :: vcvasoa3=66
333 INTEGER, PARAMETER :: vcvasoa4=67
334 INTEGER, PARAMETER :: vcvbsoa1=68
335 INTEGER, PARAMETER :: vcvbsoa2=69
336 INTEGER, PARAMETER :: vcvbsoa3=70
337 INTEGER, PARAMETER :: vcvbsoa4=71
338 !liqy-20140912
339 !-----------------------------------------------------------------------------
341 ! *** set up species dimension and indices for sedimentation
342 !     velocity array VSED
344 ! number of sedimentation velocities         
345       INTEGER naspcssed
346       PARAMETER (naspcssed=6)
348 ! index for Aitken mode number                  
349       INTEGER vsnnuc
350       PARAMETER (vsnnuc=1)
352 ! index for Accumulation mode number            
353       INTEGER vsnacc
354       PARAMETER (vsnacc=2)
356 ! index for coarse mode number                  
357       INTEGER vsncor
358       PARAMETER (vsncor=3)
360 ! index for Aitken mode mass                     
361       INTEGER vsmnuc
362       PARAMETER (vsmnuc=4)
364 ! index for accumulation mode mass               
365       INTEGER vsmacc
366       PARAMETER (vsmacc=5)
368 ! index for coarse mass                         
369       INTEGER vsmcor
370       PARAMETER (vsmcor=6)
372 ! *** set up species dimension and indices for deposition
373 !     velocity array VDEP
375 ! number of deposition velocities            
376       INTEGER naspcsdep
377       PARAMETER (naspcsdep=7)
379 ! index for Aitken mode number                  
380       INTEGER vdnnuc
381       PARAMETER (vdnnuc=1)
383 ! index for accumulation mode number            
384       INTEGER vdnacc
385       PARAMETER (vdnacc=2)
387 ! index for coarse mode number                  
388       INTEGER vdncor
389       PARAMETER (vdncor=3)
391 ! index for Aitken mode mass                    
392       INTEGER vdmnuc
393       PARAMETER (vdmnuc=4)
395 ! index for accumulation mode                   
396       INTEGER vdmacc
397       PARAMETER (vdmacc=5)
399 ! index for fine mode mass (Aitken + accumulation)
400       INTEGER vdmfine
401       PARAMETER (vdmfine=6)
403 ! index for coarse mode mass                    
404       INTEGER vdmcor
405       PARAMETER (vdmcor=7)
407 ! SOA precursors + OH, O3, NO3
408 ! anthropogenic
409 INTEGER, PARAMETER :: palk4=1
410 INTEGER, PARAMETER :: palk5=2
411 INTEGER, PARAMETER :: pole1=3
412 INTEGER, PARAMETER :: pole2=4
413 INTEGER, PARAMETER :: paro1=5
414 INTEGER, PARAMETER :: paro2=6
416 ! biogenic
417 INTEGER, PARAMETER :: pisop=7
418 INTEGER, PARAMETER :: pterp=8
419 INTEGER, PARAMETER :: psesq=9
421 ! for branching
422 INTEGER, PARAMETER :: pbrch=10
424  ! new indices
425 INTEGER, PARAMETER :: pasoa1=1
426 INTEGER, PARAMETER :: pasoa2=2
427 INTEGER, PARAMETER :: pasoa3=3
428 INTEGER, PARAMETER :: pasoa4=4
429       
430 INTEGER, PARAMETER :: pbsoa1=5
431 INTEGER, PARAMETER :: pbsoa2=6
432 INTEGER, PARAMETER :: pbsoa3=7
433 INTEGER, PARAMETER :: pbsoa4=8
434 !-----------------------------------------------
437 !bs * end of AERO_SOA.EXT *
440 ! *** include file for aerosol routines
443 !....................................................................
445 !  CONTAINS: Fundamental constants for air quality modeling
447 !  DEPENDENT UPON:  none
449 !  REVISION HISTORY:
451 !    Adapted 6/92 by CJC from ROM's PI.EXT.
453 !    Revised 3/1/93 John McHenry to include constants needed by
454 !    LCM aqueous chemistry
455 !    Revised 9/93 by John McHenry to include additional constants
456 !    needed for FMEM clouds and aqueous chemistry
458 !    Revised 3/4/96 by Dr. Francis S. Binkowski to reflect current
459 !    Models3 view that MKS units should be used wherever possible,
460 !    and that sources be documentated. Some variables have been added
461 !    names changed, and values revised.
463 !    Revised 3/7/96 to have universal gas constant input and compute
464 !    gas constant is chemical form. TWOPI is now calculated rather than
466 !    Revised 3/13/96 to group declarations and parameter statements.
468 !    Revised 9/13/96 to include more physical constants.
469 !    Revised 12/24/96 eliminate silly EPSILON, AMISS
471 !    Revised 1/06/97 to eliminate most derived constants
472 !    10/12/11- Modified to use with soa_vbs, by Ravan Ahmadov
474 ! FSB REFERENCES:
476 !      CRC76,        CRC Handbook of Chemistry and Physics (76th Ed),
477 !                     CRC Press, 1995
478 !      Hobbs, P.V.   Basic Physical Chemistry for the Atmospheric Scien
479 !                     Cambridge Univ. Press, 206 pp, 1995.
480 !      Snyder, J.P., Map Projections-A Working Manual, U.S. Geological
481 !                     Paper 1395 U.S.GPO, Washington, DC, 1987.
482 !      Stull, R. B., An Introduction to Bounday Layer Meteorology, Klu
483 !                     Dordrecht, 1988
485 ! Geometric Constants:
487       REAL*8 & ! PI (single precision 3.141593)
488         pirs
489       PARAMETER (pirs=3.14159265358979324)
490 !      REAL     PIRS ! PI (single precision 3.141593)
491 !      PARAMETER ( PIRS = 3.141593 )
492 ! Fundamental Constants: ( Source: CRC76, pp 1-1 to 1-6)
494 ! Avogadro's Constant [ 1/mol ]
495       REAL avo
496       PARAMETER (avo=6.0221367E23)
498 ! universal gas constant [ J/mol-K ]
499       REAL rgasuniv
500       PARAMETER (rgasuniv=8.314510)
502 ! standard atmosphere  [ Pa ]
503       REAL stdatmpa
504       PARAMETER (stdatmpa=101325.0)
506 ! Standard Temperature [ K ]
507       REAL stdtemp
508       PARAMETER (stdtemp=273.15)
510 ! Stefan-Boltzmann [ W/(m**2 K**4) ]
511       REAL stfblz
512       PARAMETER (stfblz=5.67051E-8)
515 ! mean gravitational acceleration [ m/sec**2 ]
516       REAL grav
517       PARAMETER (grav=9.80622)
518 ! FSB Non MKS qualtities:
520 ! Molar volume at STP [ L/mol ] Non MKS units
521       REAL molvol
522       PARAMETER (molvol=22.41410)
525 ! Atmospheric Constants:
527 ! FSB                     78.06%  N2, 21% O2 and 0.943% A on a mole
528       REAL mwair
529                         ! fraction basis. ( Source : Hobbs, 1995) pp 69-
530 ! mean molecular weight for dry air [ g/mol ]
531       PARAMETER (mwair=28.9628)
533 ! dry-air gas constant [ J / kg-K ]
534       REAL rdgas
535       PARAMETER (rdgas=1.0E3*rgasuniv/mwair)
537 !  3*PI
538       REAL threepi
539       PARAMETER (threepi=3.0*pirs)
541 !  6/PI
542       REAL f6dpi
543       PARAMETER (f6dpi=6.0/pirs)
545 !  1.0e9 * 6/PIRS
546       REAL f6dpi9
547       PARAMETER (f6dpi9=1.0E9*f6dpi)
549 ! 1.0e-9 * 6/PIRS
550       REAL f6dpim9
551       PARAMETER (f6dpim9=1.0E-9*f6dpi)
553 !  SQRT( PI )
554       REAL sqrtpi
555       PARAMETER (sqrtpi=1.7724539)
557 !  SQRT( 2 )
558       REAL sqrt2
559       PARAMETER (sqrt2=1.4142135623731)
561 !  ln( sqrt( 2 ) )
562       REAL lgsqt2
563       PARAMETER (lgsqt2=0.34657359027997)
565 !  1/ln( sqrt( 2 ) )
566       REAL dlgsqt2
567       PARAMETER (dlgsqt2=1.0/lgsqt2)
569 !  1/3
570       REAL one3
571       PARAMETER (one3=1.0/3.0)
573 !  2/3
574       REAL two3
575       PARAMETER (two3=2.0/3.0)
578 ! *** physical constants:
580 ! Boltzmann's Constant [ J / K ]
581       REAL boltz
582       PARAMETER (boltz=rgasuniv/avo)
585 ! *** component densities [ kg/m**3 ] :
588 !  bulk density of aerosol sulfate
589       REAL rhoso4
590       PARAMETER (rhoso4=1.8E3)
592 !  bulk density of aerosol ammonium
593       REAL rhonh4
594       PARAMETER (rhonh4=1.8E3)
596 ! bulk density of aerosol nitrate
597       REAL rhono3
598       PARAMETER (rhono3=1.8E3)
600 !  bulk density of aerosol water
601       REAL rhoh2o
602       PARAMETER (rhoh2o=1.0E3)
604 ! bulk density for aerosol organics
605       REAL rhoorg
606       PARAMETER (rhoorg=1.0E3)
608 ! bulk density for aerosol soil dust
609       REAL rhosoil
610       PARAMETER (rhosoil=2.6E3)
612 ! bulk density for marine aerosol
613       REAL rhoseas
614       PARAMETER (rhoseas=2.2E3)
616 ! bulk density for anthropogenic aerosol
617       REAL rhoanth
618       PARAMETER (rhoanth=2.2E3)
620 ! bulk density of aerosol sodium
621       REAL rhona
622       PARAMETER (rhona=2.2E3)
624 ! bulk density of aerosol chloride
625       REAL rhocl
626       PARAMETER (rhocl=2.2E3)
628 !liqy
629 ! bulk density of aerosol casium. equals to dust.
630                 REAL rhoca
631                 PARAMETER (rhoca=2.6E3)
633 ! bulk density of aerosol k. equals to dust.
634                 REAL rhok
635                 PARAMETER (rhok=2.6E3)
637 ! bulk density of aerosol mg. equals to dust.
638                 REAL rhomg
639                 PARAMETER (rhomg=2.6E3)
640 !liqy-20140616
641 ! *** Factors for converting aerosol mass concentration [ ug m**-3] to
642 !         to 3rd moment concentration [ m**3 m^-3]
644       REAL so4fac
645       PARAMETER (so4fac=f6dpim9/rhoso4)
647       REAL nh4fac
648       PARAMETER (nh4fac=f6dpim9/rhonh4)
650       REAL h2ofac
651       PARAMETER (h2ofac=f6dpim9/rhoh2o)
653       REAL no3fac
654       PARAMETER (no3fac=f6dpim9/rhono3)
656       REAL orgfac
657       PARAMETER (orgfac=f6dpim9/rhoorg)
659       REAL soilfac
660       PARAMETER (soilfac=f6dpim9/rhosoil)
662       REAL seasfac
663       PARAMETER (seasfac=f6dpim9/rhoseas)
665       REAL anthfac
666       PARAMETER (anthfac=f6dpim9/rhoanth)
668       REAL nafac
669       PARAMETER (nafac=f6dpim9/rhona)
671       REAL clfac
672       PARAMETER (clfac=f6dpim9/rhocl)
674 !liqy
675                 REAL cafac
676                 PARAMETER (cafac=f6dpim9/rhoca)
678                 REAL kfac
679                 PARAMETER (kfac=f6dpim9/rhok)
681                 REAL mgfac
682                 PARAMETER (mgfac=f6dpim9/rhomg)
685 !liqy-20140616
686 !  starting standard surface pressure [ Pa ]  
687       REAL pss0
688       PARAMETER (pss0=101325.0)
690 !  starting standard surface temperature [ K ]
691       REAL tss0
692       PARAMETER (tss0=288.15)
694 !  initial sigma-G for nucleimode                 
695       REAL sginin
696       PARAMETER (sginin=1.70)
698 !  initial sigma-G for accumulation mode          
699       REAL sginia
700       PARAMETER (sginia=2.00)
702 ! initial sigma-G for coarse mode               
703       REAL sginic
704       PARAMETER (sginic=2.5)
706 !  initial mean diameter for nuclei mode [ m ]    
707       REAL dginin
708       PARAMETER (dginin=0.01E-6)
710 !  initial mean diameter for accumulation mode [ m ]
711       REAL dginia
712       PARAMETER (dginia=0.07E-6)
714 ! initial mean diameter for coarse mode [ m ]  
715       REAL dginic
716       PARAMETER (dginic=1.0E-6)
718 !................   end   AERO3box.EXT   ...............................
719 !///////////////////////////////////////////////////////////////////////
721 !     LOGICAL diagnostics
722 ! *** Scalar variables for fixed standard deviations.
724 ! Flag for writing diagnostics to file       
725 ! nuclei mode exp( log^2( sigmag )/8 )  
726       REAL en1
727 ! accumulation mode exp( log^2( sigmag )
728       REAL ea1
730       REAL ec1
731 ! coarse mode exp( log^2( sigmag )/8 )  
732 ! nuclei        **4                    
733       REAL esn04
734 ! accumulation                         
735       REAL esa04
737       REAL esc04
738 ! coarse                               
739 ! nuclei        **5                    
740       REAL esn05
742       REAL esa05
743 ! accumulation                         
744 ! nuclei        **8                    
745       REAL esn08
746 ! accumulation                         
747       REAL esa08
749       REAL esc08
750 ! coarse                               
751 ! nuclei        **9                    
752       REAL esn09
754       REAL esa09
755 ! accumulation                         
756 ! nuclei        **12                   
757       REAL esn12
758 ! accumulation                         
759       REAL esa12
761       REAL esc12
762 ! coarse mode                          
763 ! nuclei        **16                   
764       REAL esn16
765 ! accumulation                         
766       REAL esa16
768       REAL esc16
769 ! coarse                               
770 ! nuclei        **20                   
771       REAL esn20
772 ! accumulation                         
773       REAL esa20
775       REAL esc20
776 ! coarse                               
777 ! nuclei        **25                   
778       REAL esn25
780       REAL esa25
781 ! accumulation                         
782 ! nuclei        **24                   
783       REAL esn24
784 ! accumulation                         
785       REAL esa24
787       REAL esc24
788 ! coarse                               
789 ! nuclei        **28                   
790       REAL esn28
791 ! accumulation                         
792       REAL esa28
794       REAL esc28
795 ! coarse                               
796 ! nuclei        **32                   
797       REAL esn32
798 ! accumulation                         
799       REAL esa32
801       REAL esc32
802 ! coarese                              
803 ! nuclei        **36                   
804       REAL esn36
805 ! accumulation                         
806       REAL esa36
808       REAL esc36
809 ! coarse                               
810 ! nuclei        **49                   
811       REAL esn49
813       REAL esa49
814 ! accumulation                         
815 ! nuclei        **52                   
816       REAL esn52
818       REAL esa52
819 ! accumulation                         
820 ! nuclei        **64                   
821       REAL esn64
822 ! accumulation                         
823       REAL esa64
825       REAL esc64
826 ! coarse                               
828       REAL esn100
829 ! nuclei        **100                  
830 ! nuclei        **(-20)                
831       REAL esnm20
832 ! accumulation                         
833       REAL esam20
835       REAL escm20
836 ! coarse                               
837 ! nuclei        **(-32)                
838       REAL esnm32
839 ! accumulation                         
840       REAL esam32
842       REAL escm32
843 ! coarse                               
844 ! log(sginin)                           
845       REAL xxlsgn
846 ! log(sginia)                           
847       REAL xxlsga
849       REAL xxlsgc
850 ! log(sginic )                          
851 ! log(sginin ) ** 2                           
852       REAL l2sginin
853 ! log(sginia ) ** 2                           
854       REAL l2sginia
856       REAL l2sginic
858 ! *** set up COMMON blocks for esg's:
860 ! log(sginic ) ** 2
862 ! *** SET NUCLEATION FLAG:
864                             ! INUCL = 0, Kerminen & Wexler Mechanism
865       INTEGER inucl
866                             ! INUCL = 1, Youngblood and Kreidenweis mech
867                             ! INUCL = 2, Kulmala et al. mechanism
868 ! Flag for Choice of nucleation Mechanism   
869       PARAMETER (inucl=2)
871 ! *** Set flag for sedimentation velocities:
873       LOGICAL icoarse
874       PARAMETER (icoarse=.FALSE.) ! *** END AERO_INTERNAL.EXT
875 ! *** Diameters and standard deviations for emissions
876 !     the diameters are the volume (mass) geometric mean diameters
878 ! *** Aitken mode:
879 ! special factor to compute mass transfer           
880       REAL dgvem_i
881       PARAMETER (dgvem_i=0.03E-6) ! [ m ]                            
882       REAL sgem_i
883       PARAMETER (sgem_i=1.7)
885 ! *** Accumulation mode:
886       REAL dgvem_j
887       PARAMETER (dgvem_j=0.3E-6) ! [ m ]                             
888       REAL sgem_j
889       PARAMETER (sgem_j=2.0)
891 ! *** Coarse mode
892       REAL dgvem_c
893       PARAMETER (dgvem_c=6.0E-6) ! [ m ] <<< Corrected 11/19/97      
894       REAL sgem_c
895       PARAMETER (sgem_c=2.2)
897 ! *** factors for getting number emissions rate from mass emissions rate
898 ! Aitken mode                                       
899       REAL factnumn
900 ! accumulation mode                                 
901       REAL factnuma
903       REAL factnumc
904 ! coarse mode                                       
905       REAL facatkn_min, facacc_min
906       PARAMETER (facatkn_min=0.04,facacc_min=1.0-facatkn_min)
907       REAL xxm3
908       REAL, PARAMETER ::  conmin = 1.E-16
909       REAL, PARAMETER ::  epsilc = 1.E-16
910 ! [ ug/m**3 ] ! changed 1/6/98 
911       REAL*8 & ! factor to set minimum for Aitken mode number  
912         nummin_i
913       REAL*8 & ! factor to set minimum for accumulation mode nu
914         nummin_j
915       REAL*8 & 
916         nummin_c
917 ! factor to set minimum for coarse mode number  
919 !bs      REAL ALPHSULF ! Accommodation coefficient for sulfuric acid
920 !bs      PARAMETER ( ALPHSULF = 0.05 ) ! my be set to one in future
922 !bs      REAL DIFFSULF ! molecular diffusivity for sulfuric acid [ m**2
923 !bs      PARAMETER( DIFFSULF = 0.08E-4 ) ! may be changed in future
925 !bs * 23/03/99 updates of ALPHSULF and DIFFSULF adopted fro new code fro
926 !bs * DIFFSULF is calculated from Reid, Prausnitz, and Poling, The prope
927 !bs * of gases and liquids, 4th edition, McGraw-Hill, 1987, pp 587-588.
928 !bs * Equation (11-4.4) was used.
929 !bs * The value is at T = 273.16 K and P = 1.01325E05 Pa
930 !bs * Temperature dependence is included for DIFFSULF via DIFFCORR (see
932 ! Accommodation coefficient for sulfuric
933       REAL alphsulf
934       PARAMETER (alphsulf=1.0) 
935 !bs updated from code of FSB         
936 ! molecular weight for sulfuric acid [ kg/mole ] MKS 
937       REAL mwh2so4
938       PARAMETER (mwh2so4=98.07354E-3) 
939 !cia corrected error 24/11/97
940 ! molecular diffusivity for sulfuric acid [ m**2 /se
941       REAL diffsulf
942       PARAMETER (diffsulf=9.362223E-06) 
943 !bs updated from code of FSB 
944 !bs Accomodation coefficient for organic
945       REAL alphaorg
946       PARAMETER (alphaorg=1.0)                                    !bs Kleeman et al. '99 propose alpha
947 !bs Bowman et al. '97 uses alpha = 1.
948 !bs mean molecular weight of organics [k
949       REAL mworg
950       PARAMETER (mworg=175.0E-03)
952 !bs * DIFFORG is calculated from the same formula as DIFFSULF.
953 !bs * An average elemental composition of C=8, O=3, N=1, H=17 is asuumed
954 !bs * to calculate DIFFORG at T = 273.16K and  P = 1.01325E05 Pa.
955 !bs * Temperature dependence is included below.
956 !bs molecular diffusivity for organics [
957       REAL difforg
958       PARAMETER (difforg=5.151174E-06)
959 ! *** CCONC is the factor for near-continuum condensation.
960 ! ccofm * sqrt( ta )                    
961       REAL cconc
962       PARAMETER (cconc=2.0*pirs*diffsulf) 
963 !bs * factor for NC condensation for organics
964 ! [ m**2 / sec ]       
965       REAL cconc_org
966       PARAMETER (cconc_org=2.0*pirs*difforg) 
967 ! [ m**2 / sec ]    
968 !bs analogue to CCOFM but for organics  
969       REAL ccofm_org
970 ! FSB  CCOFM is  the accommodation coefficient
971 !      times the mean molecular velocity for h2so4 without the temperatu
972 !      after some algebra
974 !bs CCOFM_ORG * sqrt(TA)                
975 ! set to a value below                  
976       REAL ccofm
977 ! minimum aerosol sulfate concentration          
978       REAL aeroconcmin
979       PARAMETER (aeroconcmin=0.0001) 
981 !*******************************************************************
982 !*                                                                 *
983 !*  start parameters and variables for aerosol-cloud interactions  *
984 !*                                                                 *
985 !*******************************************************************
987 !   maxd_atype = maximum allowable number of aerosol types
988 !   maxd_asize = maximum allowable number of aerosol size bins
989 !   maxd_acomp = maximum allowable number of chemical components
990 !       in each aerosol size bin
991 !   maxd_aphase = maximum allowable number of aerosol phases (gas, cloud, ice, rain, ...)
993 !   ntype_aer = number of aerosol types
994 !   nsize_aer(t) = number of aerosol size bins for aerosol type t. each bin w/ same set of components
995 !   nphase_aer = number of aerosol phases
997 !   msectional - if positive, moving-center sectional code is utilized,
998 !       and each mode is actually a section.
999 !   maerosolincw - if positive, both unactivated/interstitial and activated
1000 !       aerosol species are simulated.  if zero/negative, only the
1001 !       unactivated are simulated.
1003 !   ncomp_aer(t) = number of chemical components for aerosol type t
1004 !   ncomp_aer_nontracer(t) = number of "non-tracer" chemical components while in gchm code
1005 !   mastercompptr_aer(c,t) = mastercomp type/i.d. for chemical component c
1006 !       (1=sulfate, others to be defined) and aerosol type t.
1007 !   massptr_aer(c,s,t,p) = gchm r-array index for the mixing ratio
1008 !       (moles-x/mole-air) for chemical component c in size bin s for type t and phase p
1010 !   waterptr_aer(s,t) = mixing ratio (moles-water/mole-air) for water
1011 !       associated with aerosol size bin s and type t
1012 !   hygroptr_aer(s,t) = gchm r-array index for the bulk hygroscopicity of the size bin and type
1013 !   numptr_aer(s,t,p) = gchm r-array index for the number mixing ratio
1014 !       (particles/mole-air) for aerosol size bin s, type t, and phase p
1015 !       If zero or negative, then number is not being simulated.
1017 !   mprognum_aer(s,t,p) - if positive, number mixing-ratio for size s, type t,
1018 !       and phase p will be prognosed.  Otherwise, no.
1020 !   ntot_mastercomp_aer = number of aerosol chemical components defined
1021 !   dens_mastercomp_aer(mc) = dry density (g/cm^3) of aerosol master chemical component type c
1022 !   mw_mastercomp_aer(mc) = molecular weight of aerosol master chemical component type mc
1023 !   name_mastercomp_aer(mc) = name of aerosol master chemical component type mc
1024 !   mc=mastercompptr_aer(c,t)
1025 !   dens_aer(c,t) = dry density (g/cm^3) of aerosol chemical component type c and type t
1026 !   mw_aer(c,t) = molecular weight of aerosol chemical component type c and type t
1027 !   name_aer(c,t) = name of aerosol chemical component type c and type t
1029 !   lptr_so4_aer(s,t,p) = gchm r-array index for the
1030 !       mixing ratio for sulfate associated with aerosol size bin s, type t, and phase p
1031 !   (similar for msa, oc, bc, nacl, dust)
1033 !-----------------------------------------------------------------------
1035 !   volumcen_sect(s,t)= volume (cm^3) at center of section m
1036 !   volumlo_sect(s,t) = volume (cm^3) at lower boundary of section m
1037 !   volumhi_sect(s,t) = volume (cm^3) at upper boundary of section m
1039 !   dlo_sect(s,t) = diameter (cm) at lower boundary of section m
1040 !   dhi_sect(s,t) = diameter (cm) at upper boundary of section m
1041 !   dcen_sect(s,t) = volume arithmetic-mean diameter (cm) of section m
1042 !       (corresponds to volumcen_sect == 0.5*(volumlo_sect + volumhi_sect)
1044 !-----------------------------------------------------------------------
1045 !   nov-04 sg ! replaced amode with aer and expanded aerosol dimension to include type and phase
1047         integer, parameter :: maxd_atype = 2
1048         integer, parameter :: maxd_asize = 2
1049         integer, parameter :: maxd_acomp = 19
1050         integer, parameter :: maxd_aphase = 2
1051         integer, save :: ai_phase ! interstitial phase of aerosol
1052         integer, save :: cw_phase ! cloud water phase of aerosol
1053         integer, save :: ci_phase ! cloud ice  phase of aerosol
1054         integer, save :: cr_phase ! rain  phase of aerosol
1055         integer, save :: cs_phase ! snow  phase of aerosol
1056         integer, save :: cg_phase ! graupel phase of aerosol
1058         integer, save :: ntype_aer = 0 ! number of types
1059         integer, save :: ntot_mastercomp_aer = 0 ! number of master components
1060         integer, save :: nphase_aer = 0 ! number of phases
1062         integer, save ::   &
1063           msectional, maerosolincw,   &
1064           nsize_aer( maxd_atype ),   & ! number of size bins
1065           ncomp_aer( maxd_atype ),   & ! number of chemical components
1066           ncomp_aer_nontracer( maxd_atype ),   &
1067           mastercompptr_aer(maxd_acomp, maxd_atype), &   !  mastercomp index
1068           massptr_aer( maxd_acomp, maxd_asize, maxd_atype, maxd_aphase ), & ! index for mixing ratio
1069           waterptr_aer( maxd_asize, maxd_atype ), & ! index for aerosol water
1070           hygroptr_aer( maxd_asize, maxd_atype ), & ! index for aerosol hygroscopicity
1071           numptr_aer( maxd_asize, maxd_atype, maxd_aphase ), & ! index for the number mixing ratio
1072           mprognum_aer(maxd_asize,maxd_atype,maxd_aphase)
1074         real, save ::   &
1075           dens_aer( maxd_acomp, maxd_atype ),   &
1076           dens_mastercomp_aer( maxd_acomp ),   &
1077           mw_mastercomp_aer( maxd_acomp ), &
1078           mw_aer( maxd_acomp, maxd_atype ),  &
1079           hygro_mastercomp_aer( maxd_acomp ), &
1080           hygro_aer( maxd_acomp, maxd_atype )
1081         character*10, save ::   &
1082           name_mastercomp_aer( maxd_acomp ), &
1083           name_aer( maxd_acomp, maxd_atype )
1085         real, save ::   &
1086           volumcen_sect( maxd_asize, maxd_atype ),   &
1087           volumlo_sect( maxd_asize, maxd_atype ),   &
1088           volumhi_sect( maxd_asize, maxd_atype ),   &
1089           dcen_sect( maxd_asize, maxd_atype ),   &
1090           dlo_sect( maxd_asize, maxd_atype ),   &
1091           dhi_sect( maxd_asize, maxd_atype ),   &
1092           sigmag_aer(maxd_asize, maxd_atype)
1094         integer, save ::                     &
1095           lptr_so4_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1096           lptr_nh4_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1097           lptr_no3_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1099           lptr_asoa1_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1100           lptr_asoa2_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1101           lptr_asoa3_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1102           lptr_asoa4_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1103           lptr_bsoa1_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1104           lptr_bsoa2_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1105           lptr_bsoa3_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1106           lptr_bsoa4_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1108 !         lptr_orgaro1_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1109 !         lptr_orgaro2_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1110 !         lptr_orgalk_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1111 !         lptr_orgole_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1112 !         lptr_orgba1_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1113 !         lptr_orgba2_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1114 !         lptr_orgba3_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1115 !         lptr_orgba4_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1117           lptr_orgpa_aer(maxd_asize,maxd_atype,maxd_aphase),      &
1118           lptr_ec_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1119           lptr_p25_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1120           lptr_anth_aer(maxd_asize,maxd_atype,maxd_aphase),       &
1121           lptr_cl_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1122           lptr_na_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1123           lptr_seas_aer(maxd_asize,maxd_atype,maxd_aphase),       &
1124           lptr_soil_aer(maxd_asize,maxd_atype,maxd_aphase)
1126         logical, save ::                     &
1127           do_cloudchem_aer(maxd_asize,maxd_atype)
1130 !   molecular weights (g/mol)
1131         real, parameter :: mw_so4_aer   = 96.066
1132         real, parameter :: mw_no3_aer   = 62.007
1133         real, parameter :: mw_nh4_aer   = 18.042
1134         real, parameter :: mw_oc_aer    = 250.0
1135         real, parameter :: mw_ec_aer    = 1.0
1136         real, parameter :: mw_oin_aer   = 1.0
1137         real, parameter :: mw_dust_aer  = 100.087
1138         real, parameter :: mw_seas_aer  = 58.440
1139         real, parameter :: mw_cl_aer    = 35.450
1140         real, parameter :: mw_na_aer    = 22.990
1141         real, parameter :: mw_water_aer = 18.016
1143 !   dry densities (g/cm3)
1144         real, parameter :: dens_so4_aer  = 1.80   ! = rhoso4
1145         real, parameter :: dens_no3_aer  = 1.80   ! = rhono3
1146         real, parameter :: dens_nh4_aer  = 1.80   ! = rhonh4
1147         real, parameter :: dens_oc_aer   = 1.5    ! = rhoorg ! changed from 1.0
1148         real, parameter :: dens_ec_aer   = 1.70
1149         real, parameter :: dens_dust_aer = 2.60  ! = rhosoil
1150         real, parameter :: dens_oin_aer  = 2.20  ! = rhoanth
1151         real, parameter :: dens_seas_aer = 2.20  ! = rhoseas
1152         real, parameter :: dens_cl_aer   = 2.20
1153         real, parameter :: dens_na_aer   = 2.20
1155 !   water density (g/cm3)
1156         real, parameter :: dens_water_aer  = 1.0
1158 !   hygroscopicity (dimensionless)
1159         real, parameter :: hygro_so4_aer  = 0.5
1160         real, parameter :: hygro_no3_aer  = 0.5
1161         real, parameter :: hygro_nh4_aer  = 0.5
1162         real, parameter :: hygro_oc_aer   = 0.14
1163         real, parameter :: hygro_ec_aer   = 1.e-6
1164         real, parameter :: hygro_oin_aer  = 0.14
1165         real, parameter :: hygro_dust_aer = 0.1
1166         real, parameter :: hygro_seas_aer = 1.16
1167         real, parameter :: hygro_cl_aer   = 1.16
1168         real, parameter :: hygro_na_aer   = 1.16
1170 ! table lookup of aerosol impaction/interception scavenging rates
1171         real dlndg_nimptblgrow
1172         integer nimptblgrow_mind, nimptblgrow_maxd
1173         parameter (nimptblgrow_mind=-14, nimptblgrow_maxd=24)
1174         real scavimptblnum(4, nimptblgrow_mind:nimptblgrow_maxd, maxd_asize, maxd_atype), &
1175              scavimptblvol(4, nimptblgrow_mind:nimptblgrow_maxd, maxd_asize, maxd_atype)
1177 !SAM 10/08 Gaussian quadrature constants for SOA_VBS deposition numerical integration
1178       INTEGER NGAUSdv
1179       PARAMETER( NGAUSdv = 7 )  ! Number of Gaussian Quadrature Points - constants defined in aerosols_sorgam_init
1180       REAL Y_GQ(NGAUSdv), WGAUS(NGAUSdv)
1182 !*****************************************************************
1183 !*                                                               *
1184 !*  end parameters and variables for aerosol-cloud interactions  *
1185 !*                                                               *
1186 !*****************************************************************
1189 END Module module_data_soa_vbs