Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GEOS-Chem (science codebase) 14.5.1 release #2678

Merged
merged 160 commits into from
Jan 10, 2025
Merged

GEOS-Chem (science codebase) 14.5.1 release #2678

merged 160 commits into from
Jan 10, 2025

Conversation

yantosca
Copy link
Contributor

Name and Institution (Required)

Name: Bob Yantosca
Institution: Harvard + GCST

Describe the update

This PR seeks to merge the release/14.5.1 branch into main in anticipation of the GEOS-Chem 14.5.1 release.

The release/14.5.1 branch contains

  • Commits from the dev/no-diff-to-benchmark
  • Updated version numbers to 14.5.1 in the usual places.

Expected changes

This is a no-diff-to-benchmark update

Tagging @msulprizio @lizziel

msulprizio and others added 30 commits September 11, 2024 14:03
… CO2

- Add missing ship logical to HEMCO_Config.rc.carbon, otherwise ship
  emissions for CO2 are not included
- Update HEMCO_Config.rc.CO2 to:
  1. Include DiagnFile to properly save out emissions diagnostics
  2. Use same Aviation_SurfCorr_SclFac.1x1.nc file as carbon simulation

Signed-off-by: Melissa Sulprizio <[email protected]>
Signed-off-by: Lizzie Lundgren <[email protected]>
Signed-off-by: Lizzie Lundgren <[email protected]>
run/shared/kpp_standalone_interface.yml
- Fixed typo: "output_dir" -> "output_directory"

Signed-off-by: Bob Yantosca <[email protected]>
GeosCore/fullchem_mod.f90
- Use keyword arguments, for clarity

GeosCore/kpp_standalone_interface.F90
- Remove Active_Cell and Active_Cell_Name from KPP_Standalone_YAML
- Add new derived type KPP_Standalone_ActiveCell_Type, which is now
  declared with !$OMP THREADPRIVATE.  This contains the Active_Cell
  and Active_Cell_Name fields.
- Added new variable KPP_Standalone_ActiveCell, based on
  new KPP_Standalone_ActiveCell_Type

NOTE: The KPP_Standalone_YAML is initialized outside of a parallel
loop, so it does not need to be declared !$OMP THREADPRIVATE.  But the
choice of whether an (I,J,L) location corresponds to one of the
"active_cells" (listed in the kpp_standalone_interface.yml file) happens
within a parallelized loop.  Thus we need to move the Active_Cell and
Active_Cell_Name fields out of KPP_Standalone_YAML and into
KPP_Standalone_ActiveCell.

Signed-off-by: Bob Yantosca <[email protected]>
run/shared/kpp_standalone_interface.yml
- Reorganize file so that "settings:" comes first, then "active_cells:",
  and then "locations:"
- Add "settings:activate" YAML tag to toggle the KPP standalone
  interface on or off

GeosCore/kpp_standalone_interface.F90
- Add call to QFYAML_Add_Get to parse the "settings:activate" YAML tag
- Set KPP_Standalone_YAML%SkipIt to .TRUE. if "settings:activate"
  is false.  This will cause the code to ignore saving out the state
  of the model for the KPP standalone even if kpp_standalone_interface.yml
  is present in the run directory.

Signed-off-by: Bob Yantosca <[email protected]>
run/GCClassic/createRunDir.sh
- Copy run/shared/kpp_standalone_interface.yml to fullchem rundirs

run/shared/cleanRunDir.sh
- Skip removing bpch files (and {diag,tracer}info.dat files), we no
  longer generate bpch output
- Add comments and usage examples
- Remove all fort.* files
- Remove OututDir/*.txt files as well (these are KPP standalone
  interface files)

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <[email protected]>
.gitignore
- Also ignore *.exe files

GeosCore/fullchem_mod.F90
- Remove State_Grid from call to Check_ActiveCell

GeosCore/kpp_standalone_interface.F90
- Updated subroutine header comments
- Added cosmetic changes for clarity (mostly making code fit within
  80 characters, for better readability)
- Removed Active_Cell and Active_Cell_name from the
  KPP_Standalone_Interface_Type (should have been done previously)
- Remove State_Grid argument from Check_ActiveCell, this was only
  used for debugging.   Also removed commented out debug prints.
- Use Format statements with write statments where expedient
- Echo a message when the KPP standalone interface is manually disabled
  (i.e. when settings:activate = false)
- Added display of location names and lon/lats at end of the routine
  Config_KPP_Standalone
- In routine Write_Samples, wrap file I/O in an !$OMP CRITICAL block,
  in order to prevent more than one thread from writing to each file.
- Removed RETURN statement from within !$OMP CRITICAL block, this
  is not allowed.
- Bug fix: Write Kpp_Standalone_ActiveCell%Active_Cell_Name to file,
  and not Kpp_Standalone_YAML%Active_Cell_Name (which has been removed).

Signed-off-by: Bob Yantosca <[email protected]>
GeosCore/kpp_standalone_interface.F90
- Moved to kppsa_interface_mod.F90

GeosCore/kppsa_interface_mod.F90
- Moved from kpp_standalone_interface
- Renamed types, variables and routines using "KppSa" prefix:
  - KPP_Standalone_Interface_Type -> KppSa_Interface_Type
  - KPP_Standalone_ActiveCell_Type -> KppSa_ActiveCell_Type
  - KPP_Standalone_YAML -> KppSa_State
  - KPP_Standalone_ActiveCell -> KppSa_ActiveCell
  - Check_Domain -> KppSa_Check_Domain
  - Check_ActiveCell -> KppSa_Check_ActiveCell
  - Config_KPP_Standalone -> KppSa_Config
  - Write_Samples -> KppSa_Write_Samples
  - Cleanup_KPP_Standalone -> KppSa_Cleanup
- Added KppSa_Check_Time function to determine if it is time to
  write KPP standalone output.  This allows you to only write output
  e.g. at the end of a run instead of for each timestep.
- Added KppSa_State%SkipWriteAtThisTime field, which is used to
  determine if we need to exit a routine early.

GeosCore/fullchem_mod.F90
- "USE Kpp_Standalone_Interface" -> "USE KppSa_Interface_Mod"
- Call renamed routines from kppsa_interface_mod.F90
- Now call KppSa_Check_Domain only if it is the first call to
  DO_FULLCHEM.  This is to avoid repeated computations.
- Now call KppSa_Check_Time to determine if we are in the time window
  when the model state should be archived to disk.
- Updated comments and comment headers

run/shared/kpp_standalone_interface.yml
- Added "start_output_at" to denote starting date time for archiving
  model state
- Added "stop_output_at" to denote ending date time for archiving
  model state
- Updated comments

CHANGELOG.md
GeosCore/CMakeLists.txt
- Updated accordingly

Signed-off-by: Bob Yantosca <[email protected]>
GeosCore/kppsa_interface_mod.F90
- In routine KppSa_Check_Time:
  - rRmoved leftover debug print statements
- In routine Kpp_Check_ActiveCell
  - Added an IF statement to exit after setting KppSa_State%Active_Cell to .FALSE.
    and  KppSa_Active_Cell_Name to '' if we are outside of the time
    window specified in the kpp_standalone_interface.yml fiel.
  - This will ensure that we only archive model state to disk during
    the specified time window, which helps with computatonal efficiency.
- In routine KppSa_Config:
  - Now write starting & ending date of archival window to log file

Signed-off-by: Bob Yantosca <[email protected]>
run/GCHP/createRunDir.sh
- Added an if statement to copy run/shared/kpp_standalone_interface.yml
  to GCHP fullchem run directories (any option)

Signed-off-by: Bob Yantosca <[email protected]>
Changed the CEDS TMB emission fields to actually emit TMB like they're supposed to, instead of emitting HCOOH. I'm not sure if this fix needs to go into any other HEMCO_Config.rc template files, either in run/GCClassic or in other run/ directories, but hopefully we can make any other necessary changes down the line
Fix bug where download_data.py failed if the dryrun log filename contained uppercase characters
e.g. 'Log.dryrun'. The solution is to not coerce the dryrun log filename to lowercase.
KPP/standalone
- Folder which contains source code from the GitHub repository:
  https://github.com/geoschem/KPP-Standalone.  This is a fork of
  the https://github.com/KineticPreProcessor/KPP-Standalone repo
  by Obin Sturm, Mike Long, and Christoph Keller.  The branch
  geoschem-dev is checked out.  This is where we can place
  GEOS-Chem-specific updates without touching the original code
  in the kpp-standalone branch.
  branch is set to geoschem-dev, which is the branch to be used
  for interfacing into the GEOS-Chem model

.gitmodules
- This was updated by running the command:
  git submodule add -b geoschem-dev \
    https://github.com/geoschem/KPP-Standalone \
    KPP/standalone

CHANGELOG.md
- Updated accordingly

KPP/fullchem/Makefile
KPP/fullchem/kpp_standalone*.F90
KPP/fullchem/samples_kpp_standalone/*
- Removed from the KPP/fullchem folder.

KPP/standalone
- Folder containing code from https://github.com/geoschem/KPP-Standalone

Signed-off-by: Bob Yantosca <[email protected]>
KPP/CMakeLists.txt
- Add calls to "add_directory(standalone)" in the fullchem and
  custom "if" blocks.  This will tell CMake to look for the
  CMakeLists.txt file in the KPP/standalone folder, and to build
  the standalone files (libKppStandalone.a) after libKPP.a has
  been built.

Signed-off-by: Bob Yantosca <[email protected]>
…sed on species defined

In carbon_gases_mod.F90 all chemistry input fields needed for CO2, CH4, and CO
chemistry were obtained regardless of the species included in the carbon simulation.
Therefore when running the carbon simulation with only one species (e.g. CO2)
fields were being obtained that weren't necessary. These fields have been
blocked by logical statements checking if the species that needs those fields is
advected.

Also in this module, the chemistry routine has been updated to only call
KPP when CH4 and/or CO are defined as advected species. KPP is not needed
for CO2-only simulations. Instead CO2-only simulations utilize the CO2_COPROD
field obtained from HEMCO. This field was originally obtained and applied
to the species concentration array in subroutine Emiss_Carbon_Gases. The
routine name was misleading and has been renamed to CO2_Production. The call
to this routine has also been moved from emissions_mod.F90 to Chem_Carbon_Gases
in carbon_gases_mod.F90.

Notes: When we retire the CO2 simulation, we should be able to also remove
the CO2 menu from geoschem_config.yml since it is not needed when using
CO2 in the carbon simulation.

Signed-off-by: Melissa Sulprizio <[email protected]>
msulprizio and others added 22 commits December 20, 2024 11:15
…ns with CO only

To make it more clear that the PCO_CH4 fields are read from file, the option in
in the CO2 menu of geoschem_config.yml has been renamed from from "use_fullchem_PCO_from_CH4"
to "use_archived_PCO_from_CH4 (same for NMVOC source)". The use_archived_PCO_from_CH4
option is now set to false by default for carbon simulations and only set to true in carbon simulations
where only CO is advected. Similarly, "3D_chemical_oxidation_source" in the CO2 menu
has been renamed to "use_archived_PCO2_from_CO".

The carbon mechanism was rebuilt with KPP 3.1.1 here but that is a zero-
difference update simply changing the headers of the KPP/carbon/gckpp* files.

Signed-off-by: Melissa Sulprizio <[email protected]>
Signed-off-by: Lizzie Lundgren <[email protected]>
Fixes for running GEOS-Chem 14.5.1 in GEOS
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg
- Added MACFARLANE entries for the Australian regional Hg emissions
  by Macfarlane et al. [2022]
- Added scale factor 13 (HgCl2 to Hg)
- Added mask 1010 (AUSTRALIA_MASK)

CHANGELOG.md
- Updated accordingly
run/GCClassic/HISTORY.rc.templates/HISTORY.rc.*
- Add a comment to the BoundaryConditions collection header warning
  users not to change the BoundaryConditions.frequency setting.  This
  must be left at "00000000 030000", as GEOS-Chem Classic nested-grid
  simulations expect to read boundary conditions every 3 hours.

CHANGELOG.md
- Updated accordingly

Signed-off-by: Bob Yantosca <[email protected]>
run/GCClassic/HEMCO_Config.rc.templates/HEMCO_Config.rc.Hg
- Changed path of AUSTRALIA_MASK file from v2016-04 to v2025-01

Signed-off-by: Bob Yantosca <[email protected]>
This merge brings PR #2669 (Implement Australian Hg emissions inventory
(2010-2019) from MacFarlane et al. [2022], by @yantosca) into the
GEOS-Chem "no-diff-to-benchmark" development stream.

This PR implements a new emissions inventory for the Hg simulation.

Signed-off-by: Bob Yantosca <[email protected]>
This merge brings PR #2670 (Add comments to GCClassic HISTORY.rc
template files advising users not to change
BoundaryConditions.frequency, by @yantosca) into the GEOS-Chem
"no-diff-to-benchmark" development stream.

This PR adds a warning to the HISTORY.rc template files for users
not to change the BoundaryConditions.frequency setting.

Signed-off-by: Bob Yantosca <[email protected]>
Contains bug fixes for the carbon simulations in GCClassic and GCHP

Signed-off-by: Melissa Sulprizio <[email protected]>
test/shared/commonFunctionsForTests.sh
- In function get_default_gcc_env_file, now use environment file
  gcclassic.gcc12_cannon_rocky.env
- In function get_default_gchp_env_file, now use environment file
  gchp.gcc12_openmpi4_cannon_rocky.env


CHANGELOG.md
- Updated accordingly


Signed-off-by: Bob Yantosca <[email protected]>
This merge brings PR #2674 (Change default environment files for
integration tests on Harvard Cannon from gnu10 to gnu12 #2674,
by @yantosca) into the GEOS-Chem "no-diff-to-benchmark" development
stream.

This PR updates the default compiler for integrationt tests that
are run on the Harvard Cannon cluster.

Signed-off-by: Bob Yantosca <[email protected]>
This merge brings PR #2675 (Fixed the problem that GCHP cannot read
meteorology field from yaml, by @yantosca) into the GEOS-Chem
"no-diff-to-benchmark" development stream.

According to @lizziel:

  I believe this fixes an issue brought in with the updates for
  GEOS-IT in dev/no-diff-to-benchmark (see PR #2523). It would only
  show up for GEOS-FP and GEOS-IT runs which we do not test in
  integration/AWS testing, and is not in any previously released
  versions. It therefore does not need an update to the changelog.

Signed-off-by: Bob Yantosca <[email protected]>
This merge brings the dev/no-diff-to-benchmark branch commits into
the GEOS-Chem (science codebase) 14.5.1 release branch, in anticipation
of the 14.5.1 release.

Signed-off-by: Bob Yantosca <[email protected]>
Updated version numbers in:
- CHANGELOG.md

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

Signed-off-by: Bob Yantosca <[email protected]>
@yantosca yantosca added the category: Feature Request New feature or request label Jan 10, 2025
@yantosca yantosca requested a review from lizziel January 10, 2025 16:18
@yantosca yantosca self-assigned this Jan 10, 2025
@yantosca yantosca requested a review from msulprizio January 10, 2025 16:34
@lizziel lizziel added this to the 14.5.1 milestone Jan 10, 2025
@lizziel lizziel merged commit b0e03cc into main Jan 10, 2025
@yantosca yantosca deleted the release/14.5.1 branch January 10, 2025 18:14
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
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants