Skip to content

Add GCHP ctmEnv-only simulation option - #477

Open
lizziel wants to merge 33 commits into
mainfrom
feature/gchp_ctmenv_only_simulation
Open

lizziel wants to merge 33 commits into
mainfrom
feature/gchp_ctmenv_only_simulation

Conversation

@lizziel

@lizziel lizziel commented Feb 21, 2025 •

Copy link
Copy Markdown
Contributor

Name and Institution (Required)

Name: Lizzie Lundgren
Institution: Harvard University

Describe the update

This update introduces a compile-time option for a GCHP-like simulation that does not run GEOS-Chem or advection. Only ExtData, History, and the ctmEnv gridded component are run, although both GEOS-Chem and FV3 are compiled.

The purpose of this is to facilitate testing using MAPL in a way that is lightweight and fast. It is currently being used to test early implementations of MAPL3. It could be extended in the future to a dynamics-only simulation using a simple tracer, although that should happen after the move to MAPL3.

Notes and instructions:

  • The ctmEnv-only simulation option is enabled by building with -DMODEL_CTMENV=y. All of GCHP is compiled with the exception of code within #ifndef MODEL_CTMENV blocks.
  • Choose the ctmEnv-only simulation during run directory creation.
  • If using an existing run script, comment out setRestartLink.sh and checkRunSettings.sh. The former will fail since no restart file is used so none found. The latter is not copied to the run directory. The runScriptSamples/operational_examples/harvard_cannon directory has an example run script called gchp.ctmenv.run.
  • No restart file is used for the simulation, making it extremely lightweight and fast when run at high resolutions.
  • Dynamics is added as a child gridded component but is not run. This is to avoid complications due to dependencies.
  • GEOS-Chem is compiled but is not added as a child gridded component. It is needed for run directory creation, although does not require compiling. Future work could remove compiling it. It is kept to minimize differences in CMake files between the ctmEnv-only and standard GCHP simulations.

This update will require concurrent merge of two subdirectory PRs:

Expected changes

This is a no diff update.

Reference(s)

None

Related Github Issue

None

@lizziel lizziel added category: Feature Request New feature or request topic: Run Directories Related to GCHP run directories labels Feb 21, 2025
@lizziel lizziel self-assigned this Feb 21, 2025
@lizziel

lizziel commented Feb 21, 2025

Copy link
Copy Markdown
Contributor Author

fyi @sdeastham

@lizziel lizziel added no-diff-to-benchmark This update will not change the results of fullchem benchmark simulations topic: Runtime Related to runtime issues (e.g. simulation stops with error) labels Feb 21, 2025
@lizziel
lizziel force-pushed the feature/gchp_ctmenv_only_simulation branch from 57865f1 to 018a15c Compare July 17, 2025 15:13
@lizziel
lizziel force-pushed the feature/gchp_ctmenv_only_simulation branch from 018a15c to be068fe Compare October 29, 2025 18:38
@lizziel

lizziel commented Oct 29, 2025

Copy link
Copy Markdown
Contributor Author

Using this implementation for 12 km winds is on hold, but I am currently experimenting with it for testing MAPL3. We may or may not bring the changes in this PR into the standard model in the future.

@lizziel
lizziel force-pushed the feature/gchp_ctmenv_only_simulation branch from 711f2d3 to 7fd8b2e Compare November 3, 2025 21:46
@lizziel

lizziel commented Nov 4, 2025 •

Copy link
Copy Markdown
Contributor Author

This update is now rebased on dev/14.7.0. Since it is very useful for testing I would like to bring it into the standard model, possibly in 14.7.1.

@yantosca
yantosca force-pushed the main branch 6 times, most recently from 82d6639 to 3216f28 Compare February 8, 2026 02:05
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

PR #3072 does the following:

- Adds PSO4AQ as a product to the SO2 + H2O2 rxn
- Adds PSO4AQ as a product to the SO2 + O3 rxn
- Adds PSO4AQ as a product to the SO2 {+O2} rxn
- Adds PH2SO4 as a product to the HOCl + SO2 rxn
- Adds PH2SO4 as a product to the HOBr + SO2 rxn

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
.github/workflows/cloud-benchmarking-workflow.yml
- Added "fetch-tags: true" to make sure that the GitHub action pulls
  the most recent tag

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

5fbf17c89 Merge PR #3132 (Add methanediol chemistry into fullchem mechanism)

In PR #3132 we have done the following:

1. Implemented methanediol chemistry as per Laura Yang et al, GRL, 2025.
2. Rebuilt the fullchem mechanism with KPP 3.3.0.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings updates from GCHP 14.7.1 (the "main" branch)
into the dev/14.8.0 branch.

Includes
- Documentation updates
- GitHub Actions updates to latest versions
- geos-chem-shared-docs update to 8303ab0 (Fixed typos in geos-chem.bib)
- FVdycoreCubed_GridComp update to 348620f (Merge PR #11)
- geos-chem update to 6b60420dc (Merge updates from GEOS-Chem 14.7.1)
- HEMCO update to 6b60420dc (HEMCO 3.12.1 release)
- Cloud-J update 16d18b0 (Merge PR #34)
- MAPL update to 80d66d0 (Merge PR #41)

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCClassic superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

669cb4126 Merge PR #3202 (Add multiphase sulfate, cf Travis et al 2025)

PR #3202 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.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

669cb4126 Merge PR #3202 (Add multiphase sulfate, cf Travis et al 2025)

PR #3202 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.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

7d03dade7 Merge PR #3273 (Miscellaneous netCDF (standard) input bug fixes)

PR #3273 adds the following fixes:

1. In routine NC_READ_TIME: Replaced incorrect variable name "v_name"
   with "timeCalendar" in the SELECT CASE statement

2. In routine NC_GET_GRID_EDGES_C: Replaced hardwired "lon_edges" in calls
   to NC_READ_VAR with "TRIM(NcVar)"

3. In routine NC_GET_SIGMA_LEVELS_C: Removed unused "stdname" local variable

These updates are confirmed to be no-diff-to-benchmark.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

a86775e41 Merge PR #3128 (Changed DMS species db entry to "Is_Gas: true")

PR #3128 fixes an issue in the "run/shared/species_database.yml" file
where DMS was wrongly listed as an aerosol instead of a gas-phase
species.  This has been confirmed as a "no-diff-to-benchmark" update.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/HEMCO repository:

09a2442 Merge PR #361 (Regrid_A2A fix in MPI environments: uninitialized accumulator)

PR #361 zeros "qsum" and "dlat" variables (in regrid_a2a_mod's "ymap_*")
subroutines) at the beginning of individual iterations and when the southmost
source cell (where the search starts) is missing.  This now will match the
behavior of the "xmap_*" routines.

It should be noted that it does change model answers very very slightly,
since the buggy version inherits junk data left behind from the previous
iteration if the current iteration does not match a southmost source cell
fraction.

NOTE: This will be a zero-diff update for GCHP, which uses MAPL ExtData
to regrid data to the simulation grid.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

264f8159b Merge PR #3287 (Update SpeciesConc{VV,MND} on chem timestep only)

PR #3287 fixes the issue identified by @ltmurray of NO surface
concentrations oscillating in time in diagnostics output the same
frequency as the dynamic timestep. That issue was identified in #3117.
The fix is update species concentration diagnostics only during chemistry
timesteps. This allows all components to execute, including photolysis
for short-lived species such as NO, prior to archiving values.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/HEMCO repository:

e66aa29 Merge PR #359 (Fix logic errors causing time cycling issues)

PR #359 fixes a couple of logic errors in routine SrcFile_Parse
that caused incorrect time cycling behavior, as described in
geoschem/HEMCO#358.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

20b95bc6b Merge PR #3262 (Fixed incorrect A coeff in C3H8 + OH = A3O2 rxn)

PR #3262 is the companion PR to issue #3259, in which @jcoley11 pointed
out that the Arrhenius "A" parameter for the C3H8 + OH = A3O2 reaction
is incorrect. The A parameter as written is 1.97d-12 but should be
1.97d-11, in order to match the JPL 19-5 chemical kinetics publication.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
yantosca and others added 17 commits May 7, 2026 15:49
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

PR #3260 replaces referencesto "InvAFCID_DST1" with "InvAFCID_DSTbin1",
"InvAFCID_DSTbin2", "InvAFCID_DSTbin3", "InvAFCID_DSTbin4". Since the
replacement of the DustL23M scheme in GEOS-Chem 14.7.0, AFCID anthropogenic
dust emissions are now placed into the first 4 dust bins (which are roughly
equivalent to the old DST1 bin from the DustDead scheme).  This only affects
benchmark output since the InvAFCID diagnostics are only archived in
fullchem benchmark simulations.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
Updates include:
- Remove unused GCHP and MODEL_GCHPCTM
- Move setting GCHP_WRAPPER and MAPL_ESMF from GCHP_GridComp to
  GEOSChem_GridCompn CMakeLists.txt
- Remove extraneous setting of GC_EXTERNAL_CONFIG
- Set new setting USE_ESMF to true
- Explicitly set EXTERNAL_GRID to true

Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

092f62d9 Merge PR #44 (Update MAPL from 2.59 to 2.69.0)

MAPL PR #44 brings the MAPL version used for GCHP from version
2.59 to 2.69.  This fixes several issues and will be an important
stepping stone on the way to MAPL 3.0.0.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCClassic superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

9ea5acf50 (HEAD -> dev/14.8.0) Merge PR #3277 (MAPL3 compatibility)

PR #3277 is a no diff update to bring in code for use with MAPL3.
MAPL3 is not currently supported in GCHP and is still in development.
All code for use with MAPL3 are in C-preprocessor blocks #ifdef MAPL3.
When using GCHP none of this code will be compiled. Code in the
Interfaces/GEOS directory are not yet updated for MAPL3.

Also in this commit are some minor cleanups of the existing code,
including replacing C-processor switch ifdef ESMF_ with ifdef
MAPL_ESMF, ifdef MODEL_GCHPCTM with ifdef MODEL_GCHP, and
ifdef MODEL_GCHP && MODEL_GEOS with ifdef MAPL_ESMF.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCClassic superproject about the following
commits that were pushed to the GitHub geoschem/HEMCO repository:

5f9e8a3 Merge PR #360 (Build-time option for MAPL3 compatibility)

HEMCO PR #360 is a no diff update to bring in MAPL3-only code.
All MAPL3 code blocks are in C-preprocessor ifdef MAPL3 blocks
and will not be compiled. MAPL3 is still in development.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

2cc2774bc Merge PR #3303 (GCHP run directory improvements)

Updates in PR #3303 include:

1. Added GCHP utility script extractPerformance.sh to scrape
   allPEs.log for timing summary in GCHP run directories

2. Added GCHP build scripts to GCHP runScriptSamples for Harvard

3. Fixed GCHP transport tracers extdata.yaml to include
   valid_range for CEDS

4. Updated comments in extdata.yaml for clarity

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

c53a22035 Merge PR #3309 (Fixed parallelization error in TOMAS)

PR #3309 fixes a parallelization error that was introduced earlier
in PR #3257.  We have also optimized parallel loops in tomas_mod.F90
for better performance.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

dc0a06346 Merge PR #3321 (GCHP runScriptSamples for harvard and aws)

PR #3321 adds and/or updates several files in the GCHP
runScriptSamples folder.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/HEMCO repository:

3d5fc24 Merge PR #363 (HEMCO input using ParallelIO for CESM)

PR #363 implements a HEMCO input module that uses PIO (ParallelIO)
for use in CESM, replacing the existing NcdfUtil module when built
with CESM.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCClassic superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

e87909db Merge PR #45 (ExtData2G, importing GC-Classic output data)

PR #45 adds special handling to ExtData2G to properly import GEOS-Chem
output data. This is needed for GCHP simulations other than transport
tracers.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

375d7fd36 Merge PR #3322 (ExtData2G config for GCHP tagO3)

PR #3322 adds the tagged O3 extdata.yaml file for GCHP when using
optional ExtData2G. It requires updates in geoschem/MAPL#45 to be
merged at the same time.  Updates also include tweaking the comment
styles, collection names, and sampling names in both extdata.yaml
files now available (transport tracers and tagged O3).

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

e3396c3 Merge PR 362: HEMCO extension for 3D GFAS biomass

PR #362 adds a HEMCO extension to address the performance issue
of reading all GFAS species in their full 3D profiles (see details
in geoschem/geos-chem#3288). This PR aims to deal with this issue
by only reading 3D profiles for a reference species (e.g. CO) and
applying this vertical structure to all other species.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This commit informs the GCHP superproject about the following
commits that were pushed to the GitHub geoschem/geos-chem repository:

3b3049801 Merge PR #3317 (Switch on GFAS in rundir config files)

PR #3317 is the companion PR to geoschem/HEMCO#362 by @yuanjianz.
In this PR we have updated the run directory configuration files to
switch the default biomass burning inventory from GFED to GFAS.  The
GFAS emissions are implemented as a HEMCO extension rather than base
emissions, so that only one 3-dimensional field needs to be read in.
This is more computationally efficient.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
@yuanjianz

Copy link
Copy Markdown
Contributor

Is this still being developed? I would like to run some experiments with CTMenv.

@yuanjianz

Copy link
Copy Markdown
Contributor

I tested with the branches in this PR and it seems to work normally.

GEOS-Chem is not added as a gridded component and FV3 advection
is not run. Enable by building with -DMODEL_CTMENV=y. A message
is printed during configure stage if building with MODEL_CTMENV
turned on. Otherwise, no message is printed.

Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
@lizziel
lizziel force-pushed the feature/gchp_ctmenv_only_simulation branch from 7fd8b2e to 998894c Compare July 13, 2026 14:25
@lizziel

lizziel commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

All three repo branches are now rebased on 14.8.0. I am not sure if we will bring this in soon, but I am actively using it for MAPL3 testing so it needs to stay open.

@lizziel

lizziel commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

@yantosca, feel free to use this. We could bring it into 14.8.0 or 14.8.1 if you would like.

@lizziel

lizziel commented Jul 13, 2026

Copy link
Copy Markdown
Contributor Author

Note that when using this you need to manually comment out call out the following lines in whatever run script you use:

source setRestartLink.sh >> ${log}                                                       
source checkRunSettings.sh >> ${log} 

This is because no restart file is used for the env-only run, so no restart file will be found, resulting in an error in the first call. checkRunSetting.sh will also fail because it is not copied to the run directory.

@lizziel
lizziel changed the base branch from main to dev/14.8.0 July 13, 2026 14:59
Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
@lizziel
lizziel marked this pull request as ready for review July 13, 2026 15:29
@lizziel
lizziel requested a review from yantosca July 13, 2026 15:46
@yantosca
yantosca changed the base branch from dev/14.8.0 to main September 10, 2026 14:36
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 no-diff-to-benchmark This update will not change the results of fullchem benchmark simulations topic: Run Directories Related to GCHP run directories topic: Runtime Related to runtime issues (e.g. simulation stops with error)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants