Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
d6e0bf6
v2: Support for MOM6 as of 2024-Nov-27
mathomp4 Jan 27, 2025
10c6b96
Update CI and Github Actions
mathomp4 Jan 27, 2025
03dbeda
fixed a bug computing FRZMLT
zhaobin74 Feb 14, 2025
cab5c00
Merge pull request #83 from GEOS-ESM/feature/mathomp4/v2-mom-2024Nov2…
sinakhani Feb 21, 2025
2b53f5c
Merge branch 'release/v2' into bugfix/zhaobin74/fixing-computation-fr…
mathomp4 Feb 21, 2025
1c8c762
Merge pull request #86 from GEOS-ESM/bugfix/zhaobin74/fixing-computat…
sinakhani Feb 25, 2025
0c5411f
Added export for MOM6 T, S and DH fields to be imported by NOBM
mfmehari Mar 6, 2025
482a3ba
Merge pull request #92 from GEOS-ESM/feature/mfmehari/Export_MOM6_3D_…
mathomp4 Mar 7, 2025
dfe0ac3
mit C180 LLC270 config
afahadabdullah Apr 11, 2025
d76a04e
Merge branch 'develop' into feature/mitnewconfig
afahadabdullah Apr 11, 2025
4cd6034
get improve runoff code from v2
zhaobin74 Jul 11, 2025
e05ec70
Merge branch 'develop' into feature/mitnewconfig
mathomp4 Aug 26, 2025
0a3c571
v3: Set MEKE_POSITIVE to True
mathomp4 Sep 10, 2025
106c796
Correcting the imported stress magnitude from MOM6_GEOSPlug into MOM6
sinakhani Sep 12, 2025
77cfff2
Update label enforcer
mathomp4 Sep 15, 2025
a39dc74
Make three separate actions
mathomp4 Sep 15, 2025
52e473f
Merge pull request #115 from GEOS-ESM/feature/develop/skhani
mathomp4 Nov 21, 2025
1e146ae
Merge branch 'develop' into feature/v3-meke-positive
mathomp4 Nov 21, 2025
6256fcf
Merge branch 'develop' into feature/mitnewconfig
mathomp4 Nov 21, 2025
8e2337d
Merge branch 'develop' into feature/zhaobin74/improve-runoff-distribu…
mathomp4 Nov 21, 2025
f5a81a7
Fix for ifx
mathomp4 Jan 14, 2026
7ccd782
Merge pull request #119 from GEOS-ESM/feature/v12-enable-ifx-ci
mathomp4 Jan 15, 2026
54e8eb3
Merge branch 'release/3.7' into develop
mathomp4 Jan 15, 2026
4fc140d
Merge branch 'develop' into feature/v3-meke-positive
mathomp4 Feb 12, 2026
d369de8
Merge pull request #114 from GEOS-ESM/feature/v3-meke-positive
mathomp4 Feb 12, 2026
be29ad9
Merge branch 'develop' into feature/mitnewconfig
mathomp4 Feb 12, 2026
c1a31e4
Merge pull request #97 from GEOS-ESM/feature/mitnewconfig
mathomp4 Feb 12, 2026
77157e6
Merge branch 'develop' into feature/zhaobin74/improve-runoff-distribu…
mathomp4 Feb 12, 2026
03978e3
Merge pull request #107 from GEOS-ESM/feature/zhaobin74/improve-runof…
mathomp4 Feb 12, 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
2 changes: 2 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
version: 2.1

# Anchors in case we need to override the defaults from the orb

#baselibs_version: &baselibs_version v8.5.0
#bcs_version: &bcs_version v12.0.0

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


workflows:
build-test:
jobs:
Expand Down
32 changes: 29 additions & 3 deletions .github/workflows/enforce-labels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
types: [opened, labeled, unlabeled, edited, synchronize]

jobs:
require-label:
require-coupled-label:
runs-on: ubuntu-latest
steps:
- uses: mheap/github-action-required-labels@v5
Expand All @@ -14,9 +14,35 @@ 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,github_actions"
labels: "0 diff coupled,non 0-diff coupled"
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."
message: "This PR is being prevented from merging because you have not added one of our required labels to say if they are 0-diff or non-0-diff for coupled runs: {{ provided }}. Please add so that the PR can be merged."

require-dataatm-label:
runs-on: ubuntu-latest
steps:
- uses: mheap/github-action-required-labels@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
mode: minimum
count: 1
labels: "0 diff dataatm,non 0-diff dataatm"
add_comment: true
message: "This PR is being prevented from merging because you have not added one of our required labels to say if they are 0-diff or non-0-diff for dataatm runs: {{ provided }}. Please add so that the PR can be merged."

require-dataocean-label:
runs-on: ubuntu-latest
steps:
- uses: mheap/github-action-required-labels@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
mode: minimum
count: 1
labels: "0 diff dataocean,non 0-diff dataocean"
add_comment: true
message: "This PR is being prevented from merging because you have not added one of our required labels to say if they are 0-diff or non-0-diff for dataocean runs: {{ provided }}. Please add so that the PR can be merged."

blocking-label:
runs-on: ubuntu-latest
Expand Down
39 changes: 33 additions & 6 deletions GEOS_OceanGridComp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ module GEOS_OceanGridCompMod
integer :: OCN
integer :: OCNd
logical :: DUAL_OCEAN
logical :: DO_DATA_ATM4OCN

contains

Expand Down Expand Up @@ -101,6 +102,8 @@ subroutine SetServices ( GC, RC )
call MAPL_GetResource (MAPL, DO_DATASEA, Label="USE_DATASEA:" , DEFAULT=1, _RC)
call MAPL_GetResource (MAPL, OrphanDepth, Label="OGCM_TOP_LAYER:" , DEFAULT=10.0, _RC)

call MAPL_GetResource (MAPL, DO_DATA_ATM4OCN, Label="USE_DATA_ATM4OCN:", DEFAULT=.FALSE., _RC)

if(DO_DATASEA/=0) then
OCEAN_NAME="DATASEA"
OCN = MAPL_AddChild(GC, NAME=OCEAN_NAME, SS=DataSeaSetServices, _RC)
Expand Down Expand Up @@ -188,11 +191,11 @@ subroutine SetServices ( GC, RC )

if(DO_DATASEA==0) then
call MAPL_TerminateImport ( GC, SHORT_NAME= &
[character(len=9) :: 'TAUX ','TAUY ', &
'PENUVR','PENPAR','PENUVF','PENPAF', 'DRNIR', 'DFNIR', &
'DISCHARGE', 'LWFLX', 'SHFLX', 'QFLUX', 'RAIN', 'SNOW', &
'SFLX','SWHEAT'], & ! do not terminate import of PEN_OCN since it is not used in the `plug'
CHILD=OCN, _RC)
[character(len=9) :: 'TAUX ','TAUY ', &
'PENUVR','PENPAR','PENUVF','PENPAF', 'DRNIR', 'DFNIR', &
'DISCHARGE','CALVING','LWFLX', 'SHFLX', 'QFLUX', 'RAIN', 'SNOW', &
'SFLX','SWHEAT'], & ! do not terminate import of PEN_OCN since it is not used in the `plug'
CHILD=OCN, _RC)
end if

! Set the Initialize, Run, Finalize entry points
Expand Down Expand Up @@ -421,6 +424,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
real, pointer :: DFNIRi(:,:)
real, pointer :: HEATi(:,:,:)
real, pointer :: DISCHARGEi(:,:)
real, pointer :: CALVINGi(:,:)
real, pointer :: LWFLXi(:,:)
real, pointer :: SHFLXi(:,:)
real, pointer :: QFLUXi(:,:)
Expand All @@ -446,6 +450,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
real, pointer :: HEATe (:,:,:)
real, pointer :: FROCEANe (:,:)
real, pointer :: DISCHARGEe(:,:)
real, pointer :: CALVINGe(:,:)
real, pointer :: LWFLXe(:,:)
real, pointer :: SWFLXe(:,:)
real, pointer :: SHFLXe(:,:)
Expand All @@ -467,6 +472,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
real, pointer :: DFNIR(:,:)
real, pointer :: HEAT(:,:,:)
real, pointer :: DISCHARGE(:,:)
real, pointer :: CALVING(:,:)
real, pointer :: LWFLX(:,:)
real, pointer :: SHFLX(:,:)
real, pointer :: QFLUX(:,:)
Expand Down Expand Up @@ -620,6 +626,10 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
call MAPL_GetPointer(IMPORT, FRESH, 'FRESH' , _RC)
call MAPL_GetPointer(IMPORT, FSALT, 'FSALT' , _RC)

if(DO_DATA_ATM4OCN) then
call MAPL_GetPointer(IMPORT, CALVINGi, 'CALVING', _RC)
endif

! Get pointers from ImExState
!----------------------------
if(DO_DATASEA==0) then
Expand All @@ -633,6 +643,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
call MAPL_GetPointer(GIM(OCN), DFNIR, 'DFNIR' , _RC)
call MAPL_GetPointer(GIM(OCN), HEAT, 'SWHEAT', _RC)
call MAPL_GetPointer(GIM(OCN), DISCHARGE, 'DISCHARGE', _RC)
call MAPL_GetPointer(GIM(OCN), CALVING, 'CALVING', _RC)
call MAPL_GetPointer(GIM(OCN), LWFLX, 'LWFLX' , _RC)
call MAPL_GetPointer(GIM(OCN), SHFLX, 'SHFLX' , _RC)
call MAPL_GetPointer(GIM(OCN), QFLUX, 'QFLUX' , _RC)
Expand Down Expand Up @@ -681,6 +692,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
call MAPL_GetPointer(EXPORT, TAUYe, 'TAUY' , _RC)
call MAPL_GetPointer(EXPORT, HEATe, 'SWHEAT' , _RC)
call MAPL_GetPointer(EXPORT, DISCHARGEe, 'DISCHARGE', _RC)
call MAPL_GetPointer(EXPORT, CALVINGe, 'CALVING', _RC)
call MAPL_GetPointer(EXPORT, LWFLXe, 'LWFLX' , _RC)
call MAPL_GetPointer(EXPORT, SWFLXe, 'SWFLX' , _RC)
call MAPL_GetPointer(EXPORT, SHFLXe, 'SHFLX' , _RC)
Expand All @@ -690,6 +702,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
call MAPL_GetPointer(EXPORT, SFLXe, 'SFLX' , _RC)
call MAPL_GetPointer(EXPORT, PEN_OCNe, 'PEN_OCN', _RC)


if(associated(FROCEANe)) FROCEANe = FROCEAN

! Allocate space for temporary arrays
Expand Down Expand Up @@ -720,7 +733,20 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
PENPAF = PENPAFi * WGHT
DRNIR = DRNIRi * WGHT
DFNIR = DFNIRi * WGHT
DISCHARGE = DISCHARGEi * WGHT
if(DO_DATA_ATM4OCN) then
DISCHARGE = DISCHARGEi
CALVING = CALVINGi
! may not be needed
where(DISCHARGE < 0.0)
DISCHARGE = 0.0
endwhere
where(CALVING < 0.0)
CALVING = 0.0
endwhere
else
DISCHARGE = DISCHARGEi * WGHT
CALVING = 0.0
endif
LWFLX = LWFLXi * WGHT
QFLUX = QFLUXi * WGHT
SHFLX = (SHFLXi-FHOCN) * WGHT
Expand Down Expand Up @@ -753,6 +779,7 @@ subroutine Run ( GC, IMPORT, EXPORT, CLOCK, RC )
if (associated(TAUXe)) TAUXe = TAUX
if (associated(TAUYe)) TAUYe = TAUY
if (associated(DISCHARGEe)) DISCHARGEe = DISCHARGE
if (associated(CALVINGe)) CALVINGe = CALVING
if (associated(LWFLXe)) LWFLXe = LWFLX
if (associated(SWFLXe)) SWFLXe = PENUVR+PENPAR+PENUVF+PENPAF+DRNIR+DFNIR
if (associated(SHFLXe)) SHFLXe = SHFLX
Expand Down
2 changes: 2 additions & 0 deletions GEOS_Ocean_StateSpecs.rc
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ DRNIR | W m-2 | xy | N |
DFNIR | W m-2 | xy | N | | | net_surface_downwelling_nir_diffuse_flux
SWHEAT | W m-2 | xyz | C | | | solar_heating_rate
DISCHARGE | kg m-2 s-1 | xy | N | | | river_discharge_at_ocean_points
CALVING | kg m-2 s-1 | xy | N | DO_DATA_ATM4OCN | | ice_calving_at_ocean_points_from_datm
TR | 1 | xyz | C | trim(OCEAN_NAME) == 'MOM' | MAPL_BundleItem | tracer_mixing_ratios
TRFLUX | X | xy | N | trim(OCEAN_NAME) == 'MOM' | MAPL_BundleItem | surface_fluxes_of_tracers
LWFLX | W m-2 | xy | N | | | surface_net_downward_longwave_flux
Expand Down Expand Up @@ -53,6 +54,7 @@ TAUY | N m-2 | xy | N |
SWHEAT | W m-2 | xyz | C | | solar_heating_rate
RFLUX | W m-2 | xy | N | | downward_radiative_heat_flux_at_ocean_bottom
DISCHARGE | kg m-2 s-1 | xy | N | | river_discharge_at_ocean_points
CALVING | kg m-2 s-1 | xy | N | | ice_calving_at_ocean_points
FROCEAN | 1 | xy | N | | fraction_of_gridbox_covered_by_ocean
LWFLX | W m-2 | xy | N | | surface_net_downward_longwave_flux
SWFLX | W m-2 | xy | N | | surface_net_downward_shortwave_flux
Expand Down
156 changes: 156 additions & 0 deletions MIT_GEOS5PlugMod/configs/c180_llc270_01/code/CPP_EEOPTIONS.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
#ifndef _CPP_EEOPTIONS_H_
#define _CPP_EEOPTIONS_H_

CBOP
C !ROUTINE: CPP_EEOPTIONS.h
C !INTERFACE:
C include "CPP_EEOPTIONS.h"
C
C !DESCRIPTION:
C *==========================================================*
C | CPP\_EEOPTIONS.h |
C *==========================================================*
C | C preprocessor "execution environment" supporting |
C | flags. Use this file to set flags controlling the |
C | execution environment in which a model runs - as opposed |
C | to the dynamical problem the model solves. |
C | Note: Many options are implemented with both compile time|
C | and run-time switches. This allows options to be |
C | removed altogether, made optional at run-time or |
C | to be permanently enabled. This convention helps |
C | with the data-dependence analysis performed by the |
C | adjoint model compiler. This data dependency |
C | analysis can be upset by runtime switches that it |
C | is unable to recoginise as being fixed for the |
C | duration of an integration. |
C | A reasonable way to use these flags is to |
C | set all options as selectable at runtime but then |
C | once an experimental configuration has been |
C | identified, rebuild the code with the appropriate |
C | options set at compile time. |
C *==========================================================*
CEOP

C In general the following convention applies:
C ALLOW - indicates an feature will be included but it may
C CAN have a run-time flag to allow it to be switched
C on and off.
C If ALLOW or CAN directives are "undef'd" this generally
C means that the feature will not be available i.e. it
C will not be included in the compiled code and so no
C run-time option to use the feature will be available.
C
C ALWAYS - indicates the choice will be fixed at compile time
C so no run-time option will be present

C=== Macro related options ===
C-- Control storage of floating point operands
C On many systems it improves performance only to use
C 8-byte precision for time stepped variables.
C Constant in time terms ( geometric factors etc.. )
C can use 4-byte precision, reducing memory utilisation and
C boosting performance because of a smaller working set size.
C However, on vector CRAY systems this degrades performance.
C Enable to switch REAL4_IS_SLOW from genmake2 (with LET_RS_BE_REAL4):
#ifdef LET_RS_BE_REAL4
#undef REAL4_IS_SLOW
#else /* LET_RS_BE_REAL4 */
#define REAL4_IS_SLOW
#endif /* LET_RS_BE_REAL4 */

C-- Control use of "double" precision constants.
C Use D0 where it means REAL*8 but not where it means REAL*16
#define D0 d0

C=== IO related options ===
C-- Flag used to indicate whether Fortran formatted write
C and read are threadsafe. On SGI the routines can be thread
C safe, on Sun it is not possible - if you are unsure then
C undef this option.
#undef FMTFTN_IO_THREAD_SAFE

C-- Flag used to indicate whether Binary write to Local file (i.e.,
C a different file for each tile) and read are thread-safe.
#undef LOCBIN_IO_THREAD_SAFE

C-- Flag to turn off the writing of error message to ioUnit zero
#undef DISABLE_WRITE_TO_UNIT_ZERO

C-- Alternative formulation of BYTESWAP, faster than
C compiler flag -byteswapio on the Altix.
#undef FAST_BYTESWAP

C-- Flag to turn on old default of opening scratch files with the
C STATUS='SCRATCH' option. This method, while perfectly FORTRAN-standard,
C caused filename conflicts on some multi-node/multi-processor platforms
C in the past and has been replace by something (hopefully) more robust.
#undef USE_FORTRAN_SCRATCH_FILES

C-- Flag defined for eeboot_minimal.F, eeset_parms.F and open_copy_data_file.F
C to write STDOUT, STDERR and scratch files from process 0 only.
C WARNING: to use only when absolutely confident that the setup is working
C since any message (error/warning/print) from any proc <> 0 will be lost.
#undef SINGLE_DISK_IO

C=== MPI, EXCH and GLOBAL_SUM related options ===
C-- Flag turns off MPI_SEND ready_to_receive polling in the
C gather_* subroutines to speed up integrations.
#undef DISABLE_MPI_READY_TO_RECEIVE

C-- Control MPI based parallel processing
CXXX We no longer select the use of MPI via this file (CPP_EEOPTIONS.h)
CXXX To use MPI, use an appropriate genmake2 options file or use
CXXX genmake2 -mpi .
CXXX #undef ALLOW_USE_MPI

C-- Control use of communication that might overlap computation.
C Under MPI selects/deselects "non-blocking" sends and receives.
#undef ALLOW_ASYNC_COMMUNICATION
#undef ALWAYS_USE_ASYNC_COMMUNICATION
C-- Control use of communication that is atomic to computation.
C Under MPI selects/deselects "blocking" sends and receives.
#define ALLOW_SYNC_COMMUNICATION
#undef ALWAYS_USE_SYNC_COMMUNICATION

C-- Control XY periodicity in processor to grid mappings
C Note: Model code does not need to know whether a domain is
C periodic because it has overlap regions for every box.
C Model assume that these values have been
C filled in some way.
#undef ALWAYS_PREVENT_X_PERIODICITY
#undef ALWAYS_PREVENT_Y_PERIODICITY
#define CAN_PREVENT_X_PERIODICITY
#define CAN_PREVENT_Y_PERIODICITY

C-- disconnect tiles (no exchange between tiles, just fill-in edges
C assuming locally periodic subdomain)
#undef DISCONNECTED_TILES

C-- Always cumulate tile local-sum in the same order by applying MPI allreduce
C to array of tiles ; can get slower with large number of tiles (big set-up)
#define GLOBAL_SUM_ORDER_TILES

C-- Alternative way of doing global sum without MPI allreduce call
C but instead, explicit MPI send & recv calls. Expected to be slower.
#undef GLOBAL_SUM_SEND_RECV

C-- Alternative way of doing global sum on a single CPU
C to eliminate tiling-dependent roundoff errors. Note: This is slow.
#undef CG2D_SINGLECPU_SUM

C=== Other options (to add/remove pieces of code) ===
C-- Flag to turn on checking for errors from all threads and procs
C (calling S/R STOP_IF_ERROR) before stopping.
#define USE_ERROR_STOP

C-- Control use of communication with other component:
C allow to import and export from/to Coupler interface.
#undef COMPONENT_MODULE

C-- Activate some pieces of code for coupling to GEOS AGCM
#define HACK_FOR_GMAO_CPL

C=== And define Macros ===
#include "CPP_EEMACROS.h"

#endif /* _CPP_EEOPTIONS_H_ */
Loading