ESCOMP / CAM

Community Atmosphere Model
71 stars 133 forks source link

Implementing GEOS-Chem chemistry in CESM (CESM-GC) #424

Open lizziel opened 2 years ago

lizziel commented 2 years ago

This issue is to discuss the proposed changes in https://github.com/ESCOMP/CAM/pull/378 and how they interact with the other components in CESM. Other PRs and issues related to the changes are:

This work was done by @fritzt but I am working to bring it up to the latest version of CESM and submit as PRs acceptable to merge. The original message from Thibaud in #378 is as follows:

Hello!

I have been working on implementing the GEOS-Chem (version 13.0.0) chemistry module in CESM2.1.1. This new option is designated as CESM2-GC. The implementation of GEOS-Chem chemistry inside CESM2 aims to provide an additional chemistry option alongside CAM-Chem.

Since the implementation of GEOS-Chem requires changes to multiple Git repositories, this is the first PR out of three (CAM, CLM, cime).

All GEOS-Chem source code and other dependencies for this project are obtained and handled with the Externals feature. The top-level Externals.cfg is provided as an attachment to this PR (renamed to Externals.txt).

CESM2-GC relies heavily on the implementation of HEMCO in CESM2 (https://github.com/ESCOMP/HEMCO_CESM). HEMCO is an ESMF-compatible interface to perform I/O (e.g. loading emission inventories) in atmospheric models. Note that HEMCO has been implemented in CAM and lives at a higher level than GEOS-Chem. This allows HEMCO to feed data (e.g. emission fluxes) to either GEOS-Chem or CAM-Chem. Compiling CESM2-GC with HEMCO requires the use of ESMF libraries (USE_ESMF_LIB).

Additionally, this implementation comes with a few modifications in cime and CLM. First, we wanted to have the option to let GEOS-Chem compute its own dry deposition velocities. This requires the coupler to pass land types from CLM to CAM. We have modified CLM, cime, and CAM accordingly. Finally, not all files in the GEOS-Chem subdirectories should be compiled. To deal with this, we introduced a feature that can exclude files from the compilation process (ESMCI/cime#3366). This feature, as well as changes to the Henry coefficients (due to added GEOS-Chem species) and the land type changes, will be introduced in another PR.

Because some of GEOS-Chem modules rely on module arrays, CESM2-GC cannot run with NTHRDSATM > 1. However, I have noticed that if any NTHRDS* are greater than 1, then CESM2-GC still crashes, which I haven't been able to understand why.

Some of the input files required for CESM2-GC can be found on Cheyenne.

Let me know if you need anything else.

Regards, Thibaud Fritz Laboratory for Aviation and the Environment

fritzt commented 2 years ago

@gold2718 Here is an example case directory using GEOS-Chem chemistry on Cheyenne: ~fritzt/CESM-GC_13.0.0/cesm_standard/cesm.2.1.1/cime/scripts/FCSD_GEOSChem

It uses initial conditions that can be found for different horizontal resolutions in this folder: /glade/p/univ/umit0034/Shared/GEOS-Chem/