Skip to content

Merge updates from GEOS-Chem 14.7.1 into dev/14.8.0#3274

Merged
yantosca merged 125 commits intodev/14.8.0from
main
Apr 22, 2026
Merged

Merge updates from GEOS-Chem 14.7.1 into dev/14.8.0#3274
yantosca merged 125 commits intodev/14.8.0from
main

Conversation

@yantosca
Copy link
Copy Markdown
Contributor

Name and Institution (Required)

Name: Bob Yantosca
Institution: Harvard + GCST

Describe the update

This PR seeks to merge updates from the "main" branch (corresponding to the GEOS-Chem 14.7.1 release) into the dev/14.8.0 release.

Expected changes

This will be a no-diff-to-benchmark update

Related Github Issue

Daisy0419 and others added 30 commits September 5, 2025 12:49
…ps only work for gchp loadbalace that require MPI_LOAD_BALANCE flag to compile and use
Still used by MPI_LOAD_BALANCE for C_PTR.
Verified the merged main loop works for GCClassic, GCHP, as well as our load balanced GCHP.
GeosCore/gc_environment_mod.F90
- Now also call routine Register_State_Grid from state_grid_mod.F90
- Fixed incorrect error message

GeosUtil/pressure_mod.F90
- Now initialize the ErrMsg variable
- Cosmetic changes (indentation, comments)

Headers/diaglist_mod.F90
- Added ELSEIF block to set the state variable to "GRID" if
  the (case-insensitive) text "grid" is found in the name

Headers/state_grid_mod.F90
- Added USE statements to reference dictionary_t and MetaRegItem objects
- Added Register_State_Grid routine to register State_Grid variables
- Added Lookup_Grid routines to look up a variable in the State_Grid
  registry
- Added History diagnostic coordinate variables to GrdState
- Zero/nullify coordinate variables in routine Init_State_Grid
- Allocate coordinate variables in Allocate_State_Grid
- Cosmetic changes (alphabetization, comments, whitespace, indentation)
- Changed several State_Grid fields from fp to f8 precision

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
History/history_mod.F90
- Added new routine History_InitCoordVars.  This populates the fields
  of State_Grid that are coordinate variables for History netCDF files.
- Added call to History_InitCoordVars from History_Init
- Added State_Grid as an argument to History_AddItemToCollection
- Added call to Registry_Lookup in History_AddItemToCollection
  to query fields in the State_Grid registry
- Added State_Grid as an argument to the History_Write routine,
  so that it can be passed to History_Netcdf_Define

History/history_netcdf_mod.F90
- Added State_Grid as an argument to History_Netcdf_Define,
  and IndexVarList_Create routines
- Also added State_Grid to the existing call to Lookup_Grid
  in the IndexVarList_Create routine
- Removed "USE Grid_Registry_Mod, ONLY: Lookup_Grid" statement

GeosUtil/grid_registry_mod.F90
- Removed

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
History/history_mod.F90
- Added new routine History_InitCoordVars.  This populates the fields
  of State_Grid that are coordinate variables for History netCDF files.
- Added call to History_InitCoordVars from History_Init
- Added State_Grid as an argument to History_AddItemToCollection
- Added call to Registry_Lookup in History_AddItemToCollection
  to query fields in the State_Grid registry
- Added State_Grid as an argument to the History_Write routine,
  so that it can be passed to History_Netcdf_Define
- Now reference Lookup_Grid from state_grid_mod.F90 in history_mod.F90

History/history_netcdf_mod.F90
- Added State_Grid as an argument to History_Netcdf_Define,
  and IndexVarList_Create routines
- Also added State_Grid to the existing call to Lookup_Grid
  in the IndexVarList_Create routine
- Removed "USE Grid_Registry_Mod, ONLY: Lookup_Grid" statement

GeosUtil/grid_registry_mod.F90
- Removed

GeosUtil/CMakeLists.txt
- Removed "grid_registry_mod.F90" from GeosUtil library

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
GeosCore/cleanup_mod.F90
Interfaces/GCClassic/main.F90
- Removed "USE Grid_Registry_Mod" and "CALL Grid_Registry_Mod"

History/history_mod.F90
- Pass State_Grid as an argument to Lookup_Grid, as the grid registry
  is now located in this object

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
Headers/state_grid_mod.F90
- Fixed typo in State_Grid%HyBm Description field:
  "hybrid A" -> "hybrid B"
- Fixed typo in State_Grid%LonBnd" Units field:
  "degrees_north" -> "degrees_east"

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
Headers/state_grid_mod.F90
- The GlobalXEdge, GlobalXMid, GlobalYEdge, GlobalYMid fields of
  State_Grid are allocated and computed in routine Compute_Grid,
  which only gets called for GC-Classic.  To avoid an error in GCHP,
  we now only register these fields for GC-Classic.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
Co-authored-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
Co-authored-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
Co-authored-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
GeosCore/planeflight_mod.F90
- Now use a scale factor of 1e-3 in the conversion of v/v dry to
  molec/cm3 for GEOS-Chem chemical species in routine PLANEFLIGHT
- Removed the "USE UnitConv_Mod, ONLY: Convert_Spc_Units", as this
  routine has been removed from PLANEFLIGHT in 2021

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
The Fung (1992) termite emissions of CH4 were dated and at a coarse
resolution (4x5). We now update to the more recent CAMS-GLOB-TERM_v1.1
termite emissions available on the 0.5x0.5 degree grid and at monthly
resolution (averaged over 2000-2017). With this update, annual termite
emission totals are expected to increase from 12 Tg/year (Fung 1992) to
20 Tg/year (CAMS).

In this update, we also retire both Fung termite emissions and Fung
soil absorption as options in the carbon simulation.

Signed-off-by: Melissa Sulprizio <mpayer@seas.harvard.edu>
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.aerosol
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon
run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.fullchem
- Removed entries for ARCTAS_SHIP, CORBETT_SHIP, ICOADS_SHIP

run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon
run/GCHP/HEMCO_Config.rc.templates/HEMCO_Config.rc.carbon
- Also added toggle for HTAP_SHIP (this was missing)

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR # (Removed ARCTAS, ICOADS, CORBETT ship emission
entries from HEMCO_Config.rc templates, by @yantosca) into the
GEOS-Chem "no-diff-to-benchmark" development stream.

PR #3198 does the following:

1. Removes ARCTAS_SHIP, CORBETT_SHIP, and ICOADS_SHIP entries from
   GC-Classic and GCHP HEMCO_Config.rc template files. These inventories
   are obsolete and data for these no longer exists.

2. Adds "--> HTAP_SHIP : false" toggles to the HEMCO_Config.rc.carbon
   template files for GC-Classic and GCHP. There is an entry for HTAP_SHIP
   but no toggle in these files.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3194 (Update termite CH4 emissions to
CAMS-GLOB-TERM_v1.1 product, by @msulprizio) into the GEOS-Chem
"no-diff-to-benchmark" development stream.

In PR #3194 we have done the following:

1. Updated emissions of CH4 were dated and at a coarse resolution (4x5).
   We now update to the more recent CAMS-GLOB-TERM_v1.1 termite emissions
   available on the 0.5x0.5 degree grid and at monthly resolution
   (averaged over 2000-2017).

2. Retired both Fung termite emissions and Fung
   soil absorption as options in the carbon simulation.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
yantosca and others added 21 commits March 30, 2026 18:24
NOTE: Some GitHub Actions that are based on Node20.js are being
removed from runners.

.github/workflows/stale.yml
- Chagned "stale@v5" to "stale@v10

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3254 (Update GitHub Actions to the latest versions
to avoid Node20.js deprecation warnings, by @yantosca) into the GEOS-Chem
14.7.1 development stream.

PR #3254 updates to the latest GitHub Actions versions.  Some of the
current Actions are based on Node20.js, which is being retired in
June 2026.  This will ensure that our current GitHub Actions workflows
will not break when Node20.js is retired.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3080 (Add CH4 Jacobian run option to carbon
simulation, by @lizziel) into the GEOS-Chem "no-diff-to-benchmark"
development stream.

PR #3080 adds the capability of building and running a KPP carbon
simulation with Jacobian tracers as needed for the GCHP Integrated
Methane Inversion (IMI).

See #3080 for details.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
KPP/carbon/carbon_funcs.F90
- Fixed typo where id_CO was assigned the ID of CO2, and vice-versa

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3220 (Stop integration & parallel tests if
a conda environment with netCDF is active, by @yantosca) into
the GEOS-Chem "no-diff-to-benchmark" development stream.

PR #3220 places error checks to stop integration and parallel tests
from proceeding if the netCDF library comes from a conda environment.
When a conda enviroment (such as gcpy_env) is activated, the netCDF
library from conda may be placed higher up in the search path than the
netCDF library that is desired. This can cause the executable to be
linked against the wrong netCDF library.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3233 (ExtData2G capability in GCHP transport
tracer simulations, by @lizziel) into the GEOS-Chem "no-diff-to-benchmark"
development stream.

PR #3233 enables using MAPL ExtData2G, rather than legacy MAPL ExtData,
for handling imports in GCHP as an option for the transport tracers
simulation. A yaml configuration file for that simulation is included in
this pull request.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3250 (Prevent GC-Classic simulations on reduced
vertical grids from trying to read the restart file as REAL*8, by
@yantosca) into the GEOS-Chem "no-diff-to-benchmark" development stream.

PR #3250 prevents GC-Classic simulations on the reduced vertical grid
(47 levels) from having run directories set up to try to read the
restart file as REAL*8 directly via GEOS-Chem (as this method does
not have vertical regridding).  Also an error trap is added to stop
simulations where the vertical dimension of the restart file does
not match the vertical dimension of the simulation grid.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3237 (Fix a timestep mismatch between GCHP
C180 and GCC 0.5x0.625, by @yuanjianz) into the GEOS-Chem
"no-diff-to-benchmark" development stream.

PR #3237 edits the run/GCHP/setCommonRunSettings.sh.template file
so that GCHP C180 simulations will use a 5/10 minute transport
and chemistry timestep (as does GC-Classic 0.5 x 0.625).

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
Headers/state_grid_mod.F90
- Removed MaxChemLev, MaxStratLev, MaxTropLev fields from State_Grid

Headers/state_met_mod.F90
- Added MaxChemLev and MaxStratLev to State_Met

GeosUtil/pressure_mod.F90
- Added Init_MaxChemLev routine
- Call Init_MaxChemLev from Init_Pressure
- Pass State_Met argument to Init_Pressure
- Now define State_Met%MaxChemLev and State_Met%MaxStratLev as the
  level where pressure = 1 hPa

GeosCore/calc_met_mod.F90
- Now reference State_Met%MaxStratLev instead of State_Grid%MaxStratLev
- Now reference State_Met%MaxChemLev instead of State_Grid%MaxChemLev

GeosCore/cldj_interface_mod.F90
- Add State_Met as an argument to Init_CloudJ and Set_Clim_Profiles
- Now reference State_Met%MaxChemLev instead of State_Grid%MaxChemLev
- Cosmetic changes (indentation)

GeosCore/gc_environment_mod.F90
- Now pass State_Met as an argument to GC_Init_Extra
- Now reference State_Met%MaxChemLev instead of State_Grid%MaxChemLev

GeosCore/gc_grid_mod.F90
- Simplify logic where isGMAO and State_Grid%NativeNZ is computed

GeosCore/mercury_mod.F90
- Add State_Met argument to Init_Mercury and call to Init_Photolysis
- Now reference State_Met%MaxChemLev instead of State_Grid%MaxChemLev

GeosCore/photolysis_mod.F90
- Add State_Met argument to Init_Mercury and call to Init_CloudJ
- Now reference State_Met%MaxChemLev instead of State_Grid%MaxChemLev

GeosCore/sulfate_mod.F90
- Add State_Met argument to Init_Sulfate
- Now reference State_Met%MaxChemLev instead of State_Grid%MaxChemLev

GeosCore/aerosol_mod.F90
GeosCore/carbon_mod.F90
GeosCore/diagnostics_mod.F90
GeosCore/dust_mod.F90
GeosCore/global_br_mod.F90
GeosCore/hco_utilities_gc_mod.F90
GeosCore/ocean_mercury_mod.F90
GeosCore/seasalt_mod.F90
- Now reference State_Met%MaxChemLev instead of State_Grid%MaxChemLev

Interfaces/GCClassic/main.F90
Interfaces/GCHP/gchp_chunk_mod.F90
- Now pass State_Met to GC_Init_Extra and Init_Photolysis

Interfaces/GCHP/Chem_GridCompMod.F90
- Removed references to State_Grid%MaxStratLev and State_Grid%MaxTropLev

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
GeosCore/aero_drydep.F90
- Change "State_Grid%MaxChemLev" -> "State_Met%MaxChemLev"

GeosCore/fjx_interface_mod.F90
- Change "State_Grid%MaxChemLev" -> "State_Met%MaxChemLev"
- Pass State_Met instead of State_Grid to "Set_Prof_FJX"
- Cosmetic changes (indentation)

GeosCore/gc_grid_mod.F90
- Fix typo "ModelE2.1" -> "MODELE2.1" in case statement where
  is_GMAO is set.  This needs to be in uppercase.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
GeosCore/cldj_interface_mod.F90
- Removed State_Met from the arg list, it's not used

GeosCore/photolysis_mod.F90
- Removed State_Met from the call to Init_CloudJ

CHANGELOG.md
- Updated accordingly
- Removed/combined duplicated text

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3205 (Fix bugs in HEMCO_Diagn.rc template files
for DustL23M, by @yantosca) into the GEOS-Chem "no-diff-to-benchmark
development stream.

In PR #3205 we have made the following fixes:

1. In run/GCClassic/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem.onlineE,
   we have added diagnostic emission entries for DSTbin1..DSTbin7,
   following what we did for the GEOS-Chem Classic HEMCO_Diagn.rc template.
   The inventory number/category will be changed if using online dust at
   rundir creation.

2. In run/GCHP/HEMCO_Diagn.rc.templates/HEMCO_Diagn.rc.fullchem, we have
   fixed the incorrect extension number for the InvDustL23M diagnostics.
   The extension number was 105 but should be 125.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
GeosUtil/pressure_mod.F90
- Added a CASE statement so that State_Met%MaxChemLev and
  State_Met%MaxStratLev will be hardwired for the GCAP/ModelE2.1
  102, 74, and 40 level grids.  For the GMAO grids these will
  be computed as the  1hPa level.

This was necessary in order to obtain zero-diff results when using
GCAP ModelE2.1 met fields when comparing to previous model versions.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
Headers/state_grid_mod.F90
- Removed MaxChemLev, MaxStratLev, MaxTropLev from TYPE(GrdState)

Interfaces/GCHP/Chem_GridCompMod.F90
- Changed: State_Grid%MaxChemLev  -> State_Met%MaxGridLev
- Changed: State_Grid%MaxStratLev -> State_Met%MaxStratLev

Interfaces/GCHP/gchp_chunk_mod.F90
- Removed references to State_Grid%MaxChemLev, State_Grid%MaxStratLev

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
GeosCore/cldj_interface_mod.F90
- Removed the leftover "USE State_Met_Mod" statement.  This is not
  needed in this routine.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings PR #3089 (Remove hardwired MaxChemLev; now compute
this as the 1 hPa level and store in State_Met, by @yantosca) into
the GEOS-Chem "no-diff-to-benchmark" development stream.

PR #3089 does the following:

1. Removes State_Grid%MaxTropLev, State_Grid%MaxStratLev, and
   State_Grid%MaxChemLev fields.

2. Adds State_Met%MaxChemLev and State_Met%MaxStratLev fields

3. Computes State_Met%MaxStratLev as the 1 hPa level instead of hardwiring
   it (for GMAO fields only)

4. Sets State_Met%MaxChemLev equal to State_Met%MaxStratLev, so that
   chemistry will be done to the top of the stratosphere.

5. References State_Met%MaxChemLev and State_Met%MaxStratLev in
   various routines.

6. Simplifies the logic in gc_grid_mod.F90 where isGMAO and
   State_Grid%NativeNZ are computed.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This merge brings updates from the "dev/no-diff-to-benchmark"
development stream into the release/14.7.1 branch, in anticipation
of the GEOS-Chem (science codebase) 14.7.1 release.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
CHANGELOG.md
- We have updated the version number to 14.7.1 in anticipation of
  the GEOS-Chem 14.7.1 release.

AUTHORS.txt
- Updated as of 08 Apr 2026 for 14.7.1

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
…er sim

The valid_range entry will cause the model to crash if not all of the
data is present on the file system. This is a useful tool but not one
that should be default for beta since users often only have a subset of
the available data locally. The crash does not yet have a useful error
message.

Signed-off-by: Lizzie Lundgren <elundgren@seas.harvard.edu>
This merge brings PR #3272 (Remove optional valid_range in ExtData2G
yaml file for transport tracers simulations, by @lizziel) into the
GEOS-Chem "release/14.7.1" branch.

PR #3272 removes the valid_range option in the new ExtData2G yaml file
for the Transport Tracers simulation introduced in this version as beta
in GCHP. The valid_range option works fine on the Harvard cluster because
the full span of all available emissions and meteorology data is present
locally. However, the model crashes on a different cluster with only the
data needed for a short run downloaded. This is because the valid_range for
each data collection in the file is set for the time range of all data
available remotely in the GEOS-Chem input data repository rather than
just the data needed for the run. ExtData2G crashes when it cannot find
all of the data even if it is not actually needed.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
This is the official release commit of GEOS-Chem 14.7.1

Updated version numbers in:
- CHANGELOG.md

Please see CHANGELOG.md for updates added to this version.

Signed-off-by: Bob Yantosca <yantosca@seas.harvard.edu>
@yantosca yantosca requested a review from msulprizio April 14, 2026 15:16
@yantosca yantosca self-assigned this Apr 14, 2026
@yantosca yantosca added category: Feature Request New feature or request no-diff-to-benchmark This update will not change the results of fullchem benchmark simulations labels Apr 14, 2026
@yantosca yantosca marked this pull request as ready for review April 21, 2026 14:27
@yantosca yantosca added this to the 14.8.0 milestone Apr 22, 2026
@yantosca
Copy link
Copy Markdown
Contributor Author

All GEOS-Chem Classic integration tests passed:

==============================================================================
GEOS-Chem Classic: Execution Test Results

CodeDir   : 469bdf2 Merge updates from GEOS-Chem 14.7.1 into dev/14.8.0
GEOS-Chem : 6b60420dc Merge updates from GEOS-Chem 14.7.1 into dev/14.8.0
HEMCO     : 07da3c2 HEMCO 3.12.1 release
Cloud-J   : 16d18b0 Merge PR #34 (Fixed issues in format statements for verbose output)
HETP      : 2a99b24 Merge pull request #2 from geoschem/bugfix/initialize_local_variables

Using 24 OpenMP threads
Number of execution tests: 38

Submitted as SLURM job: 7318320
==============================================================================

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%  All execution tests passed!  %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

All GEOS-Chem Classic tests were zero-diff w/r/t gcc.14.8.0-alpha.2, except:

All GCHP integration tests passed:

==============================================================================
GCHP: Execution Test Results

CodeDir       : fcf9a5e Merge updates from GCHP 14.7.1 into dev/14.8.0
MAPL          : 80d66d0a Merge PR #41 (ExtData2G in GCHP Transport Tracers simulation)
GMAO_Shared   : 4ddb3ec Merge pull request #2 from geoschem/feature/mapl-upgrade
ESMA_cmake    : 01bbf2f Merge pull request #9 from geoschem/feature/turn_off_f2py_builds_in_gchp
FMS           : 259759d1 Merge pull request #3 from geoschem/feature/update_gmao_libs
FVdycoreCubed : 348620f Merge PR #11 (Scale tracers by pressure ratio in first timestep)
geos-chem     : 6b60420dc Merge updates from GEOS-Chem 14.7.1 into dev/14.8.0
HEMCO         : 07da3c2 HEMCO 3.12.1 release
Cloud-J       : 16d18b0 Merge PR #34 (Fixed issues in format statements for verbose output)
HETP          : 2a99b24 Merge pull request #2 from geoschem/bugfix/initialize_local_variables
GFE           : bac529f Merge pull request #40 from Goddard-Fortran-Ecosystem/feature/mathomp4/update-gftl-1.15.2

Number of execution tests: 12

Submitted as SLURM job: 7323128
==============================================================================

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%  All execution tests passed!  %%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

All GCHP tests were zero-diff w/r/t gchp.14.8.0-alpha.2, except:

]

@yantosca yantosca merged commit 6b60420 into dev/14.8.0 Apr 22, 2026
9 checks passed
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants