Skip to content

Commit 80bc074

Browse files
committed
GEOS-Chem (science codebase) 14.6.0 release
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>
2 parents 86cd586 + 66ff55b commit 80bc074

File tree

134 files changed

+5146
-4238
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

134 files changed

+5146
-4238
lines changed

CHANGELOG.md

Lines changed: 76 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,76 @@ This file documents all notable changes to the GEOS-Chem repository starting in
44

55
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).
66

7+
## [14.6.0] - 2025-04-18
8+
### Added
9+
- Added CEDS 0.1 x 0.1 degree emissions (in `HEMCO/CEDS/v2024-06`)
10+
- Added met-field dependent dust tuning factors for GCHP C24 resolution in `setCommonRunSettings.sh`. Others to be added later.
11+
- Added placeholder values for dust mass tuning factors in `HEMCO_Config.rc.GEOS`
12+
- Added dust scale factors for MERRA-2, GEOS-IT, and GEOS-FP when using USTAR for Dust DEAD extension
13+
- Added utility subroutine `Print_Species_Min_Max_Sum` to `print_mod.F90`
14+
- Added routine `Set_DryDepVel_Diagnostics` to `hco_interface_gc_mod.F90`
15+
- Added dry-run integration tests for selected simulations
16+
- Added `State_Diag%SatDiagnPMid` and `State_Diag%Archive_SatDiagnPMid` to save pressure at level midpoints to the `SatDiagn` collection
17+
- Added option to run GCClassic nested-grid simulations at 0.125x0.15625 resolution using GEOS-FP derived winds fields generated from c720 mass fluxes archived by GMAO
18+
- Added option for South America (SA), Africa (AF), Middle East (ME), Oceania (OC), and Russia (RU) regions to nested-grid simulations in GCClassic's createRunDir.sh
19+
- Added updates for compatibility with the Beijing Climate Centre Earth System Model
20+
21+
### Changed
22+
- Updated default CEDS from CEDSv2 (0.5 deg x 0.5 de) to new CEDS (0.1 deg x 0.1 deg)
23+
- Added the `KPP_INTEGRATOR_AUTOREDUCE` C-preprocessor switch integrator-specific handling
24+
- Added code to `KPP/*/CMakeLists.txt` to read the integrator name from the `*.kpp` file
25+
- Replaced `GOTO` statements with `IF/THEN/ELSE` blocks in `GeosCore/drydep_mod.F90`
26+
- Changed several diagnostic subroutines to expect species concentrations in mol/mol rather than kg/kg
27+
- Added precision when registering `State_Met` and `State_Chm` arrays to change output file precision to match precision in the model
28+
- Changed GEOS-Chem Classic restart file precision of species concentrations (`State_Chm%SpcRestart`) from `REAL*4` to `REAL*8` to match precision in the model
29+
- Moved GEOS-Chem Classic retrieval of restart variable DELPDRY from HEMCO to `GC_Get_Restart` for consistency with handling of all other restart variables
30+
- Moved dry dep velocity diagnostic outputs for sea flux and satellite diagnostic species into the `DryDep` collection
31+
- Moved computation of the `DryDepVelForAlt1` diagnostic into routine `Set_DryDepVel_Diagnostics`
32+
- Updated `run/shared/download_data.yml` to use `--no-sign-request` for S3 downloads via anonymous login
33+
- Changed `KPP/CMakeLists.txt` to not call `add_directory(standalone)` unless we have configured with `-DKPPSA=y`
34+
- Moved Cloud-J and Fast-JX input directories to Cloud-J and new Fast-JX menus respectively in `geoschem_config.yml`
35+
- Updated photolysis and aerosol optics input directories to use new mineral dust values in `FJX_scat-aer.dat` and `dust.dat` based on spheroidal shapes
36+
- Set `State_Diag%Archive_SatDiagn` to true if `State_Diag%Archive_SatDiagnPMID` is true
37+
- Updated `RxnRates` and `RxnConst` diagnostic fields to use 4-digit reaction numbers.
38+
- Rebuilt `fullchem`, `Hg`, `carbon` chemical mechanisms with KPP 3.2.0
39+
- Changed the minimum KPP version to 3.2.0
40+
- Disabled the `KppTime` diagnostic output in the `fullchem_alldiags` integration tests; this will vary from run to run causing difference tests to fail
41+
- Updated the `KPP-Standalone` for compatibility with KPP 3.2.0 and to write the proper number of header lines to skip before data begins
42+
- Set `use_archived_PCO_from_CH4` and `use_archived_PCO2_from_CO2` to true by default for carbon simulations
43+
- Updated CH4 global oil, gas, and coal emissions from GFEIv2 to GFEIv3
44+
45+
### Fixed
46+
- Fixed PDOWN definition to lower rather than upper edge
47+
- Moved where prescribed CH4 is applied in GEOS-Chem Classic to after emissions application so that updated PBL heights are used
48+
- Moved species concentration unit conversions between mol/mol and kg/kg to start and end of every timestep in GEOS-Chem Classic to remove differences introduced when reading and writing restart files
49+
- Fixed bug in restart file entry for `ORVCSESQ` in GEOS-Chem Classic fullchem HEMCO_Config.rc that resulted in initializing to all zeros
50+
- Fixed parallelization issue when computing `State_Chm%DryDepNitrogren` used in HEMCO soil NOx extension
51+
- Fixed bugs in column mass array affecting budget diagnostics for fixed level and PBL
52+
- Updated `SatDiagnColEmis` and `SatDiagnSurfFlux` arrays in `hco_interface_gc_mod.F90`, with `(I,J,S)` instead of `(:,:,S)`
53+
- Fixed incorrect description metadata for `FluxHg0FromAirToOcean` and `FluxHg0FromOceanToAir` diagnostics
54+
- Placed call to `Convert_Spc_Units` in `main.F90` within an `IF ( notDryrun )` block to avoid executing unit conversions in dryrun simulations
55+
- Modified CH4 reservoir timestamps in HEMCO_Config.rc to use months 1-12 to ensure HEMCO recalculates those fields monthly and properly applies the seasonal mask
56+
- Fixed path error `download_data.py` when downloading from `geoschem+http` or `nested+http` portals
57+
- Retrieve UV flux arrays from Cloud-J used to set UV flux diagnostics
58+
- Fixed issue in `download_data.py` that was adding an extra `ExtData` to file paths
59+
- Restored `UVFlux` diagnostic output in the `fullchem_alldiags` integration test
60+
- Restored convection and ConvertBox unit conversion parallelization to how it was prior to 14.4.0 to fix slowness in TOMAS simulations
61+
- Modified the carbon mechanism in KPP to separate tropospheric CH4 loss by OH from CO production by CH4 to remove dependency of CH4 and CO on each other and eliminate differences between CH4/tagCO simulations and the carbon simulation
62+
- Renamed several dummy species in the carbon mechanism for clarity
63+
- Fixed precision calculations within `co2_mod.F90` and `tagged_co_mod.F90` to eliminate differences with the carbon simulation
64+
- Fixed simulation date information printed by metrics.py for GCHP
65+
66+
### Removed
67+
- Removed `CEDSv2`, `CEDS_GBDMAPS`, `CEDS_GBDMAPSbyFuelType` emissions entries from HEMCO and ExtData template files
68+
- Removed re-evaporation requirement for washout
69+
- Removed unused level argument passed to `SOIL_DRYDEP` and `SOIL_WETDEP`
70+
- Removed Fast-JX input directory from geoschem_config.yml files except for Hg simulation
71+
- Removed `History` attribute from ObsPack output netCDF files; the date info was causing difference tests to fail
72+
- Removed unused diagnostics: `Tomas_H2SO4`, `Tomas_COAG`, `Tomas_NUCL`, `Tomas_AQOX`, `Tomas_MNFIX`, `Tomas_SOA`
73+
- Removed diurnal cycle factor applied to OH in `KPP/carbon/carbon_Funcs.F90` to eliminate differences between CH4 and carbon simulations.
74+
- Removed diurbal cycle factor applied to OH in tagCO simulation for consistency with other carbon species
75+
- Removed unused functions from `carbon_get_CO2fromOH_flux` and `carbon_get_FixedOH_Flux` from `KPP/carbon/carbon_Funcs.F90`
76+
777
## [14.5.3] - 2025-03-04
878
### Changed
979
- Changed CESM `HEMCO_Config.rc` to read 3D AEIC emissions every timestep to avoid differences upon restart
@@ -24,18 +94,6 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
2494
- Fixed GCHP refresh time for `CO2_WEEKLY` scale factors so updated daily
2595
- Fixed bug in GCHP GEOS-IT run directory using raw lat-lon fields on NASA discover cluster
2696

27-
## [14.5.1] - 2025-01-10
28-
### Added
29-
- Added Australian Hg emissions for 2000-2019 from MacFarlane et. al. [2022], plus corresponding mask file
30-
- Added comments in GEOS-Chem Classic `HISTORY.rc` template files advising users not to change the `BoundaryConditions.frequency` setting
31-
- Added `.zenodo.json` for auto-DOI generation upon version releases
32-
33-
### Fixed
34-
- Reverted CH4 livestock emissions to EDGAR v7 to avoid hotspots and to apply seasonality
35-
36-
### Removed
37-
- Removed unused RUNDIR settings for GCHP pressure units and scaling
38-
3997
## [14.5.1] - 2025-01-10
4098
### Added
4199
- Added allocate guards for arrays in `pressure_mod`
@@ -51,6 +109,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
51109
- Added Input_Opt logical for whether to reconstruct convective precipitation fluxes rather than use met-fields
52110
- Added to run directory creation a warning about convection discontinuity and bug if GEOS-FP meteorology is chosen
53111
- Added surface precipitation flux fields as inputs to GCHP
112+
- Added Australian Hg emissions for 2000-2019 from MacFarlane et. al. [2022], plus corresponding mask file
113+
- Added comments in GEOS-Chem Classic `HISTORY.rc` template files advising users not to change the `BoundaryConditions.frequency` setting
114+
- Added `.zenodo.json` for auto-DOI generation upon version releases
54115

55116
### Changed
56117
- Renamed `Emiss_Carbon_Gases` to `CO2_Production` in `carbon_gases_mod.F90`
@@ -83,10 +144,12 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
83144
- Fixed bug in GC-Classic OCS emissions where unit conversion of km2 to m2 occurred twice
84145
- Changed dimension of EmisOCS_Total from 3D to 2D since all emissions for all sectors are 2D
85146
- Added fixes to only apply archived PCO_CH4 field for carbon simulations with CO only
147+
- Reverted CH4 livestock emissions to EDGAR v7 to avoid hotspots and to apply seasonality
86148

87149
### Removed
88150
- Removed duplicate `WD_RetFactor` tag for HgClHO2 in `species_database.yml`
89151
- Removed error messages in HEMCO interface pointing users to HEMCO log
152+
- Removed unused RUNDIR settings for GCHP pressure units and scaling
90153

91154
## [14.5.0] - 2024-11-07
92155
### Added
@@ -181,7 +244,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
181244
- Added Cloud-J status output and error handling for it
182245

183246
### Changed
184-
- Alphabetically sort Complex SOA species into `geoschem_config.yml` in run directory creation
247+
- Alphabetically sort Complex SOA species into `geoschem_config.yml` in run directory creation
185248
- Use hard-coded years for met fields and BC files in `HEMCO_Config.rc` so they are not read hourly
186249
- Updated `run/CESM` with alphabetical sorting of species in `geoschem_config.yml`
187250
- Added clarifying comments in GCHP configuration files for several settings, particularly related to domain decomposition, mass fluxes, and stretched grid

GeosCore/aerosol_mod.F90

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,12 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, &
124124
!
125125
USE ErrCode_Mod
126126
USE ERROR_MOD
127-
#if !defined( MODEL_CESM )
127+
128+
#if !defined( MODEL_CESM ) && !defined( MODEL_BCC )
128129
USE HCO_State_GC_Mod, ONLY : HcoState
129130
USE HCO_Utilities_GC_Mod, ONLY : HCO_GC_EvalFld
130131
#endif
132+
131133
USE Input_Opt_Mod, ONLY : OptInput
132134
USE Species_Mod, ONLY : SpcConc
133135
USE State_Chm_Mod, ONLY : ChmState
@@ -280,13 +282,15 @@ SUBROUTINE AEROSOL_CONC( Input_Opt, State_Chm, State_Diag, &
280282
ENDIF
281283

282284
IF ( RC /= GC_SUCCESS ) RETURN
283-
#if !defined( MODEL_CESM )
285+
286+
#if !defined( MODEL_CESM ) && !defined( MODEL_BCC )
284287
CALL HCO_GC_EvalFld( Input_Opt, State_Grid, Trim(FieldName), State_Chm%OMOC, RC, FOUND=FND )
285288
#else
286289
FND = .True.
287290
RC = GC_SUCCESS
288291
#endif
289292

293+
290294
IF ( RC == GC_SUCCESS .AND. FND ) THEN
291295

292296
! Set OM/OC using spatially and seasonally varying data from

GeosCore/airs_ch4_mod.F90

Lines changed: 4 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, &
371371
USE State_Grid_Mod, ONLY : GrdState
372372
USE State_Met_Mod, ONLY : MetState
373373
USE Timers_Mod, ONLY : Timer_End, Timer_Start
374-
USE UnitConv_Mod
374+
USE UnitConv_Mod, ONLY : Check_Units, MOLES_SPECIES_PER_MOLES_DRY_AIR
375375
!
376376
! !INPUT PARAMETERS:
377377
!
@@ -517,33 +517,13 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, &
517517
print*, ' for hour range: ', GET_HOUR(), GET_HOUR()+1
518518
print*, ' found # AIRS observations: ', NOBS
519519

520-
! Halt diagnostics timer (so that unit conv can be timed separately)
521-
IF ( Input_Opt%useTimers ) THEN
522-
CALL Timer_End( "Diagnostics", RC )
523-
ENDIF
524-
525-
! Convert species units to [v/v] (mps, 6/12/2020)
526-
CALL Convert_Spc_Units( &
527-
Input_Opt = Input_Opt, &
528-
State_Chm = State_Chm, &
529-
State_Grid = State_Grid, &
530-
State_Met = State_Met, &
531-
mapping = State_Chm%Map_Advect, &
532-
new_units = MOLES_SPECIES_PER_MOLES_DRY_AIR, &
533-
previous_units = previous_units, &
534-
RC = RC )
535-
536-
IF ( RC /= GC_SUCCESS ) THEN
537-
ErrMsg = 'Unit conversion error (kg/kg dry -> v/v dry)'
520+
! Verify that incoming State_Chm%Species units are mol/mol dry air.
521+
IF ( .not. Check_Units( State_Chm, MOLES_SPECIES_PER_MOLES_DRY_AIR ) ) THEN
522+
ErrMsg = 'Not all species are in "mol/mol dry" units!'
538523
CALL GC_Error( ErrMsg, RC, ThisLoc )
539524
RETURN
540525
ENDIF
541526

542-
! Start diagnostics timer again
543-
IF ( Input_Opt%useTimers ) THEN
544-
CALL Timer_Start( "Diagnostics", RC )
545-
ENDIF
546-
547527
!! need to update this in order to do i/o with this loop parallel
548528
!! ! Now do a parallel loop for analyzing data
549529
!!$OMP PARALLEL DO
@@ -705,33 +685,6 @@ SUBROUTINE CALC_AIRS_CH4_FORCE( Input_Opt, State_Chm, State_Grid, &
705685
ENDDO ! NT
706686
!!$OMP END PARALLEL DO
707687

708-
! Halt diagnostics timer (so that unit conv can be timed separately)
709-
IF ( Input_Opt%useTimers ) THEN
710-
CALL Timer_End( "Diagnostics", RC )
711-
ENDIF
712-
713-
! Convert species units back to original unit (mps, 6/12/2020)
714-
CALL Convert_Spc_Units( &
715-
Input_Opt = Input_Opt, &
716-
State_Chm = State_Chm, &
717-
State_Grid = State_Grid, &
718-
State_Met = State_Met, &
719-
mapping = State_Chm%Map_Advect, &
720-
new_units = previous_units, &
721-
RC = RC )
722-
723-
! Trap errors
724-
IF ( RC /= GC_SUCCESS ) THEN
725-
ErrMsg = 'Unit conversion error'
726-
CALL GC_Error( ErrMsg, RC, ThisLoc )
727-
RETURN
728-
ENDIF
729-
730-
! Start diagnostics timer
731-
IF ( Input_Opt%useTimers ) THEN
732-
CALL Timer_Start( "Diagnostics", RC )
733-
ENDIF
734-
735688
283 FORMAT( I10,2x,I4,2x,I4,2x,F8.3,2x,F8.4,2x,I4,2x,I2,2x,I2,2x,I2, &
736689
2x,I2,2x,I2,2x,F12.3,2x,E12.6,2x,E12.6,2x,E12.6, &
737690
2x, E12.6,2x, E12.6,2x, F12.3, 2x,E12.6, 2x, E12.6, 2x, &

GeosCore/calc_met_mod.F90

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -336,12 +336,15 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, &
336336
! Set wet air pressures [hPa]
337337
! (lower edge, delta, centroid, and spatially-weighted mean)
338338
!=============================================================
339-
339+
#ifdef MODEL_BCC
340+
PEdge_Top=State_Met%PEDGE(I,J,L+1)
341+
#else
340342
! Pressure at bottom edge of grid box [hPa]
341343
State_Met%PEDGE(I,J,L) = GET_PEDGE(I,J,L)
342344

343345
! Pressure at top edge of grid box [hPa]
344346
PEdge_Top = GET_PEDGE(I,J,L+1)
347+
#endif
345348

346349
! Pressure at bottom edge of grid box [hPa](level State_Grid%NZ+1 only)
347350
IF ( L == State_Grid%NZ ) THEN
@@ -355,7 +358,9 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, &
355358
! ( PEDGE(L) + PEDGE(L+1) ) / 2. This represents the grid box
356359
! mass centroid pressure. Use in the ideal gas law yields
357360
! a local air density at the centroid.
361+
#if !defined (MODEL_BCC)
358362
State_Met%PMID(I,J,L) = GET_PCENTER( I, J, L )
363+
#endif
359364

360365
!=============================================================
361366
! Calculate water vapor saturation pressure [hPa]
@@ -483,8 +488,9 @@ SUBROUTINE AIRQNT( Input_Opt, State_Chm, State_Grid, State_Met, &
483488

484489
! Update dry pressure difference as calculated from the
485490
! dry surface pressure
491+
#if !defined (MODEL_BCC)
486492
State_Met%DELP_DRY(I,J,L) = GET_DELP_DRY(I,J,L)
487-
493+
#endif
488494
!==============================================================
489495
! Set mass of dry air in grid box [kg]
490496
!==============================================================

0 commit comments

Comments
 (0)