Adjusting include paths for removal of redundant code
[WRF.git] / chem / module_data_sorgam.F
blobce1014ef58dd5ad838d0b059b235b05dc3f08936
2 MODULE module_data_sorgam
3    USE module_data_radm2
5 !   param.inc start
6       IMPLICIT NONE
7       INTEGER NP                !bs maximum expected value of N
8       PARAMETER (NP = 8)
9 !      integer numaer
10 !      parameter (numaer=50)
12       INTEGER MAXITS            !bs maximum number of iterations
13       PARAMETER (MAXITS = 100)
15       REAL TOLF                 !bs convergence criterion on function values
16       PARAMETER (TOLF = 1.E-09)
18       REAL TOLMIN                 !bs criterion whether superios convergence to
19       PARAMETER (TOLMIN = 1.E-12) !bs a minimum of fmin has occurred
21       REAL TOLX                 !bs convergence criterion on delta_x
22       PARAMETER (TOLX = 1.E-10)
24       REAL STPMX                !bs scaled maximum step length allowed
25       PARAMETER (STPMX = 100.)
28       REAL c303, c302
29       PARAMETER (c303=19.83,c302=5417.4)
31       INTEGER lcva, lcvb, lspcv, ldesn
32       PARAMETER (lcva=4,lcvb=4,lspcv=lcva+lcvb)
33       PARAMETER (ldesn=13)
34 !mh    ldesn is number of deposition species
35 !mh    true number of deposited species may be larger since there
36 !mh    are species which are deposited with the same rate
38       INTEGER laerdvc, lnonaerdvc, l1ae, laero, imodes, aspec
39 !     PARAMETER (laerdvc=34,lnonaerdvc=8+lspcv)
40       PARAMETER (laerdvc=39,lnonaerdvc=8+lspcv)
41       PARAMETER (l1ae=laerdvc+lnonaerdvc)
42       PARAMETER (laero=4,imodes=4,aspec=1)
43 !     LAERDVC  number of advected aerosol dynamic parameters for a given
44 !     component species
45 !ia     L1AE        advected parameters+non-advected parameters
46 !ia     LAERO       number of aerosol component species
47 !ia     imodes      number of aerosol modes
48 !ia     ASPEC       number of gas phase comp. that are added dynamically
49 !ia                 currently only sulfate (=1)
50 !bs
51 !bs * BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS ** BS **
52 !bs
53       INTEGER aemiss
54       PARAMETER (aemiss=4)
55 !bs *  AEMISS      # of aerosol species with emissions link to gas phase
56 !bs                currently ECI, ECJ, BCI, BCJ
57       INTEGER ldroga
58       PARAMETER (ldroga=11)
59       INTEGER ldrogb
60       PARAMETER (ldrogb=6)
61       INTEGER ldrog
62       PARAMETER (ldrog=ldroga+ldrogb)
63 !bs * LDROGA      # of anthropogenic organic aerosol precursor gases (DR
64 !bs * LDROGB      # of biogenic organic aerosol precursor gases (DROG)
65 !bs * LSPCV       # of condensable organic vapor interacting between gas
66 !bs               aerosol phase with SORGAM
67 !bs
68 !     param.inc stop
70 ! //////////////////////////////////////////////////////////////////////
71 ! FSB include file
73 ! *** declare and set flag for organic aerosol production method
74 ! *** Two method are available:
76 ! *** The method of Pandis,Harley, Cass, and Seinfeld, 1992,
77 !     Secondary aerosol formation and transport, Atmos. Environ., 26A,
78 !     pp 2453-2466
79 !     Bowman et al. Atmospheric Environment
80 !     Vol 29, pp 579-589, 1995.
81 ! *** and
82 ! *** The method of Odum, Hoffmann, Bowman, Collins, Flagen and
83 !     Seinfeld, 1996, Gas/particle partitioning and secondary organic ae
84 !     yields, Environ. Sci, Technol, 30, pp 2580-2585.
87                             ! 1 = Pandis et al.  1992 method is used
88       INTEGER orgaer
89                             ! 2 = Pankow 1994/Odum et al. 1996 method is
90 ! ***
91 ! switch for organic aerosol method         
92       PARAMETER (orgaer=2)
94 ! *** information about visibility variables
95 ! number of visibility variables    
96       INTEGER n_ae_vis_spc
97       PARAMETER (n_ae_vis_spc=2)
99 ! index for visual range in deciview             
100       INTEGER idcvw
101       PARAMETER (idcvw=1)
102 ! index for extinction [ 1/km ]                  
103       INTEGER ibext
104       PARAMETER (ibext=2)
107 ! *** set up indices for array  CBLK
109 ! index for Accumulation mode sulfate aerosol
110       INTEGER vso4aj
111       PARAMETER (vso4aj=1)
113 ! index for Aitken mode sulfate concentration
114       INTEGER vso4ai
115       PARAMETER (vso4ai=2)
117 ! index for Accumulation mode aerosol ammonium
118       INTEGER vnh4aj
119       PARAMETER (vnh4aj=3)
121 ! index for Aitken mode ammonium concentration
122       INTEGER vnh4ai
123       PARAMETER (vnh4ai=4)
125 ! index for Accumulation mode aerosol nitrate
126       INTEGER vno3aj
127       PARAMETER (vno3aj=5)
129 ! index for Aitken mode nitrate concentration
130       INTEGER vno3ai
131       PARAMETER (vno3ai=6)
133 ! index for Accumulation mode aerosol sodium
134       INTEGER vnaaj
135       PARAMETER (vnaaj=7)
137 ! index for Aitken mode sodium concentration
138       INTEGER vnaai
139       PARAMETER (vnaai=8)
141 ! index for Accumulation mode aerosol chloride
142       INTEGER vclaj
143       PARAMETER (vclaj=9)
145 ! index for Aitken mode chloride concentration
146       INTEGER vclai
147       PARAMETER (vclai=10)
149 ! index for Accumulation mode anthropogenic
150       INTEGER vorgaro1j
151       PARAMETER (vorgaro1j=11)
153 ! index for Aitken mode anthropogenic org
154       INTEGER vorgaro1i
155       PARAMETER (vorgaro1i=12)
157 ! index for Accumulation mode anthropogenic
158       INTEGER vorgaro2j
159       PARAMETER (vorgaro2j=13)
161 ! index for Aitken mode anthropogenic org
162       INTEGER vorgaro2i
163       PARAMETER (vorgaro2i=14)
165 ! index for Accumulation mode anthropogenic
166       INTEGER vorgalk1j
167       PARAMETER (vorgalk1j=15)
169 ! index for Aitken mode anthropogenic org
170       INTEGER vorgalk1i
171       PARAMETER (vorgalk1i=16)
173 ! index for Accumulation mode anthropogenic
174       INTEGER vorgole1j
175       PARAMETER (vorgole1j=17)
177 ! index for Aitken mode anthropogenic org
178       INTEGER vorgole1i
179       PARAMETER (vorgole1i=18)
181 ! index for Accumulation mode biogenic aerosol
182       INTEGER vorgba1j
183       PARAMETER (vorgba1j=19)
185 ! index for Aitken mode biogenic aerosol concentration
186       INTEGER vorgba1i
187       PARAMETER (vorgba1i=20)
189 ! index for Accumulation mode biogenic aerosol
190       INTEGER vorgba2j
191       PARAMETER (vorgba2j=21)
193 ! index for Aitken mode biogenic aerosol concentration
194       INTEGER vorgba2i
195       PARAMETER (vorgba2i=22)
197 ! index for Accumulation mode biogenic aerosol
198       INTEGER vorgba3j
199       PARAMETER (vorgba3j=23)
201 ! index for Aitken mode biogenic aerosol concentration
202       INTEGER vorgba3i
203       PARAMETER (vorgba3i=24)
205 ! index for Accumulation mode biogenic aerosol
206       INTEGER vorgba4j
207       PARAMETER (vorgba4j=25)
209 ! index for Aitken mode biogenic aerosol concentration
210       INTEGER vorgba4i
211       PARAMETER (vorgba4i=26)
213 ! index for Accumulation mode primary anthropogenic
214       INTEGER vorgpaj
215       PARAMETER (vorgpaj=27)
217 ! index for Aitken mode primary anthropogenic
218       INTEGER vorgpai
219       PARAMETER (vorgpai=28)
221 ! index for Accumulation mode aerosol elemen
222       INTEGER vecj
223       PARAMETER (vecj=29)
225 ! index for Aitken mode elemental carbon    
226       INTEGER veci
227       PARAMETER (veci=30)
229 ! index for Accumulation mode primary PM2.5 
230       INTEGER vp25aj
231       PARAMETER (vp25aj=31)
233 ! index for Aitken mode primary PM2.5 concentration
234       INTEGER vp25ai
235       PARAMETER (vp25ai=32)
237 ! index for coarse mode anthropogenic aerososol
238       INTEGER vantha
239       PARAMETER (vantha=33)
241 ! index for coarse mode marine aerosol concentration
242       INTEGER vseas
243       PARAMETER (vseas=34)
245 ! index for coarse mode soil-derived aerosol
246       INTEGER vsoila
247       PARAMETER (vsoila=35)
249 ! index for Aitken mode number              
250       INTEGER vnu0
251       PARAMETER (vnu0=36)
253 ! index for accum  mode number              
254       INTEGER vac0
255       PARAMETER (vac0=37)
257 ! index for coarse mode number              
258       INTEGER vcorn
259       PARAMETER (vcorn=38)
261 ! index for Accumulation mode aerosol water 
262       INTEGER vh2oaj
263       PARAMETER (vh2oaj=39)
265 ! index for Aitken mode aerosol water concentration
266       INTEGER vh2oai
267       PARAMETER (vh2oai=40)
269 ! index for Aitken mode 3'rd moment         
270       INTEGER vnu3
271       PARAMETER (vnu3=41)
273 ! index for Accumulation mode 3'rd moment   
274       INTEGER vac3
275       PARAMETER (vac3=42)
277 ! index for coarse mode 3rd moment          
278       INTEGER vcor3
279       PARAMETER (vcor3=43)
281 ! index for sulfuric acid vapor concentration
282       INTEGER vsulf
283       PARAMETER (vsulf=44)
285 ! index for nitric acid vapor concentration
286       INTEGER vhno3
287       PARAMETER (vhno3=45)
289 ! index for ammonia gas concentration
290       INTEGER vnh3
291       PARAMETER (vnh3=46)
293 ! index for HCL gas concentration
294       INTEGER vhcl
295       PARAMETER (vhcl=47)
297 ! index for cond. vapor from aromatics   
298       INTEGER vcvaro1
299       PARAMETER (vcvaro1=48)
301 ! index for cond. vapor from aromatics   
302       INTEGER vcvaro2
303       PARAMETER (vcvaro2=49)
305 ! index for cond. vapor from anth. alkane
306       INTEGER vcvalk1
307       PARAMETER (vcvalk1=50)
309 ! index for cond. vapor from anth. olefin
310       INTEGER vcvole1
311       PARAMETER (vcvole1=51)
313 ! index for cond. vapor from biogenics   
314       INTEGER vcvapi1
315       PARAMETER (vcvapi1=52)
317 ! index for cond. vapor from biogenics   
318       INTEGER vcvapi2
319       PARAMETER (vcvapi2=53)
321 ! index for cond. vapor from biogenics   
322       INTEGER vcvlim1
323       PARAMETER (vcvlim1=54)
325 ! index for cond. vapor from biogenics   
326       INTEGER vcvlim2
327       PARAMETER (vcvlim2=55)
329 !           COMMON /CBLKINDCS/
330 !    &         VSO4AJ,VSO4AI,VNH4AJ,VNH4AI,VNO3AJ,VNO3AI,
331 !    &         VORGAJ,VORGAI, VORGPAJ,VORGPAI,
332 !    &         VORGBAJ,VORGBAI,VECJ,VECI,
333 !    &         VP25AJ,VP25AI,VANTHA,VSEAS,VSOILA,
334 !    &         VNU0,VAC0,VCORN,
335 !    &         VH2OAJ,VH2OAI,
336 !    &         VNU3,VAC3,VCOR3,
337 !    &         VSULF,VHNO3,VNH3
339 ! *** set up species dimension and indices for sedimentation
340 !     velocity array VSED
342 ! number of sedimentation velocities         
343       INTEGER naspcssed
344       PARAMETER (naspcssed=6)
346 ! index for Aitken mode number                  
347       INTEGER vsnnuc
348       PARAMETER (vsnnuc=1)
350 ! index for Accumulation mode number            
351       INTEGER vsnacc
352       PARAMETER (vsnacc=2)
354 ! index for coarse mode number                  
355       INTEGER vsncor
356       PARAMETER (vsncor=3)
358 ! index for Aitken mode mass                     
359       INTEGER vsmnuc
360       PARAMETER (vsmnuc=4)
362 ! index for accumulation mode mass               
363       INTEGER vsmacc
364       PARAMETER (vsmacc=5)
366 ! index for coarse mass                         
367       INTEGER vsmcor
368       PARAMETER (vsmcor=6)
370 ! *** set up species dimension and indices for deposition
371 !     velocity array VDEP
373 ! number of deposition velocities            
374       INTEGER naspcsdep
375       PARAMETER (naspcsdep=7)
377 ! index for Aitken mode number                  
378       INTEGER vdnnuc
379       PARAMETER (vdnnuc=1)
381 ! index for accumulation mode number            
382       INTEGER vdnacc
383       PARAMETER (vdnacc=2)
385 ! index for coarse mode number                  
386       INTEGER vdncor
387       PARAMETER (vdncor=3)
389 ! index for Aitken mode mass                    
390       INTEGER vdmnuc
391       PARAMETER (vdmnuc=4)
393 ! index for accumulation mode                   
394       INTEGER vdmacc
395       PARAMETER (vdmacc=5)
397 ! index for fine mode mass (Aitken + accumulatio
398       INTEGER vdmfine
399       PARAMETER (vdmfine=6)
401 ! index for coarse mode mass                    
402       INTEGER vdmcor
403       PARAMETER (vdmcor=7)
405 ! *** END AEROSTUFF.EXT
407 !BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * !
408 !BS *                                                                * !
409 !BS *            include file used in SORGAM routines                * !
410 !BS *                                                                * !
411 !BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * BS * !
414 !bs * species pointer for condensable vapor production
416 !bs XYL + OH                            
417       INTEGER pxyl
418       PARAMETER (pxyl=1)
419 !bs TOL + OH                            
420       INTEGER ptol
421       PARAMETER (ptol=2)
422 !bs CSL + OH                            
423       INTEGER pcsl1
424       PARAMETER (pcsl1=3)
425 !bs CSL + NO                            
426       INTEGER pcsl2
427       PARAMETER (pcsl2=4)
428 !bs HC8 + OH                            
429       INTEGER phc8
430       PARAMETER (phc8=5)
431 !bs OLI + OH                            
432       INTEGER poli1
433       PARAMETER (poli1=6)
434 !bs OLI + NO                            
435       INTEGER poli2
436       PARAMETER (poli2=7)
437 !bs OLI + O3                            
438       INTEGER poli3
439       PARAMETER (poli3=8)
440 !bs OLT + OH                            
441       INTEGER polt1
442       PARAMETER (polt1=9)
443 !bs OLT + NO                            
444       INTEGER polt2
445       PARAMETER (polt2=10)
446 !bs OLT + O3                            
447       INTEGER polt3
448       PARAMETER (polt3=11)
449 !bs API + OH                            
450       INTEGER papi1
451       PARAMETER (papi1=12)
452 !bs API + NO                            
453       INTEGER papi2
454       PARAMETER (papi2=13)
455 !bs API + O3                            
456       INTEGER papi3
457       PARAMETER (papi3=14)
458 !bs LIM + OH                            
459       INTEGER plim1
460       PARAMETER (plim1=15)
461 !bs LIM + NO                            
462       INTEGER plim2
463       PARAMETER (plim2=16)
464 !bs LIM + O3                            
465       INTEGER plim3
466       PARAMETER (plim3=17)
468 !bs * Number of lumped condensable vapors in SORGAM
470 !bs      INTEGER NACV              !bs # of anth. cond. vapors
471 !bs      PARAMETER (NACV = 2)
472 !bs      INTEGER NBCV              !bs # of bio. cond. vapors
473 !bs      PARAMETER (NBCV = 1)
474 !bs      INTEGER NCV               !bs total # of cond. vapor
475 !bs      PARAMETER (NCV = NACV + NBCV)
477 !bs * species pointer for SOA species
479       INTEGER psoaaro1
480       PARAMETER (psoaaro1=1)
481       INTEGER psoaaro2
482       PARAMETER (psoaaro2=2)
483       INTEGER psoaalk1
484       PARAMETER (psoaalk1=3)
485       INTEGER psoaole1
486       PARAMETER (psoaole1=4)
487       INTEGER psoaapi1
488       PARAMETER (psoaapi1=5)
489       INTEGER psoaapi2
490       PARAMETER (psoaapi2=6)
491       INTEGER psoalim1
492       PARAMETER (psoalim1=7)
493       INTEGER psoalim2
494       PARAMETER (psoalim2=8)
496 !bs * end of AERO_SOA.EXT *
499 ! *** include file for aerosol routines
502 !....................................................................
504 !  CONTAINS: Fundamental constants for air quality modeling
506 !  DEPENDENT UPON:  none
508 !  REVISION HISTORY:
510 !    Adapted 6/92 by CJC from ROM's PI.EXT.
512 !    Revised 3/1/93 John McHenry to include constants needed by
513 !    LCM aqueous chemistry
514 !    Revised 9/93 by John McHenry to include additional constants
515 !    needed for FMEM clouds and aqueous chemistry
517 !    Revised 3/4/96 by Dr. Francis S. Binkowski to reflect current
518 !    Models3 view that MKS units should be used wherever possible,
519 !    and that sources be documentated. Some variables have been added
520 !    names changed, and values revised.
522 !    Revised 3/7/96 to have universal gas constant input and compute
523 !    gas constant is chemical form. TWOPI is now calculated rather than
525 !    Revised 3/13/96 to group declarations and parameter statements.
527 !    Revised 9/13/96 to include more physical constants.
528 !    Revised 12/24/96 eliminate silly EPSILON, AMISS
530 !    Revised 1/06/97 to eliminate most derived constants
532 ! FSB REFERENCES:
534 !      CRC76,        CRC Handbook of Chemistry and Physics (76th Ed),
535 !                     CRC Press, 1995
536 !      Hobbs, P.V.   Basic Physical Chemistry for the Atmospheric Scien
537 !                     Cambridge Univ. Press, 206 pp, 1995.
538 !      Snyder, J.P., Map Projections-A Working Manual, U.S. Geological
539 !                     Paper 1395 U.S.GPO, Washington, DC, 1987.
540 !      Stull, R. B., An Introduction to Bounday Layer Meteorology, Klu
541 !                     Dordrecht, 1988
543 ! Geometric Constants:
545       REAL*8 & ! PI (single precision 3.141593)
546         pirs
547       PARAMETER (pirs=3.14159265358979324)
548 !      REAL     PIRS ! PI (single precision 3.141593)
549 !      PARAMETER ( PIRS = 3.141593 )
550 ! Fundamental Constants: ( Source: CRC76, pp 1-1 to 1-6)
552 ! Avogadro's Constant [ 1/mol ]
553       REAL avo
554       PARAMETER (avo=6.0221367E23)
556 ! universal gas constant [ J/mol-K ]
557       REAL rgasuniv
558       PARAMETER (rgasuniv=8.314510)
560 ! standard atmosphere  [ Pa ]
561       REAL stdatmpa
562       PARAMETER (stdatmpa=101325.0)
564 ! Standard Temperature [ K ]
565       REAL stdtemp
566       PARAMETER (stdtemp=273.15)
568 ! Stefan-Boltzmann [ W/(m**2 K**4) ]
569       REAL stfblz
570       PARAMETER (stfblz=5.67051E-8)
573 ! mean gravitational acceleration [ m/sec**2 ]
574       REAL grav
575       PARAMETER (grav=9.80622)
576 ! FSB Non MKS qualtities:
578 ! Molar volume at STP [ L/mol ] Non MKS units
579       REAL molvol
580       PARAMETER (molvol=22.41410)
583 ! Atmospheric Constants:
585 ! FSB                     78.06%  N2, 21% O2 and 0.943% A on a mole
586       REAL mwair
587                         ! fraction basis. ( Source : Hobbs, 1995) pp 69-
588 ! mean molecular weight for dry air [ g/mol ]
589       PARAMETER (mwair=28.9628)
591 ! dry-air gas constant [ J / kg-K ]
592       REAL rdgas
593       PARAMETER (rdgas=1.0E3*rgasuniv/mwair)
595 !  3*PI
596       REAL threepi
597       PARAMETER (threepi=3.0*pirs)
599 !  6/PI
600       REAL f6dpi
601       PARAMETER (f6dpi=6.0/pirs)
603 !  1.0e9 * 6/PIRS
604       REAL f6dpi9
605       PARAMETER (f6dpi9=1.0E9*f6dpi)
607 ! 1.0e-9 * 6/PIRS
608       REAL f6dpim9
609       PARAMETER (f6dpim9=1.0E-9*f6dpi)
611 !  SQRT( PI )
612       REAL sqrtpi
613       PARAMETER (sqrtpi=1.7724539)
615 !  SQRT( 2 )
616       REAL sqrt2
617       PARAMETER (sqrt2=1.4142135623731)
619 !  ln( sqrt( 2 ) )
620       REAL lgsqt2
621       PARAMETER (lgsqt2=0.34657359027997)
623 !  1/ln( sqrt( 2 ) )
624       REAL dlgsqt2
625       PARAMETER (dlgsqt2=1.0/lgsqt2)
627 !  1/3
628       REAL one3
629       PARAMETER (one3=1.0/3.0)
631 !  2/3
632       REAL two3
633       PARAMETER (two3=2.0/3.0)
636 ! *** physical constants:
638 ! Boltzmann's Constant [ J / K ]
639       REAL boltz
640       PARAMETER (boltz=rgasuniv/avo)
643 ! *** component densities [ kg/m**3 ] :
646 !  bulk density of aerosol sulfate
647       REAL rhoso4
648       PARAMETER (rhoso4=1.8E3)
650 !  bulk density of aerosol ammonium
651       REAL rhonh4
652       PARAMETER (rhonh4=1.8E3)
654 ! bulk density of aerosol nitrate
655       REAL rhono3
656       PARAMETER (rhono3=1.8E3)
658 !  bulk density of aerosol water
659       REAL rhoh2o
660       PARAMETER (rhoh2o=1.0E3)
662 ! bulk density for aerosol organics
663       REAL rhoorg
664       PARAMETER (rhoorg=1.0E3)
666 ! bulk density for aerosol soil dust
667       REAL rhosoil
668       PARAMETER (rhosoil=2.6E3)
670 ! bulk density for marine aerosol
671       REAL rhoseas
672       PARAMETER (rhoseas=2.2E3)
674 ! bulk density for anthropogenic aerosol
675       REAL rhoanth
676       PARAMETER (rhoanth=2.2E3)
678 ! bulk density of aerosol sodium
679       REAL rhona
680       PARAMETER (rhona=2.2E3)
682 ! bulk density of aerosol chloride
683       REAL rhocl
684       PARAMETER (rhocl=2.2E3)
686 ! *** Factors for converting aerosol mass concentration [ ug m**-3] to
687 !         to 3rd moment concentration [ m**3 m^-3]
689       REAL so4fac
690       PARAMETER (so4fac=f6dpim9/rhoso4)
692       REAL nh4fac
693       PARAMETER (nh4fac=f6dpim9/rhonh4)
695       REAL h2ofac
696       PARAMETER (h2ofac=f6dpim9/rhoh2o)
698       REAL no3fac
699       PARAMETER (no3fac=f6dpim9/rhono3)
701       REAL orgfac
702       PARAMETER (orgfac=f6dpim9/rhoorg)
704       REAL soilfac
705       PARAMETER (soilfac=f6dpim9/rhosoil)
707       REAL seasfac
708       PARAMETER (seasfac=f6dpim9/rhoseas)
710       REAL anthfac
711       PARAMETER (anthfac=f6dpim9/rhoanth)
713       REAL nafac
714       PARAMETER (nafac=f6dpim9/rhona)
716       REAL clfac
717       PARAMETER (clfac=f6dpim9/rhocl)
719 !  starting standard surface pressure [ Pa ]  
720       REAL pss0
721       PARAMETER (pss0=101325.0)
723 !  starting standard surface temperature [ K ]
724       REAL tss0
725       PARAMETER (tss0=288.15)
727 !  initial sigma-G for nucleimode                 
728       REAL sginin
729       PARAMETER (sginin=1.70)
731 !  initial sigma-G for accumulation mode          
732       REAL sginia
733       PARAMETER (sginia=2.00)
735 ! initial sigma-G for coarse mode               
736       REAL sginic
737       PARAMETER (sginic=2.5)
739 !  initial mean diameter for nuclei mode [ m ]    
740       REAL dginin
741       PARAMETER (dginin=0.01E-6)
743 !  initial mean diameter for accumulation mode [ m ]
744       REAL dginia
745       PARAMETER (dginia=0.07E-6)
747 ! initial mean diameter for coarse mode [ m ]  
748       REAL dginic
749       PARAMETER (dginic=1.0E-6)
753 !................   end   AERO3box.EXT   ...............................
754 !///////////////////////////////////////////////////////////////////////
760 !     LOGICAL diagnostics
761 ! *** Scalar variables for fixed standard deviations.
763 ! Flag for writing diagnostics to file       
764 ! nuclei mode exp( log^2( sigmag )/8 )  
765       REAL en1
766 ! accumulation mode exp( log^2( sigmag )
767       REAL ea1
769       REAL ec1
770 ! coarse mode exp( log^2( sigmag )/8 )  
771 ! nuclei        **4                    
772       REAL esn04
773 ! accumulation                         
774       REAL esa04
776       REAL esc04
777 ! coarse                               
778 ! nuclei        **5                    
779       REAL esn05
781       REAL esa05
782 ! accumulation                         
783 ! nuclei        **8                    
784       REAL esn08
785 ! accumulation                         
786       REAL esa08
788       REAL esc08
789 ! coarse                               
790 ! nuclei        **9                    
791       REAL esn09
793       REAL esa09
794 ! accumulation                         
795 ! nuclei        **12                   
796       REAL esn12
797 ! accumulation                         
798       REAL esa12
800       REAL esc12
801 ! coarse mode                          
802 ! nuclei        **16                   
803       REAL esn16
804 ! accumulation                         
805       REAL esa16
807       REAL esc16
808 ! coarse                               
809 ! nuclei        **20                   
810       REAL esn20
811 ! accumulation                         
812       REAL esa20
814       REAL esc20
815 ! coarse                               
816 ! nuclei        **25                   
817       REAL esn25
819       REAL esa25
820 ! accumulation                         
821 ! nuclei        **24                   
822       REAL esn24
823 ! accumulation                         
824       REAL esa24
826       REAL esc24
827 ! coarse                               
828 ! nuclei        **28                   
829       REAL esn28
830 ! accumulation                         
831       REAL esa28
833       REAL esc28
834 ! coarse                               
835 ! nuclei        **32                   
836       REAL esn32
837 ! accumulation                         
838       REAL esa32
840       REAL esc32
841 ! coarese                              
842 ! nuclei        **36                   
843       REAL esn36
844 ! accumulation                         
845       REAL esa36
847       REAL esc36
848 ! coarse                               
849 ! nuclei        **49                   
850       REAL esn49
852       REAL esa49
853 ! accumulation                         
854 ! nuclei        **52                   
855       REAL esn52
857       REAL esa52
858 ! accumulation                         
859 ! nuclei        **64                   
860       REAL esn64
861 ! accumulation                         
862       REAL esa64
864       REAL esc64
865 ! coarse                               
867       REAL esn100
868 ! nuclei        **100                  
869 ! nuclei        **(-20)                
870       REAL esnm20
871 ! accumulation                         
872       REAL esam20
874       REAL escm20
875 ! coarse                               
876 ! nuclei        **(-32)                
877       REAL esnm32
878 ! accumulation                         
879       REAL esam32
881       REAL escm32
882 ! coarse                               
883 ! log(sginin)                           
884       REAL xxlsgn
885 ! log(sginia)                           
886       REAL xxlsga
888       REAL xxlsgc
889 ! log(sginic )                          
890 ! log(sginin ) ** 2                           
891       REAL l2sginin
892 ! log(sginia ) ** 2                           
893       REAL l2sginia
895       REAL l2sginic
898 ! *** set up COMMON blocks for esg's:
902 ! log(sginic ) ** 2                           
904 ! *** SET NUCLEATION FLAG:
906                             ! INUCL = 0, Kerminen & Wexler Mechanism
907       INTEGER inucl
908                             ! INUCL = 1, Youngblood and Kreidenweis mech
909                             ! INUCL = 2, Kulmala et al. mechanism
910 ! Flag for Choice of nucleation Mechanism   
911       PARAMETER (inucl=2)
913 ! *** Set flag for sedimentation velocities:
915       LOGICAL icoarse
916       PARAMETER (icoarse=.FALSE.) ! *** END AERO_INTERNAL.EXT
917 ! *** Diameters and standard deviations for emissions
918 !     the diameters are the volume (mass) geometric mean diameters
920 ! *** Aitken mode:
921 ! special factor to compute mass transfer           
922       REAL dgvem_i
923       PARAMETER (dgvem_i=0.03E-6) ! [ m ]                            
924       REAL sgem_i
925       PARAMETER (sgem_i=1.7)
927 ! *** Accumulation mode:
928       REAL dgvem_j
929       PARAMETER (dgvem_j=0.3E-6) ! [ m ]                             
930       REAL sgem_j
931       PARAMETER (sgem_j=2.0)
933 ! *** Coarse mode
934       REAL dgvem_c
935       PARAMETER (dgvem_c=6.0E-6) ! [ m ] <<< Corrected 11/19/97      
936       REAL sgem_c
937       PARAMETER (sgem_c=2.2)
939 ! *** factors for getting number emissions rate from mass emissions rate
940 ! Aitken mode                                       
941       REAL factnumn
942 ! accumulation mode                                 
943       REAL factnuma
945       REAL factnumc
946 ! coarse mode                                       
947       REAL facatkn_min, facacc_min
948       PARAMETER (facatkn_min=0.04,facacc_min=1.0-facatkn_min)
949       REAL conmin,xxm3
950       PARAMETER (conmin=epsilc)
951 ! [ ug/m**3 ] ! changed 1/6/98 
952       REAL*8 & ! factor to set minimum for Aitken mode number  
953         nummin_i
954       REAL*8 & ! factor to set minimum for accumulation mode nu
955         nummin_j
956       REAL*8 & 
957         nummin_c
958 ! factor to set minimum for coarse mode number  
960 !bs      REAL ALPHSULF ! Accommodation coefficient for sulfuric acid
961 !bs      PARAMETER ( ALPHSULF = 0.05 ) ! my be set to one in future
963 !bs      REAL DIFFSULF ! molecular diffusivity for sulfuric acid [ m**2
964 !bs      PARAMETER( DIFFSULF = 0.08E-4 ) ! may be changed in future
966 !bs * 23/03/99 updates of ALPHSULF and DIFFSULF adopted fro new code fro
967 !bs * DIFFSULF is calculated from Reid, Prausnitz, and Poling, The prope
968 !bs * of gases and liquids, 4th edition, McGraw-Hill, 1987, pp 587-588.
969 !bs * Equation (11-4.4) was used.
970 !bs * The value is at T = 273.16 K and P = 1.01325E05 Pa
971 !bs * Temperature dependence is included for DIFFSULF via DIFFCORR (see
973 ! Accommodation coefficient for sulfuric
974       REAL alphsulf
975       PARAMETER (alphsulf=1.0) 
976 !bs updated from code of FSB         
977 ! molecular weight for sulfuric acid [ kg/mole ] MKS 
978       REAL mwh2so4
979       PARAMETER (mwh2so4=98.07354E-3) 
980 !cia corrected error 24/11/97
981 ! molecular diffusivity for sulfuric acid [ m**2 /se
982       REAL diffsulf
983       PARAMETER (diffsulf=9.362223E-06) 
984 !bs updated from code of FSB 
985 !bs Accomodation coefficient for organic
986       REAL alphaorg
987       PARAMETER (alphaorg=1.0)                                    !bs Kleeman et al. '99 propose alpha
988 !bs Bowman et al. '97 uses alpha = 1.
989 !bs mean molecular weight of organics [k
990       REAL mworg
991       PARAMETER (mworg=175.0E-03)
993 !bs * DIFFORG is calculated from the same formula as DIFFSULF.
994 !bs * An average elemental composition of C=8, O=3, N=1, H=17 is asuumed
995 !bs * to calculate DIFFORG at T = 273.16K and  P = 1.01325E05 Pa.
996 !bs * Temepratur dependence is included below.
997 !bs molecular diffusivity for organics [
998       REAL difforg
999       PARAMETER (difforg=5.151174E-06)
1000 ! *** CCONC is the factor for near-continuum condensation.
1001 ! ccofm * sqrt( ta )                    
1002       REAL cconc
1003       PARAMETER (cconc=2.0*pirs*diffsulf) 
1004 !bs * factor for NC condensation for organics
1005 ! [ m**2 / sec ]       
1006       REAL cconc_org
1007       PARAMETER (cconc_org=2.0*pirs*difforg) 
1008 ! [ m**2 / sec ]    
1009 !bs analogue to CCOFM but for organics  
1010       REAL ccofm_org
1011 ! FSB  CCOFM is  the accommodation coefficient
1012 !      times the mean molecular velocity for h2so4 without the temperatu
1013 !      after some algebra
1015 !bs CCOFM_ORG * sqrt(TA)                
1016 ! set to a value below                  
1017       REAL ccofm
1018 ! minimum aerosol sulfate concentration          
1019       REAL aeroconcmin
1020       PARAMETER (aeroconcmin=0.0001) 
1024 !*******************************************************************
1025 !*                                                                 *
1026 !*  start parameters and variables for aerosol-cloud interactions  *
1027 !*                                                                 *
1028 !*******************************************************************
1030 !   maxd_atype = maximum allowable number of aerosol types
1031 !   maxd_asize = maximum allowable number of aerosol size bins
1032 !   maxd_acomp = maximum allowable number of chemical components
1033 !       in each aerosol size bin
1034 !   maxd_aphase = maximum allowable number of aerosol phases (gas, cloud, ice, rain, ...)
1036 !   ntype_aer = number of aerosol types
1037 !   nsize_aer(t) = number of aerosol size bins for aerosol type t. each bin w/ same set of components
1038 !   nphase_aer = number of aerosol phases
1040 !   msectional - if positive, moving-center sectional code is utilized,
1041 !       and each mode is actually a section.
1042 !   maerosolincw - if positive, both unactivated/interstitial and activated
1043 !       aerosol species are simulated.  if zero/negative, only the
1044 !       unactivated are simulated.
1046 !   ncomp_aer(t) = number of chemical components for aerosol type t
1047 !   ncomp_aer_nontracer(t) = number of "non-tracer" chemical components while in gchm code
1048 !   mastercompptr_aer(c,t) = mastercomp type/i.d. for chemical component c
1049 !       (1=sulfate, others to be defined) and aerosol type t.
1050 !   massptr_aer(c,s,t,p) = gchm r-array index for the mixing ratio
1051 !       (moles-x/mole-air) for chemical component c in size bin s for type t and phase p
1053 !   waterptr_aer(s,t) = mixing ratio (moles-water/mole-air) for water
1054 !       associated with aerosol size bin s and type t
1055 !   hygroptr_aer(s,t) = gchm r-array index for the bulk hygroscopicity of the size bin and type
1056 !   numptr_aer(s,t,p) = gchm r-array index for the number mixing ratio
1057 !       (particles/mole-air) for aerosol size bin s, type t, and phase p
1058 !       If zero or negative, then number is not being simulated.
1060 !   mprognum_aer(s,t,p) - if positive, number mixing-ratio for size s, type t,
1061 !       and phase p will be prognosed.  Otherwise, no.
1063 !   ntot_mastercomp_aer = number of aerosol chemical components defined
1064 !   dens_mastercomp_aer(mc) = dry density (g/cm^3) of aerosol master chemical component type c
1065 !   mw_mastercomp_aer(mc) = molecular weight of aerosol master chemical component type mc
1066 !   name_mastercomp_aer(mc) = name of aerosol master chemical component type mc
1067 !   mc=mastercompptr_aer(c,t)
1068 !   dens_aer(c,t) = dry density (g/cm^3) of aerosol chemical component type c and type t
1069 !   mw_aer(c,t) = molecular weight of aerosol chemical component type c and type t
1070 !   name_aer(c,t) = name of aerosol chemical component type c and type t
1072 !   lptr_so4_aer(s,t,p) = gchm r-array index for the
1073 !       mixing ratio for sulfate associated with aerosol size bin s, type t, and phase p
1074 !   (similar for msa, oc, bc, nacl, dust)
1076 !-----------------------------------------------------------------------
1078 !   volumcen_sect(s,t)= volume (cm^3) at center of section m
1079 !   volumlo_sect(s,t) = volume (cm^3) at lower boundary of section m
1080 !   volumhi_sect(s,t) = volume (cm^3) at upper boundary of section m
1082 !   dlo_sect(s,t) = diameter (cm) at lower boundary of section m
1083 !   dhi_sect(s,t) = diameter (cm) at upper boundary of section m
1084 !   dcen_sect(s,t) = volume arithmetic-mean diameter (cm) of section m
1085 !       (corresponds to volumcen_sect == 0.5*(volumlo_sect + volumhi_sect)
1087 !-----------------------------------------------------------------------
1088 !   nov-04 sg ! replaced amode with aer and expanded aerosol dimension to include type and phase
1090         integer, parameter :: maxd_atype = 2
1091         integer, parameter :: maxd_asize = 2
1092         integer, parameter :: maxd_acomp = 19
1093         integer, parameter :: maxd_aphase = 2
1094         integer, save :: ai_phase ! interstitial phase of aerosol
1095         integer, save :: cw_phase ! cloud water phase of aerosol
1096         integer, save :: ci_phase ! cloud ice  phase of aerosol
1097         integer, save :: cr_phase ! rain  phase of aerosol
1098         integer, save :: cs_phase ! snow  phase of aerosol
1099         integer, save :: cg_phase ! graupel phase of aerosol
1101         integer, save :: ntype_aer = 0 ! number of types
1102         integer, save :: ntot_mastercomp_aer = 0 ! number of master components
1103         integer, save :: nphase_aer = 0 ! number of phases
1105         integer, save ::   &
1106           msectional, maerosolincw,   &
1107           nsize_aer( maxd_atype ),   & ! number of size bins
1108           ncomp_aer( maxd_atype ),   & ! number of chemical components
1109           ncomp_aer_nontracer( maxd_atype ),   &
1110           mastercompptr_aer(maxd_acomp, maxd_atype), &   !  mastercomp index
1111           massptr_aer( maxd_acomp, maxd_asize, maxd_atype, maxd_aphase ), & ! index for mixing ratio
1112           waterptr_aer( maxd_asize, maxd_atype ), & ! index for aerosol water
1113           hygroptr_aer( maxd_asize, maxd_atype ), & ! index for aerosol hygroscopicity
1114           numptr_aer( maxd_asize, maxd_atype, maxd_aphase ), & ! index for the number mixing ratio
1115           mprognum_aer(maxd_asize,maxd_atype,maxd_aphase)
1117         real, save ::   &
1118           dens_aer( maxd_acomp, maxd_atype ),   &
1119           dens_mastercomp_aer( maxd_acomp ),   &
1120           mw_mastercomp_aer( maxd_acomp ), &
1121           mw_aer( maxd_acomp, maxd_atype ),  &
1122           hygro_mastercomp_aer( maxd_acomp ), &
1123           hygro_aer( maxd_acomp, maxd_atype )
1124         character*10, save ::   &
1125           name_mastercomp_aer( maxd_acomp ), &
1126           name_aer( maxd_acomp, maxd_atype )
1128         real, save ::   &
1129           volumcen_sect( maxd_asize, maxd_atype ),   &
1130           volumlo_sect( maxd_asize, maxd_atype ),   &
1131           volumhi_sect( maxd_asize, maxd_atype ),   &
1132           dcen_sect( maxd_asize, maxd_atype ),   &
1133           dlo_sect( maxd_asize, maxd_atype ),   &
1134           dhi_sect( maxd_asize, maxd_atype ),   &
1135           sigmag_aer(maxd_asize, maxd_atype)
1137         integer, save ::                     &
1138           lptr_so4_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1139           lptr_nh4_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1140           lptr_no3_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1141           lptr_orgaro1_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1142           lptr_orgaro2_aer(maxd_asize,maxd_atype,maxd_aphase),    &
1143           lptr_orgalk_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1144           lptr_orgole_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1145           lptr_orgba1_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1146           lptr_orgba2_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1147           lptr_orgba3_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1148           lptr_orgba4_aer(maxd_asize,maxd_atype,maxd_aphase),     &
1149           lptr_orgpa_aer(maxd_asize,maxd_atype,maxd_aphase),      &
1150           lptr_ec_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1151           lptr_p25_aer(maxd_asize,maxd_atype,maxd_aphase),        &
1152           lptr_anth_aer(maxd_asize,maxd_atype,maxd_aphase),       &
1153           lptr_cl_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1154           lptr_na_aer(maxd_asize,maxd_atype,maxd_aphase),         &
1155           lptr_seas_aer(maxd_asize,maxd_atype,maxd_aphase),       &
1156           lptr_soil_aer(maxd_asize,maxd_atype,maxd_aphase)
1158         logical, save ::                     &
1159           do_cloudchem_aer(maxd_asize,maxd_atype)
1162 !   molecular weights (g/mol)
1163         real, parameter :: mw_so4_aer   = 96.066
1164         real, parameter :: mw_no3_aer   = 62.007
1165         real, parameter :: mw_nh4_aer   = 18.042
1166         real, parameter :: mw_oc_aer    = 250.0
1167         real, parameter :: mw_ec_aer    = 1.0
1168         real, parameter :: mw_oin_aer   = 1.0
1169         real, parameter :: mw_dust_aer  = 100.087
1170         real, parameter :: mw_seas_aer  = 58.440
1171         real, parameter :: mw_cl_aer    = 35.450
1172         real, parameter :: mw_na_aer    = 22.990
1173         real, parameter :: mw_water_aer = 18.016
1175 !   dry densities (g/cm3)
1176         real, parameter :: dens_so4_aer  = 1.80   ! = rhoso4
1177         real, parameter :: dens_no3_aer  = 1.80   ! = rhono3
1178         real, parameter :: dens_nh4_aer  = 1.80   ! = rhonh4
1179         real, parameter :: dens_oc_aer   = 1.00   ! = rhoorg
1180         real, parameter :: dens_ec_aer   = 1.70
1181         real, parameter :: dens_dust_aer = 2.60  ! = rhosoil
1182         real, parameter :: dens_oin_aer  = 2.20  ! = rhoanth
1183         real, parameter :: dens_seas_aer = 2.20  ! = rhoseas
1184         real, parameter :: dens_cl_aer   = 2.20
1185         real, parameter :: dens_na_aer   = 2.20
1187 !   water density (g/cm3)
1188         real, parameter :: dens_water_aer  = 1.0
1190 !   hygroscopicity (dimensionless)
1191         real, parameter :: hygro_so4_aer  = 0.5
1192         real, parameter :: hygro_no3_aer  = 0.5
1193         real, parameter :: hygro_nh4_aer  = 0.5
1194         real, parameter :: hygro_oc_aer   = 0.14
1195         real, parameter :: hygro_ec_aer   = 1.e-6
1196         real, parameter :: hygro_oin_aer  = 0.14
1197         real, parameter :: hygro_dust_aer = 0.1
1198         real, parameter :: hygro_seas_aer = 1.16
1199         real, parameter :: hygro_cl_aer   = 1.16
1200         real, parameter :: hygro_na_aer   = 1.16
1202 ! table lookup of aerosol impaction/interception scavenging rates
1203         real dlndg_nimptblgrow
1204         integer nimptblgrow_mind, nimptblgrow_maxd
1205         parameter (nimptblgrow_mind=-14, nimptblgrow_maxd=24)
1206         real scavimptblnum(4, nimptblgrow_mind:nimptblgrow_maxd, maxd_asize, maxd_atype), &
1207              scavimptblvol(4, nimptblgrow_mind:nimptblgrow_maxd, maxd_asize, maxd_atype)
1210 !SAM 10/08 Gaussian quadrature constants for SORGAM deposition numerical integration
1211       INTEGER NGAUSdv
1212       PARAMETER( NGAUSdv = 7 )  ! Number of Gaussian Quadrature Points - constants defined in aerosols_sorgam_init
1213       REAL Y_GQ(NGAUSdv), WGAUS(NGAUSdv)
1215 !*****************************************************************
1216 !*                                                               *
1217 !*  end parameters and variables for aerosol-cloud interactions  *
1218 !*                                                               *
1219 !*****************************************************************
1222 END Module module_data_sorgam