-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathcarma_enums_mod.F90
155 lines (135 loc) · 8.74 KB
/
carma_enums_mod.F90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
!! This module is part of the CARMA module and contains enumerations that are part of
!! the CARMA and CARMASTATE objects.
!!
!! @author Chuck Bardeen
!! @ version July-2009
module carma_enums_mod
!--
! Index values of CARMA's flags. In a given list, begin with 1
! (instead of 0) so that undefined flags will produce an error.
!
! For example:
! if( itype(ielem) .eq. I_INVOLATILE )then
!
! If itype(ielem) hasn't been defined (and is still 0), we do not want
! to execute the statements that follow.
! Define values of flag used for vertical transport
! boundary conditions (ixxxbnd_pc)
integer, public, parameter :: I_FIXED_CONC = 1 !! Fixed Concentration
integer, public, parameter :: I_FLUX_SPEC = 2 !! Flux Specification
! Define values of flag used for particle element
! type specification (itype).
integer, public, parameter :: I_INVOLATILE = 1 !! Involatile particle
integer, public, parameter :: I_VOLATILE = 2 !! Volatile particle
integer, public, parameter :: I_COREMASS = 3 !! Core Mass
integer, public, parameter :: I_VOLCORE = 4 !! Voltile Core
integer, public, parameter :: I_CORE2MOM = 5 !! Core Mass - 2 Moments
!! Define values of flag used for nucleation process
!! specification (inucproc).
!!
!! NOTE: Some of these can be used in combination, so for aerosol freezing this is treated
!! as a bit mask. When setting for one (or more) of the Aerosol freezing methods, use:
!! IAERFREEZE + I_AF_xxx + I_AF_yyy + ...
integer, public, parameter :: I_AF_TABAZADEH_2000 = 1 !! Aerosol Freezing, Tabazadeh[2000]
integer, public, parameter :: I_AF_KOOP_2000 = 2 !! Aerosol Freezing, Koop[2000]
integer, public, parameter :: I_AF_MOHLER_2010 = 4 !! Aerosol Freezing, Mohler[2010]
integer, public, parameter :: I_AF_MURRAY_2010 = 8 !! Glassy Aerosol Freezing, Murray[2010]
integer, public, parameter :: I_DROPACT = 256 !! Droplet Activation
integer, public, parameter :: I_AERFREEZE = 512 !! Aerosol Freezing
integer, public, parameter :: I_DROPFREEZE = 1024 !! Droplet Freezing
integer, public, parameter :: I_ICEMELT = 2048 !! Ice Melting
integer, public, parameter :: I_HETNUC = 4096 !! Heterogeneous Nucleation
integer, public, parameter :: I_HOMNUC = 8192 !! Binary homogeneous gas-to-particle nucleation
integer, public, parameter :: I_HETNUCSULF = 16384 !! Binary homogeneous gas-to-particle nucleation
! Define values of flag used for collection process (icollec)
integer, public, parameter :: I_COLLEC_CONST = 1 !! Constant Collection Efficiency
integer, public, parameter :: I_COLLEC_FUCHS = 2 !! Binwise Maxima of Fuchs' and Langmuir's Efficiencies
integer, public, parameter :: I_COLLEC_DATA = 3 !! Input Data
! Define values of flag used for coagulation operation (icoagop)
integer, public, parameter :: I_COAGOP_CONST = 1 !! Constant Coagulation Kernel
integer, public, parameter :: I_COAGOP_CALC = 2 !! Calculate Coagulation Kernel
! Define values of flag used for particle shape (ishape)
integer, public, parameter :: I_SPHERE = 1 !! spherical
integer, public, parameter :: I_HEXAGON = 2 !! hexagonal prisms or plates
integer, public, parameter :: I_CYLINDER = 3 !! circular disks, cylinders, or spheroids
! Define values of flag used for particle swelling parameterization (irhswell)
integer, public, parameter :: I_NO_SWELLING = 0 !! No swelling
integer, public, parameter :: I_FITZGERALD = 1 !! Fitzgerald
integer, public, parameter :: I_GERBER = 2 !! Gerber
integer, public, parameter :: I_WTPCT_H2SO4 = 3 !! The weight percent method for sulfate aerosol
integer, public, parameter :: I_PETTERS = 4 !! hygroscopicity for mixed aerosols: Petters and Kreidenweis
!! (ACP, 2007), Pengfei Yu et al. (JAMES, 2015)
! Define vallues of flag used for particle swelling composition (Fiztgerald)
integer, public, parameter :: I_SWF_NH42SO4 = 1 !! (NH4)2SO4
integer, public, parameter :: I_SWF_NH4NO3 = 2 !! NH4NO3
integer, public, parameter :: I_SWF_NANO3 = 3 !! NaNO3
integer, public, parameter :: I_SWF_NH4CL = 4 !! NH4Cl
integer, public, parameter :: I_SWF_CACL2 = 5 !! CaCl2
integer, public, parameter :: I_SWF_NABR = 6 !! NaBr
integer, public, parameter :: I_SWF_NACL = 7 !! NaCl
integer, public, parameter :: I_SWF_MGCL2 = 8 !! MgCl2
integer, public, parameter :: I_SWF_LICL = 9 !! LiCl
! Define vallues of flag used for particle swelling composition (Gerber)
integer, public, parameter :: I_SWG_NH42SO4 = 11 !! (NH4)2SO4
integer, public, parameter :: I_SWG_SEA_SALT = 12 !! Sea Salt
integer, public, parameter :: I_SWG_URBAN = 13 !! Urban
integer, public, parameter :: I_SWG_RURAL = 14 !! Rural
! Routines to calculate gas vapor pressures
integer, public, parameter :: I_VAPRTN_H2O_BUCK1981 = 1 !! H2O, Buck[1981]
integer, public, parameter :: I_VAPRTN_H2O_MURPHY2005 = 2 !! H2O, Murphy & Koop [2005]
integer, public, parameter :: I_VAPRTN_H2O_GOFF1946 = 3 !! H2O, Goff & Gratch [1946], used in CAM
integer, public, parameter :: I_VAPRTN_H2SO4_AYERS1980 = 4 !! H2SO4, Ayers [1980] & Kumala [1990]
! Routines to calculate fall velocities
integer, public, parameter :: I_FALLRTN_STD = 1 !! Standard CARMA 2.3 routine (spherical only)
integer, public, parameter :: I_FALLRTN_STD_SHAPE = 2 !! Optional CARMA 2.3 routine (supports shapes)
integer, public, parameter :: I_FALLRTN_HEYMSFIELD2010 = 3 !! Heymsfield & Westbrook [2010] (ice only)
! Routines to calculate mie optical properties
integer, public, parameter :: I_MIERTN_TOON1981 = 1 !! Shell/Core, Toon & Ackerman [1981]
integer, public, parameter :: I_MIERTN_BOHREN1983 = 2 !! Homogeneous Sphere, Bohren & Huffman [1983]
integer, public, parameter :: I_MIERTN_BOTET1997 = 3 !! Fractal mean-field, Botet et al. [1997]
! Gas Composition
integer, public, parameter :: I_GCOMP_H2O = 1 !! Water Vapor
integer, public, parameter :: I_GCOMP_H2SO4 = 2 !! Sulphuric Acid
integer, public, parameter :: I_GCOMP_SO2 = 3 !! Sulfer Dioxide
! How is the CARMA group represented in the parent model
integer, public, parameter :: I_CNSTTYPE_PROGNOSTIC = 1 !! Prognostic, advected constituent for each bin
integer, public, parameter :: I_CNSTTYPE_DIAGNOSTIC = 2 !! Diagnostic, bins diagonosed from model state
! Optics Type
integer, public, parameter :: I_OPTICS_FIXED = 1 !! Fixed Composition
integer, public, parameter :: I_OPTICS_MIXED_YU2015 = 2 !! Yu (2015), mixed group
integer, public, parameter :: I_OPTICS_SULFATE_YU2015 = 3 !! Yu (2015), pure sulfate group
integer, public, parameter :: I_OPTICS_MIXED_YU_H2O = 4 !! Yu (2015), mixed group includes water in shell
integer, public, parameter :: I_OPTICS_MIXED_CORESHELL= 5 !! Mixed group, core/shell optics
integer, public, parameter :: I_OPTICS_MIXED_VOLUME = 6 !! Mixed group, Mie optics, volume mixing
integer, public, parameter :: I_OPTICS_MIXED_MAXWELL = 7 !! Mixed group, Mie optics, Maxwell-Garnett mixing
integer, public, parameter :: I_OPTICS_SULFATE = 8 !! Sulfate Group, Refractive index varies with WTP/RH
! Return Codes
!
! NOTE: Also see error handling macros in globaer.h.
integer, public, parameter :: RC_OK = 0 !! Success
integer, public, parameter :: RC_ERROR = -1 !! Failure
integer, public, parameter :: RC_WARNING = 1 !! Warning
integer, public, parameter :: RC_WARNING_RETRY = 2 !! Warning, Retry Suggested
! Define values of symbols used to specify horizontal & vertical grid type.
! Grid selection is made by defining each of the variables
! <igridv> and <igridh> to one of the grid types known to the model.
!
! Possible values for igridv:
! I_CART cartesian
! I_SIG sigma
! I_HYBRID hybrid
!
! Possible values for igridh:
! I_CART cartesian
! I_LL longitude_latitude
! I_LC lambert_conformal
! I_PS polar_stereographic
! I_ME mercator
integer, public, parameter :: I_CART = 1 !! Cartesian
integer, public, parameter :: I_SIG = 2 !! Sigma
integer, public, parameter :: I_LL = 3 !! Longitude & Latitude
integer, public, parameter :: I_LC = 4 !! Lambert Conformal
integer, public, parameter :: I_PS = 5 !! Polar Sterographic
integer, public, parameter :: I_ME = 6 !! Mercator
integer, public, parameter :: I_HYBRID = 7 !! Hybrid
end module carma_enums_mod