Skip to content

Add multiphase sulfate in aerosol water, following Travis et al 2025#3202

Open
yantosca wants to merge 12 commits intodev/14.8.0from
feature/multiphase-sulfate
Open

Add multiphase sulfate in aerosol water, following Travis et al 2025#3202
yantosca wants to merge 12 commits intodev/14.8.0from
feature/multiphase-sulfate

Conversation

@yantosca
Copy link
Contributor

Name and Institution (Required)

Name: Bob Yantosca (Harvard) on behalf of Katherine Travis (NASA LaRC)

Describe the update

NOTE: This PR supersedes #2966. We have rebased @ktravis213's code atop GEOS-Chem 14.7.0, and have made additional minor fixes.

This pull request is associated with the reference below. It implements multiphase (heterogeneous) sulfate chemistry in KPP. This includes SO2 oxidation by NO2, O3, H2O2, TMI-catalyzed O2, and HCHO. All oxidants but NO2 have a dependence on ionic strength calculated in HETP. Diagnostics are included for the uptake coefficient gamma in StateChm and production of sulfate from each new pathway. There is a separate pull request for the addition of the ionic strength diagnostic in HETP.

Expected changes

Please provide details on how this update will impact model output and include plots or tables as needed.
Expected changes are increased sulfate and HMS and reduced SO2. The plot below shows the global increase in sulfate from a 2x25 run for January 2016.
JanuaryPSO4

Reference(s)

  • Year-Round Analysis of Multiphase Sulfate Production in Aerosol Particles in East Asia, Katherine R. Travis. Benjamin A. Nault, James H. Crawford, Hwajin Kim, Qi Chen, Yan Zheng, Tengyu Liu, Jose L. Jimenez, Pedro Campuzano-Jost, Paul O. Wennberg, John D. Crounse, L. Gregory Huey, ACS ES&T Air, submitted, 2025, DOI: 10.1021/acsestair.5c00136

Related Github Issue

Tagging @ktravis213

Katherine R. Travis and others added 4 commits February 11, 2026 11:33
…/10.1021/acsetair.5c00136. Includes SO2 oxidation in aerosol water by H2O2, O3, NO2, HCHO, and TMI-catalzyed O2. Addition of cloud HPLUS diagnostic since cloud pH diagnostic appears broken.

Signed-off-by: Katherine R. Travis <ktravis1@discover35.prv.cube>
…/10.1021/acsetair.5c00136. Includes SO2 oxidation in aerosol water by H2O2, O3, NO2, HCHO, and TMI-catalzyed O2. Addition of cloud HPLUS diagnostic since cloud pH diagnostic appears broken.

Signed-off-by: Katherine R. Travis <ktravis1@discover35.prv.cube>
…/10.1021/acsetair.5c00136. Includes SO2 oxidation in aerosol water by H2O2, O3, NO2, HCHO, and TMI-catalzyed O2. Addition of cloud HPLUS diagnostic since cloud pH diagnostic appears broken.

Signed-off-by: Katherine R. Travis <ktravis1@discover35.prv.cube>
--> Change 'uptake probability' to 'sticking coefficient' for consistency
--> Consolidate production trackers from 13 to 3 (PSO4MP for multiphase sulfate, and PHMSAQ and PHMSMP for HMS aqueous and multiphase production)
--> Improved computational efficiency by removing ELSE blocks.
--> Added _dp to constants
--> Add Ionic strength diagnostic to GCHP HISTORY template

Signed-off-by: Katherine R. Travis <ktravis1@discover36.prv.cube>
@yantosca yantosca self-assigned this Feb 11, 2026
@yantosca yantosca added category: Feature Request New feature or request topic: Chemical Mechanisms Related to KPP and/or GEOS-Chem chemistry mechanisms topic: Aerosols Related to aerosol species and/or microphysics in GEOS-Chem labels Feb 11, 2026
@yantosca yantosca added this to the 14.8.0 milestone Feb 11, 2026
GeosCore/aerosol_mod.F90
GeosCore/planeflight_mod.F90
Headers/state_chm_mod.F90
KPP/fullchem/fullchem_HetStateFuncs.F90
- Renamed State_Chm%Isorrop* fields to State_Chm%Ate*, where "Ate"
  stands for "aerosol thermoydnamical equilibrium".  ISORROPIA is no
  longer used so this should avoid confusion.

run/GCClassic/HISTORY.rc.templates/HISTORY.rc.aerosol
run/GCClassic/HISTORY.rc.templates/HISTORY.rc.fullchem
run/GCHP/HISTORY.rc.templates/HISTORY.rc.fullchem
- Rename diagnostic fields from "Isorrop*" to "Ate*"

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
KPP/fullchem/gckpp*F90
- Rebuilt with KPP 3.3.0

KPP/fullchem/CHANGELOG_fullchem.md
- Changed "[ TBD ]" to the standard "[Unreleased] - TBD"

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
@yantosca yantosca force-pushed the feature/multiphase-sulfate branch from ec3a196 to 9241f03 Compare February 11, 2026 18:36
@yantosca
Copy link
Contributor Author

yantosca commented Feb 11, 2026

Hi @ktravis213 and @1Dandan. I noticed that KPP/fullchem/fullchem_HetStateFuncs.F90 for the multiphase sulfate update now contains this line of code:

    DUST = ( Spc(id_DST1)%Conc(I,J,L)*0.7_dp + Spc(id_DST2)%Conc(I,J,L) + &
         Spc(id_DST3)%Conc(I,J,L) + Spc(id_DST4)%Conc(I,J,L) )            &
         * 1.e+15_dp * State_Chm%SpcData(id_DST1)%Info%MW_g / AVO

This will currently not compile in GEOS-Chem 14.7.0 and later, because we have removed DST1 .. DST4 and added DSTbin1 .. DSTbin7.

The sum of DSTbin1 .. DSTbin4 is pretty much the same as the old DST1 species. So I think we'd have to modify this statement as:

    DUST = (                                                                &
             ( Spc(id_DSTbin1)%Conc(I,J,L) +                                &
               Spc(id_DSTbin2)%Conc(I,J,L) +                                &
               Spc(id_DSTbin3)%Conc(I,J,L) +                                &
               Spc(id_DSTbin4)%Conc(I,J,L) +                                &
             ) * 0.7_dp                    +                                &
             Spc(id_DSTbin5)%Conc(I,J,L)   +                                &
             Spc(id_DSTbin6)%Conc(I,J,L)   +                                &
             Spc(id_DSTbin7)%Conc(I,J,L)                                    &
           )                                                                &
         * 1.e+15_dp                                                        &
         * State_Chm%SpcData(id_DSTbin1)%Info%MW_g                          &
         / AVO

Do you see any issues with this?

@ktravis213: I also wanted to ask where the 0.7 factor comes from. Thanks!

KPP/fullchem/fullchem_HetStateFuncs.F90
- Removed id_DST{1..4} variables
- Added id_DSTbin{1..7} variables
- Updated the equation for DUST to use DSTbin{1..7} species, which
  were added in GEOS-Chem 14.7.0.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
@ktravis213
Copy link

@yantosca I am looking back at the code, and I grabbed the calculation of dust from fullchem_SulfurChemFuncs.F90. The 0.7 is the cloud scavenging ratio of 0.7 for fine aerosols. Now that you are asking, I am not sure I should have done this at all for aerosol water. I am glad you asked about this, I think it was an error to include it. I doubt this will have a major impact on the results of the scheme.

@yantosca
Copy link
Contributor Author

Thanks @ktravis213. Should we take out the references to DUST in fullchem_HetStateFuncs.F90 then?

@ktravis213
Copy link

We just need to remove the 0.7. We still need to calculate total dust, just without that scavenging factor.

KPP/fullchem/fullchem_SulfurChemFuncs.F90
- We have removed the scavenging factor of 0.7 from the expression for
  the DUST variable in routine SET_SO2, based on a suggestion by
  Katie Travis (@ktravis213).
- Cosmetic changes (indentation, etc.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
@yantosca
Copy link
Contributor Author

@ktravis213: I removed the 0.7 scale factor in commit 4c6ea01. Thanks again! Will begin testing this shortly.

@yantosca yantosca requested a review from msulprizio February 27, 2026 19:59
yantosca added 3 commits March 2, 2026 15:12
KPP/custom/custom.eqn
KPP/fullchem/fullchem.eqn
- Updated the version number to 14.8.0
- Added citation Travis et al 2025 to HMS + OH + SO2 rxn

CHANGELOG.md
- Removed leftover line from merge conflict

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
run/shared/species_database.yml
- Removed several leftover dummy species

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
KPP/fullchem/fullchem_HetStateFuncs.F90
- Removed extraneous comma at end of line after id_DSTbin3
- Removed the 0.7 wet scavenging factor as per @ktravis213
@yantosca
Copy link
Contributor Author

yantosca commented Mar 2, 2026

@ktravis213: Should this be the proper entry for the PSO4MP species in the species database?

PSO4MP:
  FullName: Dummy species to track production of multiphase sulfate
  Is_Gas: true
  MW_g: 96.06
  KPP_AbsTol: 1.0e+25

Should we set the KPP_AbsTol to a very high value to ignore this as a dummy species? Or is this needed to close the mass balance?

KPP/custom/custom.eqn
KPP/fullchem/fullchem.eqn
- Added comments denoting additional multiphase sulfate rxns
  as coming from the Travis2025 paper

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
@yantosca yantosca marked this pull request as ready for review March 2, 2026 22:03
@yantosca yantosca requested a review from msulprizio March 2, 2026 22:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

category: Feature Request New feature or request topic: Aerosols Related to aerosol species and/or microphysics in GEOS-Chem topic: Chemical Mechanisms Related to KPP and/or GEOS-Chem chemistry mechanisms

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants