Skip to content

Commit

Permalink
Merge pull request #70 from GEOS-ESM/develop
Browse files Browse the repository at this point in the history
GitFlow: merge develop into main for release
  • Loading branch information
mathomp4 authored May 29, 2024
2 parents fb3d3f1 + 605e5a8 commit b91b5ec
Show file tree
Hide file tree
Showing 45 changed files with 11,163 additions and 0 deletions.
156 changes: 156 additions & 0 deletions MIT_GEOS5PlugMod/configs/c90_llc90_03/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_ */
149 changes: 149 additions & 0 deletions MIT_GEOS5PlugMod/configs/c90_llc90_03/code/CPP_OPTIONS.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,149 @@
#ifndef CPP_OPTIONS_H
#define CPP_OPTIONS_H

CBOP
C !ROUTINE: CPP_OPTIONS.h
C !INTERFACE:
C #include "CPP_OPTIONS.h"

C !DESCRIPTION:
C *==================================================================*
C | main CPP options file for the model:
C | Control which optional features to compile in model/src code.
C *==================================================================*
CEOP

C CPP flags controlling particular source code features

C o Turn off capping of precip with snowprecip. This will elimnates one
C forward loop in the adjoint code.
#define Turnoff_capping_precip_by_snowprecip

C o Use 3d shiTransCoeffT and shiTransCoeffS
#define ALLOW_shiTransCoeff_3d

C o Shortwave heating as extra term in external_forcing.F
C Note: this should be a run-time option
#define SHORTWAVE_HEATING

C o Include/exclude Geothermal Heat Flux at the bottom of the ocean
#define ALLOW_GEOTHERMAL_FLUX

C o Include/exclude phi_hyd calculation code
#define INCLUDE_PHIHYD_CALCULATION_CODE

C o Include/exclude call to S/R CONVECT
#define INCLUDE_CONVECT_CALL


C o Include/exclude call to S/R CALC_DIFFUSIVITY
#define INCLUDE_CALC_DIFFUSIVITY_CALL

C o Allow full 3D specification of vertical diffusivity
#define ALLOW_3D_DIFFKR

C o Allow latitudinally varying BryanLewis79 vertical diffusivity
#undef ALLOW_BL79_LAT_VARY

C o Include/exclude Implicit vertical advection code
#define INCLUDE_IMPLVERTADV_CODE

C o Include/exclude AdamsBashforth-3rd-Order code
#undef ALLOW_ADAMSBASHFORTH_3

C o Include/exclude nonHydrostatic code
#undef ALLOW_NONHYDROSTATIC
#undef ALLOW_QHYD_STAGGER_TS

C o Allow to account for heating due to friction (and momentum dissipation)
#undef ALLOW_FRICTION_HEATING

C o Allow mass source or sink of Fluid in the interior
C (3-D generalisation of oceanic real-fresh water flux)
#define ALLOW_ADDFLUID

C o Include pressure loading code
#define ATMOSPHERIC_LOADING
#ifdef ATMOSPHERIC_LOADING
#define ALLOW_IB_CORR
#endif

C o Calculate Phi-Hydrostatic at r-lower boundary during initialization.
C Needed for obp cost. Otherwise, the first record of m_bp is wrong,
C because phiHydLow is zero.
#define CALC_PHI_RLOW_INI

C o exclude/allow external forcing-fields load
C this allows to read & do simple linear time interpolation of oceanic
C forcing fields, if no specific pkg (e.g., EXF) is used to compute them.
#undef EXCLUDE_FFIELDS_LOAD

C o Include/exclude balancing surface forcing fluxes code
#undef ALLOW_BALANCE_FLUXES

C o Include/exclude balancing surface forcing relaxation code
#undef ALLOW_BALANCE_RELAX

C o Include/exclude GM-like eddy stress in momentum code
#undef ALLOW_EDDYPSI

C o Use "Exact Convervation" of fluid in Free-Surface formulation
C so that d/dt(eta) is exactly equal to - Div.Transport
#define EXACT_CONSERV

C o Allow the use of Non-Linear Free-Surface formulation
C this implies that surface thickness (hFactors) vary with time
#define NONLIN_FRSURF
# undef DISABLE_RSTAR_CODE
#undef DISABLE_SIGMA_CODE

C o Include/exclude code for single reduction Conjugate-Gradient solver
#undef ALLOW_SRCG

C o Choices for implicit solver routines solve_*diagonal.F
C The following has low memory footprint, but not suitable for AD
#undef SOLVE_DIAGONAL_LOWMEMORY
C The following one suitable for AD but does not vectorize
#define SOLVE_DIAGONAL_KINNER

C o ALLOW isotropic scaling of harmonic and bi-harmonic terms when
C using an locally isotropic spherical grid with (dlambda) x (dphi*cos(phi))
C *only for use on a lat-lon grid*
C Setting this flag here affects both momentum and tracer equation unless
C it is set/unset again in other header fields (e.g., GAD_OPTIONS.h).
C The definition of the flag is commented to avoid interference with
C such other header files.
C The preferred method is specifying a value for viscAhGrid or viscA4Grid
C in data which is then automatically scaled by the grid size;
C the old method of specifying viscAh/viscA4 and this flag is provided
C for completeness only (and for use with the adjoint).
C#define ISOTROPIC_COS_SCALING

C o This flag selects the form of COSINE(lat) scaling of bi-harmonic term.
C *only for use on a lat-lon grid*
C Has no effect if ISOTROPIC_COS_SCALING is undefined.
C Has no effect on vector invariant momentum equations.
C Setting this flag here affects both momentum and tracer equation unless
C it is set/unset again in other header fields (e.g., GAD_OPTIONS.h).
C The definition of the flag is commented to avoid interference with
C such other header files.
C#define COSINEMETH_III

C o Use "OLD" UV discretisation near boundaries (*not* recommended)
C Note - only works with pkg/mom_fluxform and "no_slip_sides=.FALSE."
C because the old code did not have no-slip BCs
#undef OLD_ADV_BCS

C o Use LONG.bin, LATG.bin, etc., initialization for ini_curviliear_grid.F
C Default is to use "new" grid files (OLD_GRID_IO undef) but OLD_GRID_IO
C is still useful with, e.g., single-domain curvilinear configurations.
#undef OLD_GRID_IO

C o Use old EXTERNAL_FORCING_U,V,T,S subroutines (for backward compatibility)
#undef USE_OLD_EXTERNAL_FORCING

C o Execution environment support options
#include "CPP_EEOPTIONS.h"

#endif /* CPP_OPTIONS_H */

32 changes: 32 additions & 0 deletions MIT_GEOS5PlugMod/configs/c90_llc90_03/code/DIAGNOSTICS_SIZE.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
C $Header: /u/gcmpack/MITgcm_contrib/ecco_utils/ecco_v4_release3_devel/code/DIAGNOSTICS_SIZE.h,v 1.1 2017/05/04 17:46:37 ou.wang Exp $
C $Name: $


C Diagnostics Array Dimension
C ---------------------------
C ndiagMax :: maximum total number of available diagnostics
C numlists :: maximum number of diagnostics list (in data.diagnostics)
C numperlist :: maximum number of active diagnostics per list (data.diagnostics)
C numLevels :: maximum number of levels to write (data.diagnostics)
C numDiags :: maximum size of the storage array for active 2D/3D diagnostics
C nRegions :: maximum number of regions (statistics-diagnostics)
C sizRegMsk :: maximum size of the regional-mask (statistics-diagnostics)
C nStats :: maximum number of statistics (e.g.: aver,min,max ...)
C diagSt_size:: maximum size of the storage array for statistics-diagnostics
C Note : may need to increase "numDiags" when using several 2D/3D diagnostics,
C and "diagSt_size" (statistics-diags) since values here are deliberately small.
INTEGER ndiagMax
INTEGER numlists, numperlist, numLevels
INTEGER numDiags
INTEGER nRegions, sizRegMsk, nStats
INTEGER diagSt_size
PARAMETER( ndiagMax = 700 )
PARAMETER( numlists = 300, numperlist = 30, numLevels=5*Nr )
PARAMETER( numDiags = 4000 )
PARAMETER( nRegions = 20 , sizRegMsk = 1 , nStats = 4 )
PARAMETER( diagSt_size = 50*Nr )


CEH3 ;;; Local Variables: ***
CEH3 ;;; mode:fortran ***
CEH3 ;;; End: ***
31 changes: 31 additions & 0 deletions MIT_GEOS5PlugMod/configs/c90_llc90_03/code/GGL90_OPTIONS.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
C *=============================================================*
C | GGL90_OPTIONS.h
C | o CPP options file for GGL90 package.
C *=============================================================*
C | Use this file for selecting options within the GGL90
C | package.
C *=============================================================*

#ifndef GGL90_OPTIONS_H
#define GGL90_OPTIONS_H
#include "PACKAGES_CONFIG.h"
#include "CPP_OPTIONS.h"

#ifdef ALLOW_GGL90
C Package-specific Options & Macros go here

C Enable horizontal diffusion of TKE.
#undef ALLOW_GGL90_HORIZDIFF

C Use horizontal averaging for viscosity and diffusivity as
C originally implemented in OPA.
#define ALLOW_GGL90_SMOOTH

C allow IDEMIX model
#undef ALLOW_GGL90_IDEMIX

C include Langmuir circulation parameterization
#undef ALLOW_GGL90_LANGMUIR

#endif /* ALLOW_GGL90 */
#endif /* GGL90_OPTIONS_H */
Loading

0 comments on commit b91b5ec

Please sign in to comment.