Skip to content

Commit

Permalink
GEOS-Chem (science codebase) 14.2.1 release
Browse files Browse the repository at this point in the history
This merge brings the GEOS-Chem 14.2.1 (science codebase) development
stream into the main branch.

Signed-off-by: Bob Yantosca <[email protected]>
  • Loading branch information
yantosca committed Oct 10, 2023
2 parents 5218fe8 + 4e6d7ae commit 542bb8f
Show file tree
Hide file tree
Showing 150 changed files with 10,707 additions and 4,584 deletions.
94 changes: 76 additions & 18 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,60 @@ This file documents all notable changes to the GEOS-Chem repository starting in

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased 14.2.0]
## [14.2.1] - 2023-10-10
### Added
- Script `test/difference/diffTest.sh`, checks 2 different integration tests for differences
- Added GCHP environment file and export/unset env variables in run script for NASA Pleiades cluster
`SatDiagnEdge` collection to all GEOS-Chem Classic `HISTORY.rc` templates
- Added new GCHP config file ESMF.rc for configuring ESMF logging
- Added several new run directory files for use with GEOS-Chem in GEOS
- GCClassic integration tests now display proper commit info in `results.compile.log`
- Stopped OCEAN_CONC from needlessly being pushed through vertical regridding for Hg simulations
- Added warning in GCHP HISTORY.rc about outputting area-dependent variables on custom grids
- Added option to use a single advected species in the carbon simulation
- Added option to perturb CH4 boundary conditions in CH4 simulation
- Added option to perturb OH in CH4 simulation using scale factor in HEMCO_Config.rc

### Changed
- Update `DiagnFreq` in GCClassic integration tests to ensure HEMCO diagnostic output
- Rename restart files in GCHP integration tests (as we do in non-test runs)
- Request 6 hours of execution time for GEOS-Chem Classic integration tests
- Invert directory structure where integration and parallel test scripts are stored
- Error check to stop run if any `MW_g` values are undefined
- Explicitly define tagCH4 simulations in `Input_Opt` rather than basing off of number of advected species
- The `fullchem` mechanism must now be built with KPP 3.0.0 or later
- Changed the AEIC 2019 monthly climatology specification format in ExtData.rc to match standard convention for climatology
- Changed default ESMF logging in GCHP to be ESMF_LOGKIND_NONE (no log)
- NetCDF utilities in `NcdfUtil` folder now use the netCDF-F90 API
- GEOS-only updates for running GEOS-Chem in GEOS
- Boundary conditions for nested-grid simulations are now imposed at every time step instead of 3-hourly
- Update `GeosCore/carbon_gases_mod.F90` for consistency with config file updates in PR #1916
- Update MPI usage in CESM-only code to match new conventions in CAM
- Updated GEPA inventory to GHGI v2 for CH4 and carbon simulations
- Updated integration tests scripts to run on the WashU Compute1 cluster

### Fixed
- Add missing mol wt for HgBrO in `run/shared/species_database_hg.yml`
- Moved the `EDGAR REF_TRF CH4` emissions to the Oil emissions category so it is superseded by GFEIv2 for carbon simulations.
- Prevent `State_Diag%SatDiagnCount` from not being allocated
- For satellite diagnostics, do not test for `id_OH` if OH is not a species
- Fixed parallelization in Luo wetdep simulations caused by uninitialized variable
- Fixed parallelization for Hg0 species in `GeosCore/drydep_mod.F90`
- Fixed incorrect time-slice when reading nested-grid boundary conditions
- Fixed initialization of advected species missing in GCHP restart file
- Fixed comments in `GeosUtil/unitconv_mod.F90` to reflect code implementation
- Fixed compilation issues for `KPP/custom`; updated equations in `custom.eqn`
- Prevent users from creating GCClassic rundirs at 0.25 x 0.3125 resolution for MERRA-2 met
- Added fix to set `RUNDIR_GRID_HALF_POLAR` option for global grids at 0.25x0.3125 or 0.5x0.625 resolutions
- Moved `OCEAN_MASK` out of `ExtData.rc.TransportTracers` and into the
meteorology template files
- Update `ExtData.rc.CO2` to get meteorology entries from template files
- Added fix for CH4 analytical inversions to convert the state vector value read from file to the nearest integer before comparing to the `Input_Opt%StateVectorElement` read from geoschem_config.yml

### Removed
- Remove references to the obsolete tagged Hg simulation

## [Unreleased 14.2.0] - TBD
### Added
- Added a printout of GEOS-Chem species and indices
- Added `NcdfUtil/README.md` file directing users to look for netCDF utility scripts at https://github.com/geoschem/netcdf-scripts
Expand Down Expand Up @@ -56,7 +109,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- Change RTOL value from 0.5e-3 back to 0.5e-2 to address model slowdown
- Allow the use of OFFLINE_SEASALT for seasalt alkalinity, Cl, and Br in GEOS-Chem within CESM
- Renamed TransportTracer species for consistency with GMAO's TR_GridComp
- See `KPP/fullchem/CHANGELOG_fullchem.md` for fullchem-mechanism changes
- See `KPP/fullchem/CHANGELOG_fullchem.md` for fullchem-mechanism
changes
- Update template `HEMCO_Config.rc.carbon` files to allow running the carbon simulation with only a single species.

### Fixed
- Fixed typo in `GCClassic/createRunDir.sh` preventing benchmark run script from being copied to the run directory
Expand Down Expand Up @@ -86,26 +141,29 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
- IONO2 recycling (fullchem, custom mechanisms)
- Deleted unused file set_prof_o3.F90

### Fixed
- Fixed entries for CH4 emissions in `HEMCO_Config.rc.carbon`

## [14.1.1] - 2023-03-03
### Added
- New integration test functions in `test/GCClassic/integration` and `test/GCHP/integration`
- New parallelization test functions in `test/GCClassic/parallel`
- Added `README.md` files for integration and parallelization tests in the `test` folder structure
- Added GCHP integration test for the tagO3 simulation
- Added GCHP and GCClassic integration tests for the carbon simulation
- Integration and parallelization test folders have been separated into subdirectories to minimize clutter.
- GEOS-only updates
- Add `about` to GitHub issue templates (ensures they will be displayed)
- Added `.github/ISSUE_TEMPLATE/config.yml` file w/ Github issue options
- New integration test functions in `test/GCClassic/integration` and `test/GCHP/integration`
- New parallelization test functions in `test/GCClassic/parallel`
- Added `README.md` files for integration and parallelization tests in the `test` folder structure
- Added GCHP integration test for the tagO3 simulation
- Added GCHP and GCClassic integration tests for the carbon simulation
- Integration and parallelization test folders have been separated into subdirectories to minimize clutter.
- GEOS-only updates
- Add `about` to GitHub issue templates (ensures they will be displayed)
- Added `.github/ISSUE_TEMPLATE/config.yml` file w/ Github issue options

### Changed
- GCClassic integration tests now use a single set of scripts
- GCHP integration tests now use a single set of scripts
- Integration test run directories are created with the default names assigned by `createRunDir.sh`
- Several bash functions in `test/shared/commonFunctionsForTests.sh` have been combined so that they will work for both GCClassic and GCHP integration tests
- `./cleanRunDir.sh` functions now take an argument for non-interactive execution (facilitates integration & parallelization tests)
- Moved several module variables from `GeosCore/ucx_mod.F90` to `Headers/state_chm_mod.F90`. This facilitates using GEOS-Chem in CESM.
- Time cycle flags EFYO are changed to CYS for all GCClassic integration/parallel tests, and for GCClassic fullchem_benchmarksimulations.
- GCClassic integration tests now use a single set of scripts
- GCHP integration tests now use a single set of scripts
- Integration test run directories are created with the default names assigned by `createRunDir.sh`
- Several bash functions in `test/shared/commonFunctionsForTests.sh` have been combined so that they will work for both GCClassic and GCHP integration tests
- `./cleanRunDir.sh` functions now take an argument for non-interactive execution (facilitates integration & parallelization tests)
- Moved several module variables from `GeosCore/ucx_mod.F90` to `Headers/state_chm_mod.F90`. This facilitates using GEOS-Chem in CESM.
- Time cycle flags EFYO are changed to CYS for all GCClassic integration/parallel tests, and for GCClassic fullchem_benchmarksimulations.
- Ask users for the name of their research institution at registration
- Ask users for the name of their PI at registration
- Do not compile GCHP for tagO3 integration tests; use the default build instead
Expand Down
2 changes: 1 addition & 1 deletion GeosCore/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ add_library(GeosCore
YuIMN_Code.F90

# Files only included for special cases
$<$<BOOL:${MODEL_CLASSIC}>:flexgrid_read_mod.F90 get_met_mod.F90>
$<$<BOOL:${MODEL_CLASSIC}>:flexgrid_read_mod.F90 get_met_mod.F90 set_boundary_conditions_mod.F90>
$<$<BOOL:${RRTMG}>:rrtmg_rad_transfer_mod.F90>
$<$<BOOL:${TOMAS}>:tomas_mod.F90>
$<$<BOOL:${APM}>:apm_driv_mod.F90>
Expand Down
92 changes: 48 additions & 44 deletions GeosCore/apm_driv_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1036,49 +1036,51 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &
!$OMP END PARALLEL DO
ENDIF

!$OMP PARALLEL DO &
!$OMP DEFAULT( SHARED ) &
!$OMP PRIVATE( I, J, L, N ) &
!$OMP PRIVATE( SIZENUM, PRESS, TK, RHIN ) &
!$OMP PRIVATE( CACID,PACID ) &
!$OMP PRIVATE( MSO4,MSO4BULK,MNIT,MNH4,SOAT) &
!$OMP PRIVATE( MBCS, MOCS, MSULFT,MDSTS,MSALTS) &
!$OMP PRIVATE( MBC, MOC, MMSA) &
!$OMP PRIVATE( XMDST) &
!$OMP PRIVATE( MASS1, MASS2) &
!$OMP PRIVATE( CSO2,CNH3,XN0,CAMINE,CAMINEEMIT,YAMINEEMIT) &
!$OMP PRIVATE( CCO,CNO,CNO2,CNO3,CHNO3,CISOP,CMTPA) &
!$OMP PRIVATE( NH3EMIT) &
!$OMP PRIVATE( CSOG) &
!$OMP PRIVATE( CSOA) &
!$OMP PRIVATE( VOL) &
!$OMP PRIVATE( CLVSOG,MSULFLV,MBCLV,MOCLV,MDSTLV,MSALTLV) &
!$OMP PRIVATE( XM1D,XN1D,XNOLD,TEMPOUT1,ATOM4N,AEROCOMOUT1D) &
!$OMP PRIVATE( XQ,PLVSOG01,PLVSOG1,GFTOT1,GFTOT2,DENWET1,DENWET2) &
!$OMP PRIVATE( IACT10,IACT20,IACT30,FCLOUD1,AERAREA1,AERDRYR1,GAMMAPM1) &
!$OMP PRIVATE( RACT1,RACT2,RACT3) &
!$OMP PRIVATE( NCOAG1,NCOAG2) &
!$OMP PRIVATE( YSPGF,XBCLIFE,XOCLIFE,XCSNH3) &!Yu+
!$OMP PRIVATE( XOH, XSINK,XAREA,XX0,XX1,DXX,ACS,XLAT, XLON,XAMINE) &
!$OMP PRIVATE( KYEAR,KMON,KDAY,KHOUR,KMIN,ISITE,JSITE,NSITE) &
!$OMP PRIVATE( XU,XV,TOP, TOPP) &
!$OMP PRIVATE( KKOUT) &
!$OMP PRIVATE( ZBEXT,ZW,ZG) &!OPT+
!$OMP PRIVATE( ZBABS) &!OPT+
!$OMP PRIVATE( YBEXT,XBEXT1k,YW,YG) &!OPT+
!$OMP PRIVATE( IWL) &!OPT+
!$OMP PRIVATE( ITYP) &!mxy+
!$OMP PRIVATE( YCCN,YCDN,YCDNSP,YCLDF,YCLDLIQ,YCLDICE,YRCLDL,VZ) &!Yu+ 7/2012
!$OMP PRIVATE( XCDN,XCDNSP ) &
!$OMP PRIVATE( YF,YC,SCOS,LOCALTIME ) &
!$OMP PRIVATE( PRESS0, YSIGMA ) &
!$OMP PRIVATE( wbar,relhum,yqc,yna,YB,YREI,YK) &
!$OMP PRIVATE( dumc, dumnc, pgam, lamc) &
!$OMP PRIVATE( CCLD,CLDLIQ,CLDICE ) &
!$OMP PRIVATE( REL,REI) &
!$OMP PRIVATE( taucloud, taucloudl, taucloudi, ssacloudl, ssacloudi ) &
!!$OMP PRIVATE( nuci, onihf, oniimm, onidep, onimey) &
!$OMP SCHEDULE( DYNAMIC )
! Disable this parallel loop, which causes differences in output
! for the time being. -- Bob Yantosca (24 May 2023)
! !$OMP PARALLEL DO &
! !$OMP DEFAULT( SHARED ) &
! !$OMP PRIVATE( I, J, L, N ) &
! !$OMP PRIVATE( SIZENUM, PRESS, TK, RHIN ) &
! !$OMP PRIVATE( CACID,PACID ) &
! !$OMP PRIVATE( MSO4,MSO4BULK,MNIT,MNH4,SOAT) &
! !$OMP PRIVATE( MBCS, MOCS, MSULFT,MDSTS,MSALTS) &
! !$OMP PRIVATE( MBC, MOC, MMSA) &
! !$OMP PRIVATE( XMDST) &
! !$OMP PRIVATE( MASS1, MASS2) &
! !$OMP PRIVATE( CSO2,CNH3,XN0,CAMINE,CAMINEEMIT,YAMINEEMIT) &
! !$OMP PRIVATE( CCO,CNO,CNO2,CNO3,CHNO3,CISOP,CMTPA) &
! !$OMP PRIVATE( NH3EMIT) &
! !$OMP PRIVATE( CSOG) &
! !$OMP PRIVATE( CSOA) &
! !$OMP PRIVATE( VOL) &
! !$OMP PRIVATE( CLVSOG,MSULFLV,MBCLV,MOCLV,MDSTLV,MSALTLV) &
! !$OMP PRIVATE( XM1D,XN1D,XNOLD,TEMPOUT1,ATOM4N,AEROCOMOUT1D) &
! !$OMP PRIVATE( XQ,PLVSOG01,PLVSOG1,GFTOT1,GFTOT2,DENWET1,DENWET2) &
! !$OMP PRIVATE( IACT10,IACT20,IACT30,FCLOUD1,AERAREA1,AERDRYR1,GAMMAPM1) &
! !$OMP PRIVATE( RACT1,RACT2,RACT3) &
! !$OMP PRIVATE( NCOAG1,NCOAG2) &
! !$OMP PRIVATE( YSPGF,XBCLIFE,XOCLIFE,XCSNH3) &!Yu+
! !$OMP PRIVATE( XOH, XSINK,XAREA,XX0,XX1,DXX,ACS,XLAT, XLON,XAMINE) &
! !$OMP PRIVATE( KYEAR,KMON,KDAY,KHOUR,KMIN,ISITE,JSITE,NSITE) &
! !$OMP PRIVATE( XU,XV,TOP, TOPP) &
! !$OMP PRIVATE( KKOUT) &
! !$OMP PRIVATE( ZBEXT,ZW,ZG) &!OPT+
! !$OMP PRIVATE( ZBABS) &!OPT+
! !$OMP PRIVATE( YBEXT,XBEXT1k,YW,YG) &!OPT+
! !$OMP PRIVATE( IWL) &!OPT+
! !$OMP PRIVATE( ITYP) &!mxy+
! !$OMP PRIVATE( YCCN,YCDN,YCDNSP,YCLDF,YCLDLIQ,YCLDICE,YRCLDL,VZ) &!Yu+ 7/2012
! !$OMP PRIVATE( XCDN,XCDNSP ) &
! !$OMP PRIVATE( YF,YC,SCOS,LOCALTIME ) &
! !$OMP PRIVATE( PRESS0, YSIGMA ) &
! !$OMP PRIVATE( wbar,relhum,yqc,yna,YB,YREI,YK) &
! !$OMP PRIVATE( dumc, dumnc, pgam, lamc) &
! !$OMP PRIVATE( CCLD,CLDLIQ,CLDICE ) &
! !$OMP PRIVATE( REL,REI) &
! !$OMP PRIVATE( taucloud, taucloudl, taucloudi, ssacloudl, ssacloudi ) &
! !!$OMP PRIVATE( nuci, onihf, oniimm, onidep, onimey) &
! !$OMP SCHEDULE( DYNAMIC )
DO J = 1, State_Grid%NY
DO I = 1, State_Grid%NX

Expand Down Expand Up @@ -2139,7 +2141,9 @@ SUBROUTINE APM_DRIV( Input_Opt, State_Chm, State_Diag, &

ENDDO
ENDDO
!$OMP END PARALLEL DO
! Disable this parallel loop, which causes differences in output.
! -- Bob Yantosca (24 May 2023)
! !$OMP END PARALLEL DO

write(*,*)'LuoSSA',sum(TCOD3D(:,:,:,1))/size(TCOD3D(:,:,:,1)), &
sum(TCOD3D(:,:,:,5))/size(TCOD3D(:,:,:,5))
Expand Down
Loading

0 comments on commit 542bb8f

Please sign in to comment.