Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
2cb8c4c
Added flag usePreconCape
mmanyin Jun 12, 2023
bcc8a28
Added code to support usePreconCape in the Lightning LFR calculations
mmanyin Jun 12, 2023
46c4b9d
Added code to support ACHEM OCS coupled w/ GMI, but Benchmark G does …
mmanyin Jun 12, 2023
660bf6e
minor edits that are zero-diff for Bench G
mmanyin Oct 25, 2023
a0f3425
Made Lopez lightning the default, with attention to Lopez FlashFactor…
mmanyin Oct 27, 2023
4d9ca20
prc: check in modifications for GEOS Hunga Tonga runs
pcolarco Feb 5, 2024
1068d0a
prc: enforce OCS mechanism is turned on in ACHEM
pcolarco Apr 25, 2024
6896a7a
prc: updates for Hunga
pcolarco Apr 26, 2024
989c84a
added CARMA pfast parameterization
pcase13 Jun 11, 2024
7493a19
Merge pull request #275 from GEOS-ESM/carma_pfast_parameterization
pcase13 Jun 11, 2024
c347978
prc: add a working MIXED group example
pcolarco Jun 13, 2024
c32e2be
Added reff coupling for GMI<->CARMA and fixed CARMA bootstrapping
pcase13 Jun 17, 2024
5e0935d
Merge remote-tracking branch 'refs/remotes/origin/feature/pcolarco/CC…
pcase13 Jun 17, 2024
1c2290e
replaced debug message in CARMA so it doesnt print every timestep
pcase13 Jun 17, 2024
5ebf8e0
Made "null" vapor routine index -1, added option to various registries
pcase13 Jun 17, 2024
c2516cd
Made SO4Reff to SO4REFF for consistency
pcase13 Jun 18, 2024
56ad2ff
Reverting to a simpler version of GEOS_ChemGridComp for the PR
Nov 26, 2024
1713088
Rebase to get rid of QTOT from ChemEnv, etc.
Nov 26, 2024
895b17a
Updated Changelog
Dec 5, 2024
ae910d3
Capture the changes put in place for the Hunga experiments
mmanyin Jan 9, 2025
c04315f
CARMA dust_source is now simply a pointer provided by ExtData
mmanyin Jan 10, 2025
d881155
Merge branch 'develop' into mslong1/rrg+rad
sdrabenh Jan 16, 2025
b5c7f12
Capture the CI fix from develop
mmanyin Jan 16, 2025
6184a2b
Edit CHANGELOG to reflect updates from the HUNGA work
mmanyin Jan 17, 2025
131b718
Merge pull request #290 from GEOS-ESM/feature/mmanyin/add_HUNGA_edits
mmanyin Jan 21, 2025
8c3da5d
Initialize 'n' to zero for logic purposes
Jan 22, 2025
1b73777
Redo the O3 connectivity btw PCHEM & RRG. It's neede for photochem
Jan 22, 2025
b319c41
Swap location of ANALYSIS_OX_PROVIDER and individual RATs providers
Jan 22, 2025
eb98b1b
Move MAM, MATRIX, CARMA, GAAS, ACHEM to separate repos
mathomp4 Jan 23, 2025
730cdc0
Merge branch 'develop' into mslong1/rrg+rad
mathomp4 Jan 27, 2025
3ef1904
Merge branch 'mslong1/rrg+rad' into feature/mathomp4/split-chem-2025J…
mathomp4 Jan 27, 2025
6bb51ec
Fix up default OX
mathomp4 Jan 27, 2025
5d52d89
Fixes from Mike Manyin for guarding RRG and PCHEM
mathomp4 Jan 29, 2025
3923d43
Merge pull request #292 from GEOS-ESM/feature/mathomp4/split-chem-202…
mmanyin Feb 18, 2025
984d8c9
Edit CHANGELOG prior to release 1.16.0
mmanyin Feb 18, 2025
a07775c
Merge pull request #293 from GEOS-ESM/feature/mmanyin/edit_log_for_1.…
mmanyin Feb 18, 2025
c45a1d9
Merge branch 'main' into develop
mathomp4 Feb 19, 2025
87aae9f
Merge pull request #294 from GEOS-ESM/develop
mmanyin Feb 19, 2025
96d6257
Merge pull request #295 from GEOS-ESM/main
mathomp4 Feb 19, 2025
6aede67
Added option to compute LFC; refactored some terms needed for BUOYANCY
mmanyin Apr 16, 2025
3decbe4
In lightning module, took out notes on computing PK, PKE, THV, ZLE
mmanyin Apr 16, 2025
a9cea53
Renamed usePreconCape to useImportedCape in order to cover both GCM a…
mmanyin Apr 17, 2025
7c96989
Update CHANGELOG
mmanyin Apr 18, 2025
98a5fdb
Merge pull request #299 from GEOS-ESM/feature/mmanyin/lightning_update
mmanyin Apr 29, 2025
10e97c6
Updates to remove Python2 support
mathomp4 Jul 30, 2025
d8f7673
Merge pull request #301 from GEOS-ESM/feature/convert-to-f2py3
mmanyin Aug 1, 2025
855bf03
ChemEnv now updates the precip exports in Run1 (as well as Run2)
mmanyin Aug 29, 2025
4ba4891
Merge pull request #303 from GEOS-ESM/feature/mmanyin/precip_run1
mmanyin Sep 17, 2025
251f7ef
Edit CHANGELOG prior to release
mmanyin Dec 16, 2025
dc035d8
Merge pull request #304 from GEOS-ESM/feature/mmanyin/edit_log_for_16.1
mmanyin Dec 16, 2025
07eac88
Update CI in Chem GC
mathomp4 Dec 17, 2025
144e4fd
Fix up CI. Part 2
mathomp4 Dec 17, 2025
ebf93ee
Merge pull request #306 from GEOS-ESM/feature/chem-ci-update
mathomp4 Dec 17, 2025
accc795
Merge branch 'develop' into feature/sdrabenh/gcm_v12
mathomp4 Jan 7, 2026
be76d2a
Fix up CI
mathomp4 Jan 16, 2026
3b2b9ea
Add fail-fast false
mathomp4 Jan 16, 2026
7c79786
Add fail-fast false in right place
mathomp4 Jan 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
version: 2.1

# Anchors in case we need to override the defaults from the orb
#baselibs_version: &baselibs_version v7.27.0
#bcs_version: &bcs_version v11.6.0
#baselibs_version: &baselibs_version v8.24.0
#bcs_version: &bcs_version v12.0.0

orbs:
ci: geos-esm/circleci-tools@4
ci: geos-esm/circleci-tools@5

workflows:
build-test:
Expand All @@ -21,7 +21,10 @@ workflows:
#baselibs_version: *baselibs_version
repo: GEOSgcm
checkout_fixture: true
mepodevelop: true
# V12 code uses a special branch for now.
fixture_branch: feature/sdrabenh/gcm_v12
# We comment out this as it will "undo" the fixture_branch
#mepodevelop: true
persist_workspace: true # Needs to be true to run fv3/gcm experiment, costs extra

# Run AMIP GCM (1 hour, no ExtData)
Expand All @@ -45,7 +48,7 @@ workflows:
- docker-hub-creds
matrix:
parameters:
compiler: [gfortran, ifort]
compiler: [ifort]
requires:
- build-GEOSgcm-on-<< matrix.compiler >>
repo: GEOSgcm
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/enforce-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
with:
mode: minimum
count: 1
labels: "0 diff,0 diff trivial,Non 0-diff,0 diff structural,0-diff trivial,Not 0-diff,0-diff,automatic,0-diff uncoupled"
labels: "0 diff,0 diff trivial,Non 0-diff,0 diff structural,0-diff trivial,Not 0-diff,0-diff,automatic,0-diff uncoupled,github_actions"
add_comment: true
message: "This PR is being prevented from merging because you have not added one of our required labels: {{ provided }}. Please add one so that the PR can be merged."

Expand Down
8 changes: 6 additions & 2 deletions .github/workflows/validate_yaml_files.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,11 @@ jobs:
validate-YAML:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout repo
uses: actions/checkout@v6
with:
fetch-depth: 0
filter: blob:none
- id: yaml-lint
name: yaml-lint
uses: ibiqlik/action-yamllint@v3
Expand All @@ -24,7 +28,7 @@ jobs:
format: colored
config_file: .yamllint.yml

- uses: actions/upload-artifact@v4
- uses: actions/upload-artifact@v6
if: always()
with:
name: yamllint-logfile
Expand Down
40 changes: 40 additions & 0 deletions .github/workflows/workflow.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Build Tests

on:
pull_request:
types: [opened, synchronize, reopened]
# Do not run if the only files changed cannot affect the build
paths-ignore:
- "**.md"
- "**.pro"
- "**.sh"
- "**.perl"
- ".github/CODEOWNERS"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}

jobs:
build_gcm:
strategy:
matrix:
compiler: [ifort, gfortran-14, gfortran-15]
build-type: [Debug]
fail-fast: false
uses: GEOS-ESM/CI-workflows/.github/workflows/geosgcm_build_tests.yml@project/geosgcm
with:
compiler: ${{ matrix.compiler }}
cmake-build-type: ${{ matrix.build-type }}
fixture-repo: GEOS-ESM/GEOSgcm
fixture-ref: feature/sdrabenh/gcm_v12

spack_build:
uses: GEOS-ESM/CI-workflows/.github/workflows/spack_gcc_build.yml@project/geosgcm
secrets:
BUILDCACHE_USERNAME: ${{ secrets.BUILDCACHE_USERNAME }}
BUILDCACHE_TOKEN: ${{ secrets.BUILDCACHE_TOKEN }}
with:
fixture-repo: GEOS-ESM/GEOSgcm
fixture-ref: feature/sdrabenh/gcm_v12

17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Fixed
### Deprecated

## [1.16.1] - 2025-12-16

### Added

- Added the capability to compute LFC in Lightning module, needed for CTM

### Changed

- Slight refactoring of LOPEZ lightning scheme, minor numerical difference
- Renamed lightning option 'usePreconCape' to 'useImportedCape' in order to cover both GCM and CTM
- Moved from `f2py2` to `f2py3` to enable removal of Python 2 support
- Updated CI

### Fixed

- ChemEnv now updates the precip exports (total, conv, non-conv) as part of Run1 (not just Run2).


## [1.16.0 - 2025-02-18]

Expand Down
8 changes: 7 additions & 1 deletion ChemEnv.rc
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,10 @@ lightNOampFactor: 1.07
numberNOperFlash: 1.50e+26
minDeepCloudTop: 7.0

usePreconCape: TRUE
# originally called usePreconCape
# IF TRUE: CHEM should use the IMPORT state for CAPE, INHB, BYNCY, LFC
# for GMI, imports come from MOIST and reflect the state prior to convective transport
# for CTM, imports come from ExtData or CTMenv (currently these fields are not supported)
# IF FALSE: compute CAPE, INHB, BYNCY, LFC in the CHEM module
use the FALSE setting for CTM
useImportedCape: TRUE
61 changes: 40 additions & 21 deletions GEOS_ChemEnvGridComp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ module GEOS_ChemEnvGridCompMod
real :: FIT_flashFactor
real :: HEMCO_flashFactor
real :: LOPEZ_flashFactor
logical :: usePreconCape ! use CAPE, INHB and BYNCY from MOIST
logical :: useImportedCape ! use CAPE, INHB and BYNCY from Import State

! May change during the course of the run:
integer :: year_for_ratio = 0
Expand Down Expand Up @@ -777,7 +777,7 @@ subroutine Initialize_ ( GC, impChem, expChem, clock, RC )
numberNOperFlash, &
MOIST_flashFactor, FIT_flashFactor, &
HEMCO_flashFactor, LOPEZ_flashFactor, &
usePreconCape, &
useImportedCape, &
__RC__ )

IF(MAPL_AM_I_ROOT()) THEN
Expand All @@ -786,7 +786,7 @@ subroutine Initialize_ ( GC, impChem, expChem, clock, RC )
if ( flash_source_enum == FLASH_SOURCE_HEMCO ) PRINT*,'HEMCO_flashFactor is ', HEMCO_flashFactor
if ( flash_source_enum == FLASH_SOURCE_LOPEZ ) PRINT*,'LOPEZ_flashFactor is ', LOPEZ_flashFactor

PRINT*,'usePreconCape = ', usePreconCape
PRINT*,'useImportedCape = ', useImportedCape
ENDIF

RETURN_(ESMF_SUCCESS)
Expand Down Expand Up @@ -849,16 +849,18 @@ subroutine Run1 ( GC, IMPORT, EXPORT, CLOCK, RC )
real, pointer, dimension(:,:) :: TS => null()
real, pointer, dimension(:,:) :: FROCEAN => null()
real, pointer, dimension(:,:) :: FRLAND => null()
real, pointer, dimension(:,:) :: CN_PRCP => null()
real, pointer, dimension(:,:) :: PHIS => null()
real, pointer, dimension(:,:,:) :: CNV_MFC => null()
real, pointer, dimension(:,:,:) :: CNV_MFD => null()
real, pointer, dimension(:,:,:) :: PFI_CN => null()
real, pointer, dimension(:,:,:) :: CNV_QC => null()

real, pointer, dimension(:,:) :: CAPE_PRECON => null()
real, pointer, dimension(:,:) :: INHB_PRECON => null()
real, pointer, dimension(:,:,:) :: BYNCY_PRECON => null()
real, pointer, dimension(:,:) :: CAPE_IMPORT => null()
real, pointer, dimension(:,:) :: INHB_IMPORT => null()
real, pointer, dimension(:,:,:) :: BYNCY_IMPORT => null()

real, pointer, dimension(:,:) :: pr_total => null()
real, pointer, dimension(:,:) :: pr_conv => null()

! Exports
real, pointer, dimension(:,:,:) :: delp => null()
Expand All @@ -867,6 +869,10 @@ subroutine Run1 ( GC, IMPORT, EXPORT, CLOCK, RC )
real, pointer, dimension(:,:) :: CAPE => null()
real*4, pointer, dimension(:,:,:) :: LIGHT_NO_PROD => null()

real, pointer, dimension(:,:) :: tprec => null()
real, pointer, dimension(:,:) :: cn_prcp => null()
real, pointer, dimension(:,:) :: ncn_prcp => null()

!=============================================================================

integer :: k, k0
Expand Down Expand Up @@ -941,6 +947,21 @@ subroutine Run1 ( GC, IMPORT, EXPORT, CLOCK, RC )
end do
end if

! Import total precip from SURFACE (either model or observed precip)
! When running CTM, use fields such that (total - convective) >= 0.0
! Export total, convective and non-convective precipitation.
! --------------------------------------------------------------------
call MAPL_GetPointer ( EXPORT, tprec, 'TPREC', __RC__ )
call MAPL_GetPointer ( EXPORT, cn_prcp, 'CN_PRCP', __RC__ )
call MAPL_GetPointer ( EXPORT, ncn_prcp, 'NCN_PRCP', __RC__ )

call MAPL_GetPointer ( IMPORT, pr_total, 'PRECTOT', __RC__ )
call MAPL_GetPointer ( IMPORT, pr_conv, 'CN_PRCP', __RC__ )

if (associated( tprec)) tprec = pr_total
if (associated( cn_prcp)) cn_prcp = pr_conv
if (associated(ncn_prcp)) ncn_prcp = (pr_total - pr_conv)


!------------------------------------------------
! Flash Rate (LFR) for Lighting Parameterization
Expand All @@ -959,7 +980,6 @@ subroutine Run1 ( GC, IMPORT, EXPORT, CLOCK, RC )

call MAPL_GetPointer ( IMPORT, CNV_MFC, 'CNV_MFC', __RC__ )
call MAPL_GetPointer ( IMPORT, CNV_MFD, 'CNV_MFD', __RC__ )
call MAPL_GetPointer ( IMPORT, CN_PRCP, 'CN_PRCP', __RC__ )
call MAPL_GetPointer ( IMPORT, PHIS, 'PHIS', __RC__ )
call MAPL_GetPointer ( IMPORT, PFI_CN, 'PFI_CN', __RC__ )

Expand All @@ -975,9 +995,9 @@ subroutine Run1 ( GC, IMPORT, EXPORT, CLOCK, RC )
call MAPL_GetPointer ( IMPORT, CNV_QC, 'CNV_QC', __RC__ )
call MAPL_GetPointer ( IMPORT, cellArea, 'AREA', __RC__ )

call MAPL_GetPointer ( IMPORT, CAPE_PRECON, 'CAPE', __RC__ )
call MAPL_GetPointer ( IMPORT, INHB_PRECON, 'INHB', __RC__ )
call MAPL_GetPointer ( IMPORT, BYNCY_PRECON, 'BYNCY', __RC__ )
call MAPL_GetPointer ( IMPORT, CAPE_IMPORT, 'CAPE', __RC__ )
call MAPL_GetPointer ( IMPORT, INHB_IMPORT, 'INHB', __RC__ )
call MAPL_GetPointer ( IMPORT, BYNCY_IMPORT, 'BYNCY', __RC__ )

call MAPL_GetPointer ( IMPORT, ZLFC, 'ZLFC', __RC__ )
call MAPL_GetPointer ( IMPORT, ZLCL, 'ZLCL', __RC__ )
Expand All @@ -991,7 +1011,7 @@ subroutine Run1 ( GC, IMPORT, EXPORT, CLOCK, RC )
LIGHT_NO_PROD(:,:,:) = REAL(0)
end if

! print*,'ENV MOIST CN_PRCP ', MINVAL(CN_PRCP), MAXVAL(CN_PRCP)
! print*,'ENV MOIST CN_PRCP ', MINVAL(pr_conv), MAXVAL(pr_conv)
! print*,'ENV MOIST FROCEAN ', MINVAL(FROCEAN), MAXVAL(FROCEAN)
! print*,'ENV MOIST TS ', MINVAL(TS ), MAXVAL(TS )
! print*,'ENV MOIST CNV_MFC ', MINVAL(CNV_MFC), MAXVAL(CNV_MFC)
Expand All @@ -1005,12 +1025,12 @@ subroutine Run1 ( GC, IMPORT, EXPORT, CLOCK, RC )

call getLightning ( GC, ggState, CLOCK, &
flash_source_enum, ratioGlobalLight, DT, &
LONSLOCAL, LATSLOCAL, CN_PRCP, FRLAND, FROCEAN, LWI, &
LONSLOCAL, LATSLOCAL, pr_conv, FRLAND, FROCEAN, LWI, &
PBLH, mcor, cellArea, MIDLAT_ADJ, RATIO_LOCAL, &
TS, CNV_MFC, CNV_QC, T, TH, PFI_CN, PLE, Q, ZLE, &
minDeepCloudTop, lightNOampFactor, numberNOperFlash, &
MOIST_flashFactor, FIT_flashFactor, HEMCO_flashFactor, LOPEZ_flashFactor, &
CNV_MFD, usePreconCape, CAPE_PRECON, INHB_PRECON, BYNCY_PRECON, &
CNV_MFD, useImportedCape, CAPE_IMPORT, INHB_IMPORT, BYNCY_IMPORT, &
CAPE, BYNCY, ZLFC, ZLCL, LFR, LIGHT_NO_PROD, PHIS, &
__RC__)

Expand Down Expand Up @@ -1133,18 +1153,17 @@ subroutine Run2 ( GC, IMPORT, EXPORT, CLOCK, RC )
end do
end if

! Import total precip from SURFACE (either model or observed precip)
! Export total, convective and non-convective precipitation.
!--------------------------------------------------------------
! Import total precip from SURFACE (either model or observed precip)
! When running CTM, use fields such that (total - convective) >= 0.0
! Export total, convective and non-convective precipitation.
! --------------------------------------------------------------------
call MAPL_GetPointer ( EXPORT, tprec, 'TPREC', __RC__ )
call MAPL_GetPointer ( EXPORT, cn_prcp, 'CN_PRCP', __RC__ )
call MAPL_GetPointer ( EXPORT, ncn_prcp, 'NCN_PRCP', __RC__ )


call MAPL_GetPointer ( IMPORT, pr_total, 'PRECTOT', __RC__ )
call MAPL_GetPointer ( IMPORT, pr_conv, 'CN_PRCP', __RC__ )
call MAPL_GetPointer ( IMPORT, pr_total, 'PRECTOT', __RC__ )
call MAPL_GetPointer ( IMPORT, pr_conv, 'CN_PRCP', __RC__ )


if (associated( tprec)) tprec = pr_total
if (associated( cn_prcp)) cn_prcp = pr_conv
if (associated(ncn_prcp)) ncn_prcp = (pr_total - pr_conv)
Expand Down
Loading