Difference between revisions of "GEOS-Chem species database"
Line 19: | Line 19: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>TRACER_MW_G</tt> ||g <sup>-1</sup>||<tt>input.geos</tt> file ||Emitted species molecular weight (i.e. the molecular weight of the emitted species, if there is more than one species per tracer). |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>TRACER_COEFF</tt> ||g <sup>-1</sup>||<tt>GeosCore/tracerid_mod.F</tt> file ||Number of carbon atoms per species (for hydrocarbons that are carried as equivalent carbon atoms) |
|-valign="top" colspan="4" bgcolor="#CCFFFF" | |-valign="top" colspan="4" bgcolor="#CCFFFF" | ||
Line 28: | Line 28: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>A_RADI</tt> ||m ||<tt>INIT_DRYDEP</tt> (in <tt>GeosCore/drydep_mod.F</tt>) ||Aerosol radius used in dry deposition |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>A_DEN</tt> ||kg m<sup>-3</sup> m ||<tt>INIT_DRYDEP</tt> (in <tt>GeosCore/drydep_mod.F</tt> ||Aerosol density used in dry deposition |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>NDVZIND</tt> ||m ||<tt>INIT_DRYDEP</tt> (in <tt>GeosCore/drydep_mod.F</tt>) ||Dry deposition species ID (i.e. slot of the <tt>DVEL</tt> array) |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>HSTAR</tt> ||M atm<sup>-1</sup> ||<tt>INIT_DRYDEP</tt> (in <tt>GeosCore/drydep_mod.F</tt>) ||Henry's law K0 used in dry deposition |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>F0</tt> ||1 ||<tt>INIT_DRYDEP</tt> (in <tt>GeosCore/drydep_mod.F</tt>) ||Reactivity factor for oxidation of biological substances |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>XMW</tt> ||kg mol<sup>-1</sup> ||<tt>INIT_DRYDEP</tt> (in <tt>GeosCore/drydep_mod.F</tt>) ||Species molecular weight |
|-valign="top" colspan="4" bgcolor="#CCFFFF" | |-valign="top" colspan="4" bgcolor="#CCFFFF" | ||
Line 49: | Line 49: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>IDWETD</tt> ||1 ||<tt>INIT_WETSCAV</tt> (in <tt>GeosCore/wetscav_mod.F</tt>) ||Wet deposition ID |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Kstar298</tt><br>aka <tt>K0</tt> ||M atm<sup>-1</sup> ||<tt>COMPUTE_F</tt> and <tt>RAINOUT</tt><br>(both in <tt>GeosCore/wetscav_mod.F</tt>) ||Henry's law solubility constant |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>H298_R</tt><br>aka <tt>CR</tt> ||K ||<tt>COMPUTE_F</tt> and <tt>RAINOUT</tt><br>(both in <tt>GeosCore/wetscav_mod.F</tt>) ||Henry's law volatility constant |
|} | |} | ||
− | Furthermore, in the wet deposition module (< | + | Furthermore, in the wet deposition module (<tt>GeosCore/wetscav_mod.F</tt> several confusing <tt>IF-THEN-ELSE-ENDIF</tt> blocks were used to perform species-specific computations, including: |
− | *Multiplying the fraction < | + | *Multiplying the fraction <tt>Fi</tt> (Eq. 1, [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al 2000]) by 0.8 for SOA aerosol species |
*Turning off rainout for several aerosol species when 237 <= T < 258 K | *Turning off rainout for several aerosol species when 237 <= T < 258 K | ||
− | *Halving the rate of conversion of cloud condensate to precipitation (aka < | + | *Halving the rate of conversion of cloud condensate to precipitation (aka <tt>K</tt> or <tt>Kc</tt>, Eq. 1 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al 2000]) for certain species. |
*Computing rainout fractions for gases vs. aerosols | *Computing rainout fractions for gases vs. aerosols | ||
*Computing washout fractions for gases vs. coarse aerosols vs. fine aerosols | *Computing washout fractions for gases vs. coarse aerosols vs. fine aerosols | ||
Line 74: | Line 74: | ||
=== GEOS-Chem v11-01 and later versions === | === GEOS-Chem v11-01 and later versions === | ||
− | We decided to create a data structure—the GEOS-Chem species database— that could hold the various [[Physical properties of GEOS-Chem species|species-specific physical properties]] that are used throughout GEOS-Chem. The species database is populated at GEOS-Chem startup, and it is used to pass the consistent physical properties to the [[Dry deposition|dry deposition module]], [[Wet deposition|wet deposition module]], [[HEMCO|HEMCO emissions module]], and chemistry solver. This allows us to replace much of the confusing legacy < | + | We decided to create a data structure—the GEOS-Chem species database— that could hold the various [[Physical properties of GEOS-Chem species|species-specific physical properties]] that are used throughout GEOS-Chem. The species database is populated at GEOS-Chem startup, and it is used to pass the consistent physical properties to the [[Dry deposition|dry deposition module]], [[Wet deposition|wet deposition module]], [[HEMCO|HEMCO emissions module]], and chemistry solver. This allows us to replace much of the confusing legacy <tt>IF-THEN-ELSE-ENDIF</tt> code structure with one that uses much less <tt>IF</tt> tests. |
Furthermore, having all of the physical properties for GEOS-Chem species defined in a single location makes GEOS-Chem much more robust. During the process of implementing the species database, [[Physical_properties_of_GEOS-Chem_species#Discrepancies_found_in_the_dry_deposition_module|we found that some physical properties (e.g. molecular weights) were being defined differently in dry deposition than in other areas of the code]]. This is a legacy of the dry deposition module being developed independently from other modules. | Furthermore, having all of the physical properties for GEOS-Chem species defined in a single location makes GEOS-Chem much more robust. During the process of implementing the species database, [[Physical_properties_of_GEOS-Chem_species#Discrepancies_found_in_the_dry_deposition_module|we found that some physical properties (e.g. molecular weights) were being defined differently in dry deposition than in other areas of the code]]. This is a legacy of the dry deposition module being developed independently from other modules. | ||
Line 94: | Line 94: | ||
*Pass of consistent values of physical properties to [[Dry deposition|dry deposition]], [[Wet deposition|wet deposition]], and [[HEMCO|HEMCO emisisons component]] | *Pass of consistent values of physical properties to [[Dry deposition|dry deposition]], [[Wet deposition|wet deposition]], and [[HEMCO|HEMCO emisisons component]] | ||
*Removal of redundant and confusing code in the following routines: | *Removal of redundant and confusing code in the following routines: | ||
− | **< | + | **<tt>INIT_DRYDEP, INIT_WETDEP, WETDEPID, COMPUTE_F, RAINOUT, WASHOUT</tt> |
| | | | ||
*Approved 12 Dec 2015 | *Approved 12 Dec 2015 | ||
Line 104: | Line 104: | ||
*[[Sea_salt_aerosols#Molecular_weight_discrepancy_in_drydep_mod.F|Use proper molecular weights for sea salt aerosols in the dry deposition module]]; and | *[[Sea_salt_aerosols#Molecular_weight_discrepancy_in_drydep_mod.F|Use proper molecular weights for sea salt aerosols in the dry deposition module]]; and | ||
*[[Sulfate_aerosols#Give_SO4s_and_NITs_the_same_molecular_weight_as_SALC|Give SO4s and NITs the same molecular weight as SALC]]. | *[[Sulfate_aerosols#Give_SO4s_and_NITs_the_same_molecular_weight_as_SALC|Give SO4s and NITs the same molecular weight as SALC]]. | ||
− | *[[GEOS-Chem_species_database#Defining_molecular_weight_fields_of_the_Input_Opt_object_from_the_species_database|Define molecular weight fields of the < | + | *[[GEOS-Chem_species_database#Defining_molecular_weight_fields_of_the_Input_Opt_object_from_the_species_database|Define molecular weight fields of the <tt>Input_Opt</tt> object from the GEOS-Chem species database]] |
| | | | ||
*Approved 04 Jan 2016 | *Approved 04 Jan 2016 | ||
Line 128: | Line 128: | ||
== The SPECIES derived type == | == The SPECIES derived type == | ||
− | The < | + | The <tt>Species</tt> derived type allows you to specify physical properties for a single GEOS-Chem species. The type declaration is contained in GEOS-Chem module <tt>Headers/species_mod.F90</tt>. The tables below define the physical parameters that are contained in the <tt>Species</tt> type, subdivided by category. |
=== ID numbers, names, etc. === | === ID numbers, names, etc. === | ||
Line 143: | Line 143: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>ModelID</tt> || <tt>INTEGER</tt> || 1 ||Species ID |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>AdvectID</tt> ||<tt>INTEGER</tt> || 1 ||Advected species ID |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DryDepID</tt> ||<tt>INTEGER</tt> || 1 ||Dry deposition species ID |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WetDepID</tt> ||<tt>INTEGER</tt> || 1 ||Wet deposition species ID |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>KppVarId</tt> ||<tt>INTEGER</tt> || 1 ||KPP variable species ID (i.e. index for the KPP VAR array) |
*NOTE: To be added in [[GEOS-Chem v11-01#v11-01g|GEOS-Chem v11-01g]] | *NOTE: To be added in [[GEOS-Chem v11-01#v11-01g|GEOS-Chem v11-01g]] | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>KppFixId</tt> ||<tt>INTEGER</tt> || 1 ||KPP variable species ID (i.e. index for the KPP FIX array) |
*NOTE: To be added in [[GEOS-Chem v11-01#v11-01g|GEOS-Chem v11-01g]] | *NOTE: To be added in [[GEOS-Chem v11-01#v11-01g|GEOS-Chem v11-01g]] | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Name</tt> ||<tt>CHARACTER(31)</tt> || N/A ||Short species name |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>FullName</tt> ||<tt>CHARACTER(80)</tt> || N/A ||Long species name |
− | *< | + | *<tt>FullName</tt> can be used for the netCDF <tt>long_name</tt> and/or <tt>standard_name</tt> variable attributes. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>NameHash</tt> ||<tt>INTEGER</tt> || N/A ||Unique [https://en.wikipedia.org/wiki/Hash_function integer hash value] that corresponds to the <tt>Name</tt> field |
*NOTE: This number can be positive OR negative. | *NOTE: This number can be positive OR negative. | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_Gas</tt> ||<tt>LOGICAL</tt> || 1 ||Gas or aerosol flag |
*If TRUE, the species is gas. | *If TRUE, the species is gas. | ||
*If FALSE, the species is an aerosol. | *If FALSE, the species is an aerosol. | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_Advected</tt> ||<tt>LOGICAL</tt> || 1 ||If TRUE, the species undergoes the following operations: |
*[[Advection scheme TPCORE|Transport]], | *[[Advection scheme TPCORE|Transport]], | ||
*[[Cloud convection]], and/or | *[[Cloud convection]], and/or | ||
Line 185: | Line 185: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_DryDep</tt> ||<tt>LOGICAL</tt> || 1 ||If TRUE, the species [[Dry deposition|dry deposits]]. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_WetDep</tt> ||<tt>LOGICAL</tt> || 1 ||If TRUE, the species is soluble and [[Wet deposition|wet deposits]]. |
|} | |} | ||
Line 205: | Line 205: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>MW_g</tt> ||<tt>REAL(fp)</tt> || g mol<sup>-1</sup> ||Molecular weight of the species |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>EmMW_g</tt> ||<tt>REAL(fp)</tt> ||g mol<sup>-1</sup> ||Emitted molecular weight of the species |
*Several GEOS-Chem hydrocarbon species are emitted and transported as equivalent C atoms. | *Several GEOS-Chem hydrocarbon species are emitted and transported as equivalent C atoms. | ||
− | *For these hydrocarbon species, set < | + | *For these hydrocarbon species, set <tt>EmMW_g</tt> = 12.0 (molecular weight of 1 carbon atom). |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>MolecRatio</tt> ||<tt>REAL(fp)</tt> || 1 ||Number of carbon atoms per species (for certain hydrocarbon species only) |
*Example: Acetone (ACET) in GEOS-Chem is carried as 3 carbon atoms. | *Example: Acetone (ACET) in GEOS-Chem is carried as 3 carbon atoms. | ||
− | *Therefore ACET has < | + | *Therefore ACET has <tt>MW_g</tt> = 58.08, <tt>EmMW_g</tt> = 12, and <tt>MolecRatio</tt> = 3. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Density</tt> ||<tt>REAL(fp)</tt> || kg m<sup>-3</sup> ||Density of the species |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Radius</tt> ||<tt>REAL(fp)</tt> || m ||Radius of the species |
|} | |} | ||
Line 240: | Line 240: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Henry_K0</tt> ||<tt>REAL(f8)</tt> ||M atm<sup>-1</sup> ||Henry's law solubility constant |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Henry_CR</tt> ||<tt>REAL(f8)</tt> ||K ||Henry's law volatility constant |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Henry_pKa</tt> ||<tt>REAL(f8)</tt> ||1 ||Henry's law pH correction factor |
|} | |} | ||
Line 265: | Line 265: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DD_AeroDryDep</tt> ||<tt>LOGICAL</tt> ||1 ||For sea salt species, set this to TRUE. This will use dry deposition routine <tt>AERO_SFCRSII</tt> to perform aerodynamic dry deposition accounting for hygroscopic growth. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DD_DustDryDep</tt> ||<tt>LOGICAL</tt> ||1 ||For mineral dust species, set this to TRUE. This will use dry deposition routine <tt>DUST_SFCRSII</tt> to perform aerodynamic dry deposition omitting hygroscopic growth. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DD_DvzAerSnow</tt> ||<tt>REAL(fp)</tt> ||cm/s ||For certain aerosol species, <tt>DD_DvzAerSnow</tt> specifies the dry deposition velocity over ice and snow. This usually 0.03 cm/s. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DD_DvzMinVal</tt> ||<tt>REAL(fp)</tt> ||cm/s ||A 2-element vector that specifies the minimum dry deposition velocity for sulfate species SO2, SO4, MSA, NH3, NH4, NIT. This follows the methodology of the GOCART model). |
− | *< | + | *<tt>DD_DvzMinVal(1)</tt>: Specifies minimum drydep velocity over snow/ice |
− | *< | + | *<tt>DD_DvzMinVal(2)</tt>: Specifies minimum drydep velocity over land |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DD_Hstar_old</tt> ||<tt>REAL(fp)</tt> ||M atm<sup>-1</sup> ||Specifies the Henry's law <tt>K0</tt> constant that is used in dry deposition. This is saved in the <tt>HSTAR</tt> variable in the GEOS-Chem dry deposition module <tt>GeosCore/drydep_mod.F</tt>. |
− | *NOTE: We will eventually replace < | + | *NOTE: We will eventually replace <tt>DD_Hstar_old</tt> this with the common Henry's law parameters (i.e. <tt>Henry_K0</tt>, <tt>Henry_CR</tt>, <tt>Henry_pKa</tt>.) But in order to replicate the behavior of the previous version of GEOS-Chem during testing, we need to supply the dry deposition code with the same HSTAR values that are currently set in <tt>INIT_DRYDEP</tt>. Therefore, we have added <tt>DD_Hstar_old</tt> as a temporary placeholder for the <tt>HSTAR</tt> quantity from <tt>drydep_mod.F</tt>. We will remove this later on. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DD_F0</tt> ||<tt>REAL(fp)</tt> ||1 ||Reactivity factor for oxidation of biological substances |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>DD_KOA</tt> ||<tt>REAL(fp)</tt> ||1 ||Octanol-air partition coefficient, used for the <tt>POPG</tt> tracer in [[POPs simulation|Persistant Organic Pollutant (POPs) specialty simulations]]. |
|} | |} | ||
Line 305: | Line 305: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_Is_HNO3</tt> ||<tt>LOGICAL</tt> ||1 ||Flag to determine if the species is HNO3. |
*Rainout/washout of HNO3 needs to be handled separately from other gas-phase species. | *Rainout/washout of HNO3 needs to be handled separately from other gas-phase species. | ||
− | *< | + | *<tt>WD_Is_HNO3</tt> will be automatically determined, depending on the value of <tt>Name</tt>. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_Is_SO2</tt> ||<tt>LOGICAL</tt> ||1 ||Flag to determine if the species is SO2. |
*Rainout/washout of HNO3 separately from other gas-phase species. | *Rainout/washout of HNO3 separately from other gas-phase species. | ||
− | *< | + | *<tt>WD_Is_SO2</tt> will be automatically determined, depending on the value of <tt>Name</tt>. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_Is_H2SO4</tt> ||<tt>LOGICAL</tt> ||1 ||Flag to determine if the species is H2SO4. |
*Rainout/washout of H2SO4 needs to be handled separately from other gas-phase species. | *Rainout/washout of H2SO4 needs to be handled separately from other gas-phase species. | ||
− | *< | + | *<tt>WD_Is_H2SO4</tt> will be automatically determined, depending on the value of <tt>Name</tt>. |
*H2SO4 is a species in TOMAS aerosol microphysics only. | *H2SO4 is a species in TOMAS aerosol microphysics only. | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_CoarseAer</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to indicate that the species is a coarse aerosol (i.e. having a radius > 1 μm) |
*Washout of coarse aerosols is handled separately from the washout of fine aerosols. | *Washout of coarse aerosols is handled separately from the washout of fine aerosols. | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_LiqAndGas</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to indicate that the ice-to-gas ratio needs to be computed for this species by co-condensation (cf. Eq. 9 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al, 2000]). |
*If TRUE, then the ice-to-gas ratio will be computed for this species. | *If TRUE, then the ice-to-gas ratio will be computed for this species. | ||
− | **Currently, CH2O and NH3 are the only species for which < | + | **Currently, CH2O and NH3 are the only species for which <tt>WD_LiqAndGas</tt> = TRUE. |
*If FALSE, the ice-to-gas ratio for this species will be set to zero. | *If FALSE, the ice-to-gas ratio for this species will be set to zero. | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_ConvFacI2G</tt> ||<tt>REAL(fp)</tt> ||1 ||Specifies the conversion factor (i.e. the ratio of sticking coefficients on the ice surface) for computing the ice-to-gas-ratio by co-condensation (cf. Eq. 9 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al, 2000]). |
− | *< | + | *<tt>WD_ConvFacI2G</tt> only needs to be specified for those species having <tt>WD_LiqAndGas</tt> = TRUE. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_RetFactor</tt> ||<tt>REAL(fp)</tt> ||1 ||Specifies the retention efficiency <tt>R<sub>i</sub></tt> of tracer in the liquid cloud condensate as it is converted to precipitation. (<tt>R<sub>i</sub></tt> < 1 accounts for volatization during riming.) The retention factor is defined in Eq. 1 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al, 2000]. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_AerScavEff</tt> ||<tt>REAL(fp)</tt> || 1 ||Specifies the aerosol scavenging efficiency. This factor multiplies <tt>F</tt>, the fraction of aerosol species that is lost to convective updraft scavenging (cf Eq. 2 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al 2000]). |
− | *For most aerosol species, < | + | *For most aerosol species, <tt>WD_AerScavEff</tt> = 1.0. |
− | *For secondary organic aerosol species, < | + | *For secondary organic aerosol species, <tt>WD_AerScavEff</tt> = 0.8. |
− | *For hydrophobic species (e.g. MOPO), < | + | *For hydrophobic species (e.g. MOPO), <tt>WD_AerScavEff</tt> = 0.0. |
− | < | + | <tt>WD_AerScavEff</tt> is applied in routine <tt>COMPUTE_F</tt> of GEOS-Chem module <tt>GeosCore/wetscav_mod.F</tt>. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_KcScaleFac</tt> ||<tt>REAL(fp)</tt> ||1 ||Specifies a temperature-dependent scale factor that is used to multiply <tt>K</tt> (aka <tt>Kc</tt>), the rate constant for conversion of cloud condensate to precipitation (cf Eq. 1 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al, 2000]). |
− | < | + | <tt>WD_KcScaleFac</tt> is defined as a 3-element vector, where: |
− | *< | + | *<tt>WD_KcScaleFac(1)</tt> multiplies <tt>K</tt> when T < 237 K. |
− | *< | + | *<tt>WD_KcScaleFac(2)</tt> multiplies <tt>K</tt> when 237 K <= T < 258 K. |
− | *< | + | *<tt>WD_KcScaleFac(3)</tt> multiplies <tt>K</tt> when T >= 258K. |
− | This allows us to better simulate scavenging by snow, where, for most species, we need to halve the < | + | This allows us to better simulate scavenging by snow, where, for most species, we need to halve the <tt>K</tt> rate when 237 K <= T < 258 K. This can be easily done by setting the value <tt>KcScaleFac(2) = 0.5</tt>. |
− | < | + | <tt>WD_KcScaleFac</tt> is applied in routine <tt>F_AEROSOL</tt> of GEOS_Chem module <tt>GeosCore/wetscav_mod.F</tt>. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>WD_RainoutEff</tt> ||<tt>REAL(fp)</tt> ||1 ||Specifies a temperature-dependent scale factor that is used to multiply <tt>F<sub>i</sub></tt> (aka <tt>RAINFRAC</tt>), the fraction of species scavenged by rainout (cf Eq. 1 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al, 2000]). |
− | < | + | <tt>WD_RainoutEff</tt> is defined as a 3-element vector, where: |
− | *< | + | *<tt>WD_RainoutEff(1)</tt> multiplies <tt>F<sub>i</sub></tt> when T < 237 K. |
− | *< | + | *<tt>WD_RainoutEff(2)</tt> multiplies <tt>F<sub>i</sub></tt> when 237 K <= T < 258 K. |
− | *< | + | *<tt>WD_RainoutEff(3)</tt> multiplies <tt>F<sub>i</sub></tt> when T >= 258K. |
− | This allows us to better simulate scavenging by snow and impaction scavenging of BC. For most species, we need to be able to turn off rainout when 237 K <= T < 258 K. This can be easily done by setting < | + | This allows us to better simulate scavenging by snow and impaction scavenging of BC. For most species, we need to be able to turn off rainout when 237 K <= T < 258 K. This can be easily done by setting <tt>RainoutEff(2)</tt> = 0. |
− | < | + | <tt>WD_RainoutEff</tt> is applied in routine <tt>APPLY_RAINOUT_EFF</tt> of GEOS_Chem module <tt>GeosCore/wetscav_mod.F</tt>. |
− | NOTE: For secondary organic aerosol species, the maximum value of < | + | NOTE: For secondary organic aerosol species, the maximum value of <tt>WD_RainoutEff</tt> will be 0.8 instead of 1.0. |
|} | |} | ||
Line 386: | Line 386: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>MP_SizeResAer</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to TRUE to indicate that the species is a size-resolved aerosol species (used in microphysics simulations). |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>MP_SizeResAer</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to TRUE to indicate that the species is a size-resolved aerosol number (used in microphysics simulations). |
|} | |} | ||
Line 406: | Line 406: | ||
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_Hg0</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to TRUE to denote a total Hg0 regional tagged Hg0 species. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_Hg2</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to TRUE to denote a total Hg2 regional tagged Hg2 species. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_HgP</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to TRUE to denote a total HgP regional tagged HgP species. |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Hg_Cat</tt> ||<tt>LOGICAL</tt> ||1 ||Indicates the tagged Hg category number (<tt>1..State_Chm%N_Hg_CATS</tt>) |
|-valign="top" | |-valign="top" | ||
− | |< | + | |<tt>Is_Hg0</tt> ||<tt>LOGICAL</tt> ||1 ||Set this flag to TRUE to denote a total Hg0 regional tagged Hg0 species. |
|} | |} | ||
Line 426: | Line 426: | ||
== Creating the GEOS-Chem species database object== | == Creating the GEOS-Chem species database object== | ||
− | The GEOS-Chem species database object is actually a vector, whose length is the same as the number of GEOS-Chem species that are defined for a given simulation. Each element of the vector is an object of type < | + | The GEOS-Chem species database object is actually a vector, whose length is the same as the number of GEOS-Chem species that are defined for a given simulation. Each element of the vector is an object of type <tt>Species</tt>. The following sections describe how we create the GEOS-Chem species database object: |
=== The SPCPTR derived type === | === The SPCPTR derived type === | ||
− | The < | + | The <tt>SpecPtr</tt> derived type (located in GEOS-Chem module <tt>Headers/species_mod.F90</tt>) lets you to create a pointer variable of type <tt>Species</tt>. |
TYPE, PUBLIC :: SpcPtr | TYPE, PUBLIC :: SpcPtr | ||
Line 438: | Line 438: | ||
=== The GEOS-Chem species database object === | === The GEOS-Chem species database object === | ||
− | We use the < | + | We use the <tt>SpcPtr</tt> to create the GEOS-Chem species database as a sub-object of the <tt>State_Chm</tt> "Chemistry State" object. The <tt>State_Chm</tt> object is built according to the <tt>ChmState</tt> derived-type object: |
!========================================================================= | !========================================================================= | ||
Line 458: | Line 458: | ||
END TYPE ChmState | END TYPE ChmState | ||
− | Therefore, the GEOS-Chem species database is referred to as < | + | Therefore, the GEOS-Chem species database is referred to as <tt>State_Chm%SpcData</tt>. |
− | Routine < | + | Routine <tt>Init_Species_Database</tt> in GEOS-Chem module <tt>Headers/species_database_mod.F90</tt> allocates the <tt>State_Chm%SpcData</tt> object and populates it with [[Physical properties of GEOS-Chem species|the relevant physical parameters for each GEOS-Chem species]]. |
=== Obtaining information from the species database === | === Obtaining information from the species database === | ||
Line 475: | Line 475: | ||
ENDDO | ENDDO | ||
− | Routine < | + | Routine <tt>Init_Species_Database</tt> will also save the number of GEOS-Chem species as the variable <span style="color:green"><tt>State_Chm%nSpecies</tt></span>. So you can use that as the upper bound of DO loops. |
− | To simplify the coding, you can create an object of type < | + | To simplify the coding, you can create an object of type <tt>Species</tt> to point to each entry in the species database. For example this code |
<span style="color:blue">USE Species_Mod, ONLY : Species | <span style="color:blue">USE Species_Mod, ONLY : Species | ||
Line 505: | Line 505: | ||
<span style="color:green">'''''This update was validated with the 1-month benchmark simulation [[GEOS-Chem v11-01 benchmark history#v11-01e|v11-01e]] (approved 04 Jan 2016).'''''</span> | <span style="color:green">'''''This update was validated with the 1-month benchmark simulation [[GEOS-Chem v11-01 benchmark history#v11-01e|v11-01e]] (approved 04 Jan 2016).'''''</span> | ||
− | In [[GEOS-Chem v11-01#v11-01d|GEOS-Chem v11-01d]] and prior versions, molecular weights for each emitted species (shown in <span style="color:red">RED</span>) were specified in the < | + | In [[GEOS-Chem v11-01#v11-01d|GEOS-Chem v11-01d]] and prior versions, molecular weights for each emitted species (shown in <span style="color:red">RED</span>) were specified in the <tt>input.geos</tt> file: |
%%% TRACER MENU %%% : | %%% TRACER MENU %%% : | ||
Line 516: | Line 516: | ||
Tracer #4 : 4 CO <span style="color:red">28.0</span> (CO) | Tracer #4 : 4 CO <span style="color:red">28.0</span> (CO) | ||
− | These molecular weights were then saved into [[Derived_type_objects_used_by_GEOS-Chem#The_Input_Options_object|the Input Options object]] field < | + | These molecular weights were then saved into [[Derived_type_objects_used_by_GEOS-Chem#The_Input_Options_object|the Input Options object]] field <tt>Input_Opt%TRACER_MW_G</tt>. They also initialized the related quantities <tt>Input_Opt%TRACER_MW_KG</tt>, <tt>Input_Opt%TCVV</tt>, and <tt>Input_Opt%XNUMOL</tt>. |
− | Historically, other GEOS-Chem modules (especially dry deposition) had defined molecular weights as internal module variables. For some species, these locally-defined molecular weights [[Physical_properties_of_GEOS-Chem_species#Discrepancies_found_in_the_dry_deposition_module|conflicted with the molecular weights stored in the < | + | Historically, other GEOS-Chem modules (especially dry deposition) had defined molecular weights as internal module variables. For some species, these locally-defined molecular weights [[Physical_properties_of_GEOS-Chem_species#Discrepancies_found_in_the_dry_deposition_module|conflicted with the molecular weights stored in the <tt>Input_Opt</tt> object]]. Some of these inconsistencies went undetected for several years. |
− | To avoid further discrepancies like this, we modified [[GEOS-Chem v11-01#v11-01e|GEOS-Chem v11-01e]] to pass molecular weight values from the species database to the relevant fields of < | + | To avoid further discrepancies like this, we modified [[GEOS-Chem v11-01#v11-01e|GEOS-Chem v11-01e]] to pass molecular weight values from the species database to the relevant fields of <tt>Input_Opt</tt>. This ensures that a single molecular weight for each species will be used everywhere throughout GEOS-Chem. |
− | The following code was added to routine < | + | The following code was added to routine <tt>INIT_GIGC_STATE_CHM</tt> (in module <tt>GeosCore/gigc_state_chm_mod.F90</tt>). Code lines in <span style="color:green">GREEN</span> show where the emitted molecular weight for each species is passed from the species dataabase to the <tt>Input_Opt</tt> object. |
!======================================================================= | !======================================================================= | ||
Line 586: | Line 586: | ||
== Adding new species to the GEOS-Chem species database == | == Adding new species to the GEOS-Chem species database == | ||
− | You can define [[Physical properties of GEOS-Chem species|physical properties for GEOS-Chem species]] in routine < | + | You can define [[Physical properties of GEOS-Chem species|physical properties for GEOS-Chem species]] in routine <tt>Init_Species_Database</tt> (located in module <tt>Headers/species_database_mod.F90</tt>). Near the top of the routine you will see a loop over the number of species and a <tt>SELECT CASE</tt> statement, <span style="color:red">highlighted in RED below</span>. |
! | ! | ||
Line 629: | Line 629: | ||
... etc ...</span> | ... etc ...</span> | ||
− | In each < | + | In each <tt>CASE</tt> block, there is a call to the routine <tt>Spc_Create</tt> (contained in module <tt>Headers/species_mod.F90</tt>). The <tt>Spc_Create</tt> routine accepts species physical properties as optional arguments and passes them to the species database object. You can add new species to the database by adding more <tt>CASE</tt> blocks—with calls to <tt>Spc_Create</tt>—to the <tt>SELECT_CASE</tt> statement. |
We shall provide a few examples below of how to define GEOS-Chem species with different properties. In our examples, we shall color-code groups of species properties as follows: | We shall provide a few examples below of how to define GEOS-Chem species with different properties. In our examples, we shall color-code groups of species properties as follows: | ||
Line 640: | Line 640: | ||
*<span style="color:purple">PURPLE denotes Henry's law constants</span> | *<span style="color:purple">PURPLE denotes Henry's law constants</span> | ||
− | To simplify the coding, in all the examples below, we use the parameters < | + | To simplify the coding, in all the examples below, we use the parameters <tt>T</tt> and <tt>F</tt> instead of having to type out the logical values <tt>.TRUE.</tt> and <tt>.FALSE.</tt>. A complete list of species physical properties may be found on [[Physical properties of GEOS-Chem species|our ''Physical properties of GEOS-Chem species'' wiki page]]. |
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 19:44, 9 October 2015 (UTC) | --[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 19:44, 9 October 2015 (UTC) | ||
Line 648: | Line 648: | ||
Several GEOS-Chem species are advected (i.e. they undergo transport, convection and PBL mixing) but do not dry-deposit or wet-deposit. Species of this type include the stratospherically-important bromine and chlorine species from the [[UCX chemistry mechanism]]. | Several GEOS-Chem species are advected (i.e. they undergo transport, convection and PBL mixing) but do not dry-deposit or wet-deposit. Species of this type include the stratospherically-important bromine and chlorine species from the [[UCX chemistry mechanism]]. | ||
− | To add a species of this type (such as carbon tetrachloride), call the < | + | To add a species of this type (such as carbon tetrachloride), call the <tt>Spc_Create</tt> routine with these settings: |
CASE( <span style="color:brown">'CCL4'</span> ) | CASE( <span style="color:brown">'CCL4'</span> ) | ||
Line 664: | Line 664: | ||
NOTES: | NOTES: | ||
− | #The <span style="color:brown">name of the species</span> in the < | + | #The <span style="color:brown">name of the species</span> in the <tt>CASE</tt> block should be in ALL CAPITALS. This makes the name search easier. |
− | #*You can redefine the species name by passing a MIXED CASE string via the <span style="color:brown">< | + | #*You can redefine the species name by passing a MIXED CASE string via the <span style="color:brown"><tt>Name</tt></span> argument. This will preserve element names such as Br, Cl, etc. |
− | #*Example: < | + | #*Example: <tt>CASE( <span style="color:brown">'CCL4'</span> )</tt> but <span style="color:brown"><tt>Name = 'CCl4'</tt></span> |
− | #Most species parameters use the GEOS-Chem flexible precision (i.e. < | + | #Most species parameters use the GEOS-Chem flexible precision (i.e. <tt>REAL(fp)</tt>.) |
− | #*Adding < | + | #*Adding <tt>_fp</tt> to the end of a number signifies it is a constant of type <tt>REAL(fp)</tt>. |
#You don't have to specify all of the possible settings. | #You don't have to specify all of the possible settings. | ||
− | #*Settings that are omitted will be assigned a "missing data" value (< | + | #*Settings that are omitted will be assigned a "missing data" value (<tt>-999</tt> for numeric values, or <tt>.FALSE.</tt> for logical values), unless specified otherwise. |
− | #If you omit <span style="color:red">< | + | #If you omit <span style="color:red"><tt>EmMW_g</tt></span> (emitted molecular weight), it will be assigned the same value as <span style="color:red"><tt>MW_g</tt></span> (actual molecular weight). |
− | #If you omit <span style="color:red">< | + | #If you omit <span style="color:red"><tt>MolecRatio</tt></span> (carbon atoms per species), it will be assigned a default value of <tt>1.0</tt>. |
− | #Routine < | + | #Routine <tt>Spc_Create</tt> will automatically update the <tt>ModelID</tt> and <tt>AdvectID</tt> ID's for you. |
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 14:39, 14 October 2015 (UTC) | --[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 14:39, 14 October 2015 (UTC) | ||
Line 702: | Line 702: | ||
NOTES: | NOTES: | ||
− | #Because H2O2 is not a hydrocarbon that is carried as equivalent carbons, we only have to specify the <span style="color:red">< | + | #Because H2O2 is not a hydrocarbon that is carried as equivalent carbons, we only have to specify the <span style="color:red"><tt>MW_g</tt></span> (actual molecular weight) setting. |
− | #*The related properties <span style="color:red">< | + | #*The related properties <span style="color:red"><tt>EmMW_g</tt></span> and <span style="color:red"><tt>MolecRatio</tt></span> will be updated accordingly. |
#H2O2 is an example of a species that had been using a different Henry's law K0 value for dry deposition than for wet deposition. | #H2O2 is an example of a species that had been using a different Henry's law K0 value for dry deposition than for wet deposition. | ||
− | #*<span style="color:blue">< | + | #*<span style="color:blue"><tt>DD_Hstar_old</tt></span> sets the Henry's law K0 used for dry deposition |
− | #*<span style="color:purple">< | + | #*<span style="color:purple"><tt>Henry_K0</tt></span> sets the Henry's law K0 used in wet deposition |
#*Eventually we will use the same K0 everywhere, but for now we need to retain the prior behavior of the code. | #*Eventually we will use the same K0 everywhere, but for now we need to retain the prior behavior of the code. | ||
#H2O2 is also a species for which the ice to gas ratio is computed by co-condensation in the wet deposition module | #H2O2 is also a species for which the ice to gas ratio is computed by co-condensation in the wet deposition module | ||
− | #*<span style="color:green">< | + | #*<span style="color:green"><tt>WD_LiqAndGas</tt></span> is TRUE for H2O2. |
− | #*<span style="color:green">< | + | #*<span style="color:green"><tt>WD_ConvFacI2G</tt></span> specifies the conversion factor (the ratio of sticking coefficients on the ice surface) as described in Eq. 9 of [http://acmg.seas.harvard.edu/geos/wiki_docs/deposition/wetdep.jacob_etal_2000.pdf Jacob et al 2000]. |
− | #*For most other species, you can omit <span style="color:green">< | + | #*For most other species, you can omit <span style="color:green"><tt>WD_LiqAndGas</tt></span> and <span style="color:green"><tt>WD_LiqAndGas</tt></span>, as the ice-to-gas ratio for most species is zero. |
− | #The <span style="color:purple">Henry's law parameters</span> are defined as 8-byte floating point variables (< | + | #The <span style="color:purple">Henry's law parameters</span> are defined as 8-byte floating point variables (<tt>REAL(f8)</tt>). |
#*This provides better numerical stability, as several of the Henry's law computations involve exponentials. | #*This provides better numerical stability, as several of the Henry's law computations involve exponentials. | ||
− | #*Adding < | + | #*Adding <tt>_f8</tt> to the end of a number signifies it is a constant of type <tt>REAL(f8)</tt>. |
− | #All other settings that are omitted will be assigned a "missing data" value (< | + | #All other settings that are omitted will be assigned a "missing data" value (<tt>-999</tt> for numeric values, or <tt>.FALSE.</tt> for logical values), |
− | #Routine < | + | #Routine <tt>Init_Species_Database</tt> will automatically update the <tt>ModelID</tt>, <tt>AdvectID</tt>, <tt>DryDepID</tt>, and <tt>WetDepID</tt> for you. |
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 14:41, 14 October 2015 (UTC) | --[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 14:41, 14 October 2015 (UTC) | ||
Line 724: | Line 724: | ||
NIT (inorganic nitrates) is part of the sulfate aerosol module in GEOS_Chem. It can serve as an example of how to define an aerosol species that is transported, dry-deposits, and wet-deposits. | NIT (inorganic nitrates) is part of the sulfate aerosol module in GEOS_Chem. It can serve as an example of how to define an aerosol species that is transported, dry-deposits, and wet-deposits. | ||
− | ... these arrays are defined at the top of the < | + | ... these arrays are defined at the top of the <tt>Init_Species_Database</tt> routine ... |
! Arrays | ! Arrays | ||
Line 768: | Line 768: | ||
NOTES: | NOTES: | ||
− | #We denote that this species is an aerosol with <span style="color:orange">< | + | #We denote that this species is an aerosol with <span style="color:orange"><tt>Is_Gas = F</tt></span>. |
− | #Drydep parameters <span style="color:blue">< | + | #Drydep parameters <span style="color:blue"><tt>DD_F0</tt></span> and <span style="color:blue"><tt>DD_Hstar_Old</tt></span> only apply to gas-phase species, so we can set them to zero. |
− | #*This will ensure that the dry deposition module will not get "missing data" values (< | + | #*This will ensure that the dry deposition module will not get "missing data" values (<tt>-999</tt> for these parameters. |
− | #On ice and snow surfaces, we manually set the dry deposition velocity of NIT to 0.03 cm/s. This is specified with the <span style="color:blue">< | + | #On ice and snow surfaces, we manually set the dry deposition velocity of NIT to 0.03 cm/s. This is specified with the <span style="color:blue"><tt>DD_DvzAerSnow</tt></span> setting. |
− | #Following the methodology of the GOCART model, we use the <span style="color:blue">< | + | #Following the methodology of the GOCART model, we use the <span style="color:blue"><tt>DD_DvzMinVal</tt></span> vector to specify a minimum dry deposition velocity over snow/ice vs. land. |
− | #The < | + | #The <tt>WD_KcScaleFac</tt> vector allows us to halve the rate of conversion of cloud condensate to precipitation in the temperature range 237 <= T < 258 K. |
#*This algorithm (cf. Qiaoqiao Wang) better simulates scavenging of aerosol species in ice/snow. | #*This algorithm (cf. Qiaoqiao Wang) better simulates scavenging of aerosol species in ice/snow. | ||
− | #The < | + | #The <tt>WD_RainoutEff</tt> vector allows us to turn off rainout in the temperature range 237 <= T < 258 K. |
#*This algorithm (cf. Qiaoqiao Wang) better simulates scavenging of aerosol species in ice/snow. | #*This algorithm (cf. Qiaoqiao Wang) better simulates scavenging of aerosol species in ice/snow. | ||
− | #For some species (e.g. mineral dust and sea salt aerosols) you also need to specify the <span style="color:red">< | + | #For some species (e.g. mineral dust and sea salt aerosols) you also need to specify the <span style="color:red"><tt>Radius</tt></span> and <span style="color:red"><tt>Density</tt></span> settings. |
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 17:13, 4 February 2016 (UTC) | --[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 17:13, 4 February 2016 (UTC) | ||
Line 806: | Line 806: | ||
NOTES: | NOTES: | ||
#Acetone is emitted and transported as an equivalent number of carbon atoms. Therefore, we need to set these values explicitly: | #Acetone is emitted and transported as an equivalent number of carbon atoms. Therefore, we need to set these values explicitly: | ||
− | #*Set the actual molecular weight (<span style="color:red">< | + | #*Set the actual molecular weight (<span style="color:red"><tt>MW_g</tt></span>) to 58.08 |
− | #*Set the emitted molecular weight (<span style="color:red">< | + | #*Set the emitted molecular weight (<span style="color:red"><tt>EmMW_g</tt></span>) to 12.0 |
− | #*Set the number of carbons per species (<span style="color:red">< | + | #*Set the number of carbons per species (<span style="color:red"><tt>MolecRatio</tt></span>) to 3.0 |
#Although acetone does not wet deposit, we still specify its <span style="color:purple">Henry's law constants</span> for the [[HEMCO]] sea-air exchange module. | #Although acetone does not wet deposit, we still specify its <span style="color:purple">Henry's law constants</span> for the [[HEMCO]] sea-air exchange module. | ||
− | #All other settings that are omitted will be assigned a "missing data" value (< | + | #All other settings that are omitted will be assigned a "missing data" value (<tt>-999</tt> for numeric values, or <tt>.FALSE.</tt> for logical values), |
− | #Routine < | + | #Routine <tt>Spc_Create</tt> will automatically update the <tt>ModelID</tt>, <tt>AdvectID</tt>, and <tt>DryDepID</tt> for you. |
--[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 17:14, 4 February 2016 (UTC) | --[[User:Bmy|Bob Yantosca]] ([[User talk:Bmy|talk]]) 17:14, 4 February 2016 (UTC) | ||
Line 817: | Line 817: | ||
=== Example 5: Adding several species with similar properties at the same time === | === Example 5: Adding several species with similar properties at the same time === | ||
− | Several GEOS-Chem species have similar properties. For example, the DST{1,2,3,4}, DSTAL{1,2,3,4}, NITD{1,2,3,4}, and SO4D{1,2,3,4} tracers are all mineral dust tracers with the same molecular weights, radii, density, drydep properties, and wetdep properties. Therefore, we can group them together so that a single call to < | + | Several GEOS-Chem species have similar properties. For example, the DST{1,2,3,4}, DSTAL{1,2,3,4}, NITD{1,2,3,4}, and SO4D{1,2,3,4} tracers are all mineral dust tracers with the same molecular weights, radii, density, drydep properties, and wetdep properties. Therefore, we can group them together so that a single call to <tt>Spc_Create</tt> will define all of these tracers: |
CASE( <span style="color:brown">'DST2', 'DSTAL2', 'NITD2', 'SO4D2'</span> ) | CASE( <span style="color:brown">'DST2', 'DSTAL2', 'NITD2', 'SO4D2'</span> ) | ||
Line 862: | Line 862: | ||
NOTES: | NOTES: | ||
− | #The second < | + | #The second <tt>SELECT CASE</tt> statement is used to assign a unique <span style="color:brown"><tt>FullName</tt></span> to each of these tracers. Otherwise, the species all share the same properties. |
− | #The flag <span style="color:green">< | + | #The flag <span style="color:green"><tt>WD_CoarseAer</tt></span> is used to denote species having a radius >= 1μm. This is needed in subroutine <tt>WASHOUT</tt> in (<tt>GeosCore/wetscav_mod.F</tt>), where coarse aerosol washout is handled differently than fine aerosol washout. |
− | #The <span style="color:blue">< | + | #The <span style="color:blue"><tt>DD_DustDryDep</tt></span> denotes that these are mineral dust species, for which dry deposition is handled by routine <tt>DUST_SFRSCII</tt> in <tt>drydep_mod.F</tt>. This routine ignores hygroscopic growth. |
− | #*The similar flag <span style="color:blue">< | + | #*The similar flag <span style="color:blue"><tt>DD_AeroDryDep</tt></span> denotes sea salt species, for which dry deposition is handled by routine <tt>AERO_SFRSCII</tt> in <tt>drydep_mod.F</tt>. This routine will account for hygroscopic growth. |
--[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 14:45, 14 October 2015 (UTC) | --[[User:Bmy|Bob Y.]] ([[User talk:Bmy|talk]]) 14:45, 14 October 2015 (UTC) |
Revision as of 19:54, 16 March 2017
On this page we describe the GEOS-Chem species database object. This object stores physical properties (e.g. molecular weights, densities, Henry's law constants, etc.) for GEOS-Chem species in a single location. (This will be included in the public release of GEOS-Chem v11-01).
Contents
- 1 Overview
- 2 The SPECIES derived type
- 3 Creating the GEOS-Chem species database object
- 4 Adding new species to the GEOS-Chem species database
- 4.1 Example 1: Add a species that is only advected
- 4.2 Example 2: Add a gas-phase species that is advected, dry-deposited, and wet-deposited
- 4.3 Example 3: Add an aerosol species that is advected, dry-deposited, and wet-deposited
- 4.4 Example 4: Add a hydrocarbon species carried as equivalent carbon atoms
- 4.5 Example 5: Adding several species with similar properties at the same time
Overview
The following sections describe how we specify physical properties for GEOS-Chem species prior to and after the introduction of the species database.
GEOS-Chem v10-01 and prior versions
In GEOS-Chem v10-01 and prior versions, physical properties for GEOS-Chem species were defined in many different locations, as shown in the table below:
Property | Units | Where defined | Description |
---|---|---|---|
TRACER_MW_G | g -1 | input.geos file | Emitted species molecular weight (i.e. the molecular weight of the emitted species, if there is more than one species per tracer). |
TRACER_COEFF | g -1 | GeosCore/tracerid_mod.F file | Number of carbon atoms per species (for hydrocarbons that are carried as equivalent carbon atoms) |
Dry deposition properties | |||
A_RADI | m | INIT_DRYDEP (in GeosCore/drydep_mod.F) | Aerosol radius used in dry deposition |
A_DEN | kg m-3 m | INIT_DRYDEP (in GeosCore/drydep_mod.F | Aerosol density used in dry deposition |
NDVZIND | m | INIT_DRYDEP (in GeosCore/drydep_mod.F) | Dry deposition species ID (i.e. slot of the DVEL array) |
HSTAR | M atm-1 | INIT_DRYDEP (in GeosCore/drydep_mod.F) | Henry's law K0 used in dry deposition |
F0 | 1 | INIT_DRYDEP (in GeosCore/drydep_mod.F) | Reactivity factor for oxidation of biological substances |
XMW | kg mol-1 | INIT_DRYDEP (in GeosCore/drydep_mod.F) | Species molecular weight |
Wet deposition properties | |||
IDWETD | 1 | INIT_WETSCAV (in GeosCore/wetscav_mod.F) | Wet deposition ID |
Kstar298 aka K0 |
M atm-1 | COMPUTE_F and RAINOUT (both in GeosCore/wetscav_mod.F) |
Henry's law solubility constant |
H298_R aka CR |
K | COMPUTE_F and RAINOUT (both in GeosCore/wetscav_mod.F) |
Henry's law volatility constant |
Furthermore, in the wet deposition module (GeosCore/wetscav_mod.F several confusing IF-THEN-ELSE-ENDIF blocks were used to perform species-specific computations, including:
- Multiplying the fraction Fi (Eq. 1, Jacob et al 2000) by 0.8 for SOA aerosol species
- Turning off rainout for several aerosol species when 237 <= T < 258 K
- Halving the rate of conversion of cloud condensate to precipitation (aka K or Kc, Eq. 1 of Jacob et al 2000) for certain species.
- Computing rainout fractions for gases vs. aerosols
- Computing washout fractions for gases vs. coarse aerosols vs. fine aerosols
As we move towards the high-performance GEOS-Chem, we wanted to try to avoid such species-specific settings deep into the dry deposition and wet deposition modules.
--Bob Y. (talk) 16:36, 20 October 2015 (UTC)
GEOS-Chem v11-01 and later versions
We decided to create a data structure—the GEOS-Chem species database— that could hold the various species-specific physical properties that are used throughout GEOS-Chem. The species database is populated at GEOS-Chem startup, and it is used to pass the consistent physical properties to the dry deposition module, wet deposition module, HEMCO emissions module, and chemistry solver. This allows us to replace much of the confusing legacy IF-THEN-ELSE-ENDIF code structure with one that uses much less IF tests.
Furthermore, having all of the physical properties for GEOS-Chem species defined in a single location makes GEOS-Chem much more robust. During the process of implementing the species database, we found that some physical properties (e.g. molecular weights) were being defined differently in dry deposition than in other areas of the code. This is a legacy of the dry deposition module being developed independently from other modules.
The species database was introduced in GEOS-Chem v11-01d and extended in v11-01e It will be included in the GEOS-Chem v11-01 public release. The table below shows the various stages of implementation:
Version | Description | Status |
---|---|---|
v11-01d | Phase 1: Initial implementation
|
|
v11-01e | Phase 2a: Standardization
|
|
v11-01e | Phase 2b: Standardization |
|
TBD | Phase 3: Updating values
|
|
--Bob Yantosca (talk) 16:07, 6 May 2016 (UTC)
The SPECIES derived type
The Species derived type allows you to specify physical properties for a single GEOS-Chem species. The type declaration is contained in GEOS-Chem module Headers/species_mod.F90. The tables below define the physical parameters that are contained in the Species type, subdivided by category.
ID numbers, names, etc.
Please also see our our Species indexing in GEOS-Chem wiki page for more information on how you can get the species index information from the Species Database.
Quantity | Type | Units | Description |
---|---|---|---|
ModelID | INTEGER | 1 | Species ID |
AdvectID | INTEGER | 1 | Advected species ID |
DryDepID | INTEGER | 1 | Dry deposition species ID |
WetDepID | INTEGER | 1 | Wet deposition species ID |
KppVarId | INTEGER | 1 | KPP variable species ID (i.e. index for the KPP VAR array)
|
KppFixId | INTEGER | 1 | KPP variable species ID (i.e. index for the KPP FIX array)
|
Name | CHARACTER(31) | N/A | Short species name |
FullName | CHARACTER(80) | N/A | Long species name
|
NameHash | INTEGER | N/A | Unique integer hash value that corresponds to the Name field
|
Is_Gas | LOGICAL | 1 | Gas or aerosol flag
|
Is_Advected | LOGICAL | 1 | If TRUE, the species undergoes the following operations: |
Is_DryDep | LOGICAL | 1 | If TRUE, the species dry deposits. |
Is_WetDep | LOGICAL | 1 | If TRUE, the species is soluble and wet deposits. |
--Bob Yantosca (talk) 14:47, 27 June 2016 (UTC)
Molecular weight, density, radius
Quantity | Type | Units | Description |
---|---|---|---|
MW_g | REAL(fp) | g mol-1 | Molecular weight of the species |
EmMW_g | REAL(fp) | g mol-1 | Emitted molecular weight of the species
|
MolecRatio | REAL(fp) | 1 | Number of carbon atoms per species (for certain hydrocarbon species only)
|
Density | REAL(fp) | kg m-3 | Density of the species |
Radius | REAL(fp) | m | Radius of the species |
--Bob Y. (talk) 19:00, 9 October 2015 (UTC)
Henry's law constants
Please also see our list of Henry's law constants for GEOS-Chem species on our Physical properties of GEOS_Chem species wiki page.
Quantity | Type | Units | Description |
---|---|---|---|
Henry_K0 | REAL(f8) | M atm-1 | Henry's law solubility constant |
Henry_CR | REAL(f8) | K | Henry's law volatility constant |
Henry_pKa | REAL(f8) | 1 | Henry's law pH correction factor |
--Bob Y. (talk) 19:12, 9 October 2015 (UTC)
Dry deposition parameters
Please also see our list of dry deposition parameters for GEOS-Chem species on our Physical properties of GEOS_Chem species wiki page.
Quantity | Type | Units | Description |
---|---|---|---|
DD_AeroDryDep | LOGICAL | 1 | For sea salt species, set this to TRUE. This will use dry deposition routine AERO_SFCRSII to perform aerodynamic dry deposition accounting for hygroscopic growth. |
DD_DustDryDep | LOGICAL | 1 | For mineral dust species, set this to TRUE. This will use dry deposition routine DUST_SFCRSII to perform aerodynamic dry deposition omitting hygroscopic growth. |
DD_DvzAerSnow | REAL(fp) | cm/s | For certain aerosol species, DD_DvzAerSnow specifies the dry deposition velocity over ice and snow. This usually 0.03 cm/s. |
DD_DvzMinVal | REAL(fp) | cm/s | A 2-element vector that specifies the minimum dry deposition velocity for sulfate species SO2, SO4, MSA, NH3, NH4, NIT. This follows the methodology of the GOCART model).
|
DD_Hstar_old | REAL(fp) | M atm-1 | Specifies the Henry's law K0 constant that is used in dry deposition. This is saved in the HSTAR variable in the GEOS-Chem dry deposition module GeosCore/drydep_mod.F.
|
DD_F0 | REAL(fp) | 1 | Reactivity factor for oxidation of biological substances |
DD_KOA | REAL(fp) | 1 | Octanol-air partition coefficient, used for the POPG tracer in Persistant Organic Pollutant (POPs) specialty simulations. |
--Bob Y. (talk) 19:13, 9 October 2015 (UTC)
Wet deposition parameters
Please also see our list of wet deposition parameters for GEOS-Chem species on our Physical properties of GEOS_Chem species wiki page.
Quantity | Type | Units | Description |
---|---|---|---|
WD_Is_HNO3 | LOGICAL | 1 | Flag to determine if the species is HNO3.
|
WD_Is_SO2 | LOGICAL | 1 | Flag to determine if the species is SO2.
|
WD_Is_H2SO4 | LOGICAL | 1 | Flag to determine if the species is H2SO4.
|
WD_CoarseAer | LOGICAL | 1 | Set this flag to indicate that the species is a coarse aerosol (i.e. having a radius > 1 μm)
|
WD_LiqAndGas | LOGICAL | 1 | Set this flag to indicate that the ice-to-gas ratio needs to be computed for this species by co-condensation (cf. Eq. 9 of Jacob et al, 2000).
|
WD_ConvFacI2G | REAL(fp) | 1 | Specifies the conversion factor (i.e. the ratio of sticking coefficients on the ice surface) for computing the ice-to-gas-ratio by co-condensation (cf. Eq. 9 of Jacob et al, 2000).
|
WD_RetFactor | REAL(fp) | 1 | Specifies the retention efficiency Ri of tracer in the liquid cloud condensate as it is converted to precipitation. (Ri < 1 accounts for volatization during riming.) The retention factor is defined in Eq. 1 of Jacob et al, 2000. |
WD_AerScavEff | REAL(fp) | 1 | Specifies the aerosol scavenging efficiency. This factor multiplies F, the fraction of aerosol species that is lost to convective updraft scavenging (cf Eq. 2 of Jacob et al 2000).
WD_AerScavEff is applied in routine COMPUTE_F of GEOS-Chem module GeosCore/wetscav_mod.F. |
WD_KcScaleFac | REAL(fp) | 1 | Specifies a temperature-dependent scale factor that is used to multiply K (aka Kc), the rate constant for conversion of cloud condensate to precipitation (cf Eq. 1 of Jacob et al, 2000).
WD_KcScaleFac is defined as a 3-element vector, where:
This allows us to better simulate scavenging by snow, where, for most species, we need to halve the K rate when 237 K <= T < 258 K. This can be easily done by setting the value KcScaleFac(2) = 0.5. WD_KcScaleFac is applied in routine F_AEROSOL of GEOS_Chem module GeosCore/wetscav_mod.F. |
WD_RainoutEff | REAL(fp) | 1 | Specifies a temperature-dependent scale factor that is used to multiply Fi (aka RAINFRAC), the fraction of species scavenged by rainout (cf Eq. 1 of Jacob et al, 2000).
WD_RainoutEff is defined as a 3-element vector, where:
This allows us to better simulate scavenging by snow and impaction scavenging of BC. For most species, we need to be able to turn off rainout when 237 K <= T < 258 K. This can be easily done by setting RainoutEff(2) = 0. WD_RainoutEff is applied in routine APPLY_RAINOUT_EFF of GEOS_Chem module GeosCore/wetscav_mod.F. NOTE: For secondary organic aerosol species, the maximum value of WD_RainoutEff will be 0.8 instead of 1.0. |
--Bob Y. (talk) 19:14, 9 October 2015 (UTC)
Microphysics parameters
Quantity | Type | Units | Description |
---|---|---|---|
MP_SizeResAer | LOGICAL | 1 | Set this flag to TRUE to indicate that the species is a size-resolved aerosol species (used in microphysics simulations). |
MP_SizeResAer | LOGICAL | 1 | Set this flag to TRUE to indicate that the species is a size-resolved aerosol number (used in microphysics simulations). |
--Bob Y. (talk) 20:44, 9 October 2015 (UTC)
Tagged Hg index variables
Quantity | Type | Units | Description |
---|---|---|---|
Is_Hg0 | LOGICAL | 1 | Set this flag to TRUE to denote a total Hg0 regional tagged Hg0 species. |
Is_Hg2 | LOGICAL | 1 | Set this flag to TRUE to denote a total Hg2 regional tagged Hg2 species. |
Is_HgP | LOGICAL | 1 | Set this flag to TRUE to denote a total HgP regional tagged HgP species. |
Hg_Cat | LOGICAL | 1 | Indicates the tagged Hg category number (1..State_Chm%N_Hg_CATS) |
Is_Hg0 | LOGICAL | 1 | Set this flag to TRUE to denote a total Hg0 regional tagged Hg0 species. |
--Bob Yantosca (talk) 16:05, 6 May 2016 (UTC)
Creating the GEOS-Chem species database object
The GEOS-Chem species database object is actually a vector, whose length is the same as the number of GEOS-Chem species that are defined for a given simulation. Each element of the vector is an object of type Species. The following sections describe how we create the GEOS-Chem species database object:
The SPCPTR derived type
The SpecPtr derived type (located in GEOS-Chem module Headers/species_mod.F90) lets you to create a pointer variable of type Species.
TYPE, PUBLIC :: SpcPtr TYPE(Species), POINTER :: Info ! Species type END TYPE SpcPtr
The GEOS-Chem species database object
We use the SpcPtr to create the GEOS-Chem species database as a sub-object of the State_Chm "Chemistry State" object. The State_Chm object is built according to the ChmState derived-type object:
!=========================================================================
! Derived type for Chemistry State
!=========================================================================
TYPE, PUBLIC :: ChmState
! Number of species
INTEGER :: nSpecies ! # of species
INTEGER :: nAdvect ! # of advected species
INTEGER :: nDrydep ! # of drydep species
INTEGER :: nWetDep ! # of wetdep species
! Physical properties about tracers & species
TYPE(SpcPtr), POINTER :: SpcData(:) ! Species database
... etc ...
END TYPE ChmState
Therefore, the GEOS-Chem species database is referred to as State_Chm%SpcData.
Routine Init_Species_Database in GEOS-Chem module Headers/species_database_mod.F90 allocates the State_Chm%SpcData object and populates it with the relevant physical parameters for each GEOS-Chem species.
Obtaining information from the species database
To get the physical properties for a given species from the species database, you can use code such as:
DO N = 1, State_Chm%nSpecies ! Get Henry's law parameters K0 = State_Chm%SpcData(N)%Info%Henry_K0 CR = State_Chm%SpcData(N)%Info%Henry_CR pKA = State_Chm%SpcData(N)%Info%Henry_pKa ENDDO
Routine Init_Species_Database will also save the number of GEOS-Chem species as the variable State_Chm%nSpecies. So you can use that as the upper bound of DO loops.
To simplify the coding, you can create an object of type Species to point to each entry in the species database. For example this code
USE Species_Mod, ONLY : Species TYPE(Species), POINTER :: ThisSpc DO N = 1, State_Chm%nSpecies ThisSpc => State_Chm%SpcData(N)%Info ! Get Henry's law parameters K0 = ThisSpc%Henry_K0 CR = ThisSpc%Henry_CR pKA = ThisSpc%Henry_pKa ThisSpc => NULL() ENDDO
is much less wordy and easier to read.
--Bob Yantosca (talk) 18:42, 15 June 2016 (UTC)
Defining molecular weight fields of the Input_Opt object from the species database
This update was validated with the 1-month benchmark simulation v11-01e (approved 04 Jan 2016).
In GEOS-Chem v11-01d and prior versions, molecular weights for each emitted species (shown in RED) were specified in the input.geos file:
%%% TRACER MENU %%% : Type of simulation : 3 Number of Tracers : 119 Tracer Entries -------> : TR# Name g/mole Tracer Members; () = emitted Tracer #1 : 1 NO 30.0 (NO) Tracer #2 : 2 O3 48.0 (O3) Tracer #3 : 3 PAN 121.0 Tracer #4 : 4 CO 28.0 (CO)
These molecular weights were then saved into the Input Options object field Input_Opt%TRACER_MW_G. They also initialized the related quantities Input_Opt%TRACER_MW_KG, Input_Opt%TCVV, and Input_Opt%XNUMOL.
Historically, other GEOS-Chem modules (especially dry deposition) had defined molecular weights as internal module variables. For some species, these locally-defined molecular weights conflicted with the molecular weights stored in the Input_Opt object. Some of these inconsistencies went undetected for several years.
To avoid further discrepancies like this, we modified GEOS-Chem v11-01e to pass molecular weight values from the species database to the relevant fields of Input_Opt. This ensures that a single molecular weight for each species will be used everywhere throughout GEOS-Chem.
The following code was added to routine INIT_GIGC_STATE_CHM (in module GeosCore/gigc_state_chm_mod.F90). Code lines in GREEN show where the emitted molecular weight for each species is passed from the species dataabase to the Input_Opt object.
!=======================================================================
! Now use the molecular weights from the species database and overwrite
! the molecular weight-related fields of the Input_Opt object. Also
! echo to screen the TRACER MENU quantities that used to be printed
! in routine READ_INPUT_FILE (in GeosCore/input_mod.F).
!=======================================================================
IF ( am_I_Root ) THEN
WRITE( 6,'(/,a)' ) 'TRACER MENU (==> denotes SMVGEAR emitted species)'
WRITE( 6,'( a)' ) REPEAT( '-', 48 )
WRITE( 6,'( a)' ) ' # Tracer g/mole'
ENDIF
! Loop over the number of tracers
DO N = 1, Input_Opt%N_TRACERS
! Get emitted molecular weight from the species database
EmMW_g = State_Chm%SpcData(N)%Info%EmMW_g
! Now use MW from the species database instead of from the
! input.geos file. This eliminates discrepancies. (bmy, 12/16/15)
Input_Opt%TRACER_MW_g(N) = EmMW_g
Input_Opt%TRACER_MW_kg(N) = EmMW_g * 1e-3_fp
! Ratio of MW dry air / MW tracer
Input_Opt%TCVV(N) = 28.97e+0_fp / Input_Opt%TRACER_MW_G(N)
! Molecules tracer / kg tracer
Input_Opt%XNUMOL(N) = 6.022e+23_fp / Input_Opt%TRACER_MW_KG(N)
! Print to screen
IF ( am_I_Root ) THEN
! Write tracer number, name, & mol wt
WRITE( 6, 100 ) Input_Opt%ID_TRACER(N), &
Input_Opt%TRACER_NAME(N), &
Input_Opt%TRACER_MW_G(N)
! If a family tracer (or just a tracer w/ emission)
! then also print info about species
IF ( Input_Opt%TRACER_N_CONST(N) > 1 .or. &
Input_Opt%ID_EMITTED(N) > 0 ) THEN
! Loop over member species
DO C = 1, Input_Opt%TRACER_N_CONST(N)
! Also flag which is the emitted tracer
IF ( Input_Opt%ID_EMITTED(N) == C ) THEN
WRITE( 6,110 ) Input_Opt%TRACER_COEFF(N,C), &
Input_Opt%TRACER_CONST(N,C)
ELSE
WRITE( 6,120 ) Input_Opt%TRACER_COEFF(N,C), &
Input_Opt%TRACER_CONST(N,C)
ENDIF
ENDDO
ENDIF
ENDIF
ENDDO
--Bob Yantosca (talk) 21:44, 16 December 2015 (UTC)
Adding new species to the GEOS-Chem species database
You can define physical properties for GEOS-Chem species in routine Init_Species_Database (located in module Headers/species_database_mod.F90). Near the top of the routine you will see a loop over the number of species and a SELECT CASE statement, highlighted in RED below.
!
! !DEFINED PARAMETERS
!
LOGICAL, PARAMETER :: T = .TRUE. ! Yes
LOGICAL, PARAMETER :: F = .FALSE. ! No
. . .
!=======================================================================
! Init_Species_Database begins here!
!=======================================================================
. . .
! Number of species
nSpecies = Input_Opt%N_TRACERS
! Initialize the species vector
CALL SpcData_Init( am_I_Root, nSpecies, SpcData, RC )
IF ( RC /= GIGC_SUCCESS ) THEN
PRINT*, '### Could not initialize species vector!'
CALL EXIT( -999 )
ENDIF
! Loop over all species
DO N = 1, nSpecies
! Translate species name to uppercase
NameAllCaps = TRIM( Input_Opt%TRACER_NAME(N) )
CALL TranUc( NameAllCaps )
! Test for species name
SELECT CASE( TRIM ( NameAllCaps ) )
CASE( 'ACET' )
CALL Spc_Create( ... )
CASE( 'ALD2' )
CALL Spc_Create( ... )
... etc ...
In each CASE block, there is a call to the routine Spc_Create (contained in module Headers/species_mod.F90). The Spc_Create routine accepts species physical properties as optional arguments and passes them to the species database object. You can add new species to the database by adding more CASE blocks—with calls to Spc_Create—to the SELECT_CASE statement.
We shall provide a few examples below of how to define GEOS-Chem species with different properties. In our examples, we shall color-code groups of species properties as follows:
- BROWN denotes species names
- RED denotes species molecular weights, densities, and radii
- ORANGE denotes the gas vs. aerosol flag
- BLUE denotes dry deposition settings
- GREEN denotes wet deposition settings
- PURPLE denotes Henry's law constants
To simplify the coding, in all the examples below, we use the parameters T and F instead of having to type out the logical values .TRUE. and .FALSE.. A complete list of species physical properties may be found on our Physical properties of GEOS-Chem species wiki page.
--Bob Y. (talk) 19:44, 9 October 2015 (UTC)
Example 1: Add a species that is only advected
Several GEOS-Chem species are advected (i.e. they undergo transport, convection and PBL mixing) but do not dry-deposit or wet-deposit. Species of this type include the stratospherically-important bromine and chlorine species from the UCX chemistry mechanism.
To add a species of this type (such as carbon tetrachloride), call the Spc_Create routine with these settings:
CASE( 'CCL4' ) CALL Spc_Create( am_I_Root = am_I_Root, & ThisSpc = SpcData(N)%Info, & ModelID = N, & Name = 'CCl4', & FullName = 'Carbon tetrachloride', & MW_g = 152.0_fp, & Is_Advected = T, & Is_Gas = T, & Is_Drydep = F, & Is_Wetdep = F, & RC = RC )
NOTES:
- The name of the species in the CASE block should be in ALL CAPITALS. This makes the name search easier.
- You can redefine the species name by passing a MIXED CASE string via the Name argument. This will preserve element names such as Br, Cl, etc.
- Example: CASE( 'CCL4' ) but Name = 'CCl4'
- Most species parameters use the GEOS-Chem flexible precision (i.e. REAL(fp).)
- Adding _fp to the end of a number signifies it is a constant of type REAL(fp).
- You don't have to specify all of the possible settings.
- Settings that are omitted will be assigned a "missing data" value (-999 for numeric values, or .FALSE. for logical values), unless specified otherwise.
- If you omit EmMW_g (emitted molecular weight), it will be assigned the same value as MW_g (actual molecular weight).
- If you omit MolecRatio (carbon atoms per species), it will be assigned a default value of 1.0.
- Routine Spc_Create will automatically update the ModelID and AdvectID ID's for you.
--Bob Y. (talk) 14:39, 14 October 2015 (UTC)
Example 2: Add a gas-phase species that is advected, dry-deposited, and wet-deposited
Hydrogen peroxide is an example of a GEOS-Chem species that is advected, dry-deposited, and wet-deposited. It is defined with the following settings:
CASE( 'H2O2' ) CALL Spc_Create( am_I_Root = am_I_Root, & ThisSpc = SpcData(N)%Info, & ModelID = N, & Name = NameAllCaps, & FullName = 'Hydrogen peroxide', & MW_g = 34.0_fp, & Is_Advected = T, & Is_Gas = T, & Is_Drydep = T, & Is_Wetdep = T, & DD_F0 = 1.0_fp, & DD_Hstar_old = 1e+5_fp, & Henry_K0 = 8.30e+4_f8, & Henry_CR = 7400.0_f8, & WD_RetFactor = 5e-2_fp, & WD_LiqAndGas = T, & WD_ConvFacI2G = 4.36564e-1_fp, & RC = RC )
NOTES:
- Because H2O2 is not a hydrocarbon that is carried as equivalent carbons, we only have to specify the MW_g (actual molecular weight) setting.
- The related properties EmMW_g and MolecRatio will be updated accordingly.
- H2O2 is an example of a species that had been using a different Henry's law K0 value for dry deposition than for wet deposition.
- DD_Hstar_old sets the Henry's law K0 used for dry deposition
- Henry_K0 sets the Henry's law K0 used in wet deposition
- Eventually we will use the same K0 everywhere, but for now we need to retain the prior behavior of the code.
- H2O2 is also a species for which the ice to gas ratio is computed by co-condensation in the wet deposition module
- WD_LiqAndGas is TRUE for H2O2.
- WD_ConvFacI2G specifies the conversion factor (the ratio of sticking coefficients on the ice surface) as described in Eq. 9 of Jacob et al 2000.
- For most other species, you can omit WD_LiqAndGas and WD_LiqAndGas, as the ice-to-gas ratio for most species is zero.
- The Henry's law parameters are defined as 8-byte floating point variables (REAL(f8)).
- This provides better numerical stability, as several of the Henry's law computations involve exponentials.
- Adding _f8 to the end of a number signifies it is a constant of type REAL(f8).
- All other settings that are omitted will be assigned a "missing data" value (-999 for numeric values, or .FALSE. for logical values),
- Routine Init_Species_Database will automatically update the ModelID, AdvectID, DryDepID, and WetDepID for you.
--Bob Y. (talk) 14:41, 14 October 2015 (UTC)
Example 3: Add an aerosol species that is advected, dry-deposited, and wet-deposited
NIT (inorganic nitrates) is part of the sulfate aerosol module in GEOS_Chem. It can serve as an example of how to define an aerosol species that is transported, dry-deposits, and wet-deposits.
... these arrays are defined at the top of the Init_Species_Database routine ... ! Arrays REAL(fp) :: DvzMinVal(2) REAL(fp) :: KcScale(3) REAL(fp) :: RainEff(3) ... and this is the case statement for NIT ... CASE( 'NIT' ) ! Halve the Kc (cloud condensate -> precip) rate ! for the temperature range 237 K <= T < 258 K. KcScale = (/ 1.0_fp, 0.5_fp, 1.0_fp /) ! Turn off rainout only when 237 K <= T < 258K. RainEff = (/ 1.0_fp, 0.0_fp, 1.0_fp /) ! Enforce minimum dry deposition velocity (Vd) for NIT ! (cf. Mian Chin's GOCART model) ! Minimum Vd over snow/ice : 0.01 cm/s ! Minimum Vd over land : 0.01 cm/s DvzMinVal = (/ 0.01_fp, 0.01_fp /) CALL Spc_Create( am_I_Root = am_I_Root, & ThisSpc = SpcData(N)%Info, & ModelID = N, & Name = NameAllCaps, & FullName = 'Inorganic nitrates', & MW_g = 62.0_fp, & Is_Advected = T, & Is_Gas = F, & Is_Drydep = T, & Is_Wetdep = T, & DD_DvzAerSnow = 0.03_fp, & DD_DvzMinVal = DvzMinVal, & DD_F0 = 0.0_fp, & DD_Hstar_Old = 0.0_fp, & WD_AerScavEff = 1.0_fp, & WD_KcScaleFac = KcScale, & WD_RainoutEff = RainEff, & RC = RC )
NOTES:
- We denote that this species is an aerosol with Is_Gas = F.
- Drydep parameters DD_F0 and DD_Hstar_Old only apply to gas-phase species, so we can set them to zero.
- This will ensure that the dry deposition module will not get "missing data" values (-999 for these parameters.
- On ice and snow surfaces, we manually set the dry deposition velocity of NIT to 0.03 cm/s. This is specified with the DD_DvzAerSnow setting.
- Following the methodology of the GOCART model, we use the DD_DvzMinVal vector to specify a minimum dry deposition velocity over snow/ice vs. land.
- The WD_KcScaleFac vector allows us to halve the rate of conversion of cloud condensate to precipitation in the temperature range 237 <= T < 258 K.
- This algorithm (cf. Qiaoqiao Wang) better simulates scavenging of aerosol species in ice/snow.
- The WD_RainoutEff vector allows us to turn off rainout in the temperature range 237 <= T < 258 K.
- This algorithm (cf. Qiaoqiao Wang) better simulates scavenging of aerosol species in ice/snow.
- For some species (e.g. mineral dust and sea salt aerosols) you also need to specify the Radius and Density settings.
--Bob Yantosca (talk) 17:13, 4 February 2016 (UTC)
Example 4: Add a hydrocarbon species carried as equivalent carbon atoms
Several GEOS-Chem hydrocarbon species (e.g. acetone, isoprene, etc.) are emitted and transported as equivalent carbon atoms instead of a single molecule. These are defined as follows:
CASE( 'ACET' ) CALL Spc_Create( am_I_Root = am_I_Root, & ThisSpc = SpcData(N)%Info, & ModelID = N, & Name = NameAllCaps, & FullName = 'Acetone', & MW_g = 58.08_fp, & EmMW_g = 12.00_fp, & MolecRatio = 3.0_fp, & Is_Advected = T, & Is_Gas = T, & Is_Drydep = T, & Is_Wetdep = F, & DD_F0 = 1.0_fp, & DD_Hstar_Old = 1e5_fp, & Henry_K0 = 2.7e+1_f8, & Henry_CR = 5300.0_f8, & RC = RC )
NOTES:
- Acetone is emitted and transported as an equivalent number of carbon atoms. Therefore, we need to set these values explicitly:
- Set the actual molecular weight (MW_g) to 58.08
- Set the emitted molecular weight (EmMW_g) to 12.0
- Set the number of carbons per species (MolecRatio) to 3.0
- Although acetone does not wet deposit, we still specify its Henry's law constants for the HEMCO sea-air exchange module.
- All other settings that are omitted will be assigned a "missing data" value (-999 for numeric values, or .FALSE. for logical values),
- Routine Spc_Create will automatically update the ModelID, AdvectID, and DryDepID for you.
--Bob Yantosca (talk) 17:14, 4 February 2016 (UTC)
Example 5: Adding several species with similar properties at the same time
Several GEOS-Chem species have similar properties. For example, the DST{1,2,3,4}, DSTAL{1,2,3,4}, NITD{1,2,3,4}, and SO4D{1,2,3,4} tracers are all mineral dust tracers with the same molecular weights, radii, density, drydep properties, and wetdep properties. Therefore, we can group them together so that a single call to Spc_Create will define all of these tracers:
CASE( 'DST2', 'DSTAL2', 'NITD2', 'SO4D2' ) ! These have identical properties except for the names SELECT CASE( NameAllCaps ) CASE( 'DST2' ) FullName = 'Dust aerosol, Reff = 1.4 microns' CASE( 'DSTAL2' ) FullName = 'Dust alkalinity, Reff = 1.4 microns' CASE( 'NITD2' ) FullName = 'Nitrate on dust, Reff = 1.4 microns' CASE( 'SO4D2' ) FullName = 'Sulfate on dust, Reff = 1.4 microns' END SELECT ! Do not reduce the Kc (cloud condensate -> precip) rate KcScale = (/ 1.0_fp, 1.0_fp, 1.0_fp /) ! Allow rainout of dust when T < 258K, becasue dust ! is considered to be IN. RainEff = (/ 1.0_fp, 1.0_fp, 1.0_fp /) CALL Spc_Create( am_I_Root = am_I_Root, & ThisSpc = SpcData(N)%Info, & ModelID = N, & Name = NameAllCaps, & FullName = FullName, & MW_g = 29.0_fp, & Is_Advected = T, & Is_Gas = F, & Is_Drydep = T, & Is_Wetdep = T, & Density = 2650.0_fp, & Radius = 1.4e-6_fp, & DD_DustDryDep = T, & DD_F0 = 0.0_fp, & DD_Hstar_Old = 0.0_fp, & WD_AerScavEff = 1.0_fp, & WD_CoarseAer = T, & WD_KcScaleFac = KcScale, & WD_RainoutEff = RainEff, & RC = RC )
NOTES:
- The second SELECT CASE statement is used to assign a unique FullName to each of these tracers. Otherwise, the species all share the same properties.
- The flag WD_CoarseAer is used to denote species having a radius >= 1μm. This is needed in subroutine WASHOUT in (GeosCore/wetscav_mod.F), where coarse aerosol washout is handled differently than fine aerosol washout.
- The DD_DustDryDep denotes that these are mineral dust species, for which dry deposition is handled by routine DUST_SFRSCII in drydep_mod.F. This routine ignores hygroscopic growth.
- The similar flag DD_AeroDryDep denotes sea salt species, for which dry deposition is handled by routine AERO_SFRSCII in drydep_mod.F. This routine will account for hygroscopic growth.