-
Notifications
You must be signed in to change notification settings - Fork 16
Review of MOM section in 25km config doc #911
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
6a13af5 to
18bca4e
Compare
18bca4e to
57ea4b7
Compare
|
I've tried to clarify the text, including removing a few things that I wasn't sure were correct. Happy to add them back in if we are confident about them. I haven't really touched the sections on isopycnal mixing because I'm not familiar enough with MEKE and GM in MOM6 without spending a fair bit of time. I'm hoping @AndyHoggANU and/or @aekiss may be able to check over it. This is what the sections currently say:
|
Clarified the explanation of what is covered in the doc (committing on a new branch as I can't do it in @dougiesquire existing PR -- #911)
| ## MOM6 parameter choices | ||
|
|
||
| ### Horizontal grid | ||
| Code-formatted text in the following sections gives the parameter values set in the `MOM_input` configuration file. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Code-formatted text in the following sections gives the parameter values set in the `MOM_input` configuration file. | |
| Code-formatted text (`example`) in the following sections gives the parameter values set in the `MOM_input` configuration file. |
|
|
||
| ### Vertical resolution and ALE coordinate | ||
| This configuration uses 75 vertical layers (`NK=75`) with an arbitrary Lagrangian Euler (`ALE`) vertical coordinate scheme [@griffies2020primer]. The `ALE` scheme is enabled by `USE_REGRIDDING = True` (activating the “split-explicit” layered/regridding algorithm). MOM6 also supports true hybrid vertical coordinates, such as "layered isopycnal-z", where layers follow density surfaces in the ocean interior but transition to z-coordinates near the surface or bottom. However, that mode is not used in this configuration. We adopt a stretched $z^*$ vertical coordinate `REGRIDDING_COORDINATE_MODE = "ZSTAR"`. The vertical grid spacing is specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The deepest ocean depth is set to `MAXIMUM_DEPTH = 6000.0`. The gravitational acceleration is `G_EARTH = 9.8` $m/s^2$. The Boussinesq approximation is made (`BOUSSINESQ = True`), meaning density variations only affect buoyancy, with all other terms using a reference density `RHO_0 = 1035` $kg/m^3$, the standard value. In our configuration, sea level is computed assuming a reference density (here using the fixed reference density for sea-level calc since `CALC_RHO_FOR_SEA_LEVEL = False`). | ||
| There are 75 vertical layers (`NK = 75`). MOM6 supports an arbitrary Lagrangian Euler (ALE) vertical coordinate scheme [@griffies2020primer] that allows for completely general vertical coordinates. A number of coordinates are supported "out-of-the-box", including isopycnal, geopotential, terrain-following, HYCOM1 etc. This configuration uses ALE with a stretched geopotential (z-star) vertical coordinate (`USE_REGRIDDING = True`, `REGRIDDING_COORDINATE_MODE = "ZSTAR"`). The layer spacing specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The deepest ocean depth is set to `MAXIMUM_DEPTH = 6000.0`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| There are 75 vertical layers (`NK = 75`). MOM6 supports an arbitrary Lagrangian Euler (ALE) vertical coordinate scheme [@griffies2020primer] that allows for completely general vertical coordinates. A number of coordinates are supported "out-of-the-box", including isopycnal, geopotential, terrain-following, HYCOM1 etc. This configuration uses ALE with a stretched geopotential (z-star) vertical coordinate (`USE_REGRIDDING = True`, `REGRIDDING_COORDINATE_MODE = "ZSTAR"`). The layer spacing specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The deepest ocean depth is set to `MAXIMUM_DEPTH = 6000.0`. | |
| There are 75 vertical layers (`NK = 75`). MOM6 supports an arbitrary Lagrangian Euler (ALE) vertical coordinate scheme [@griffies2020primer] that allows for completely general vertical coordinates. A number of coordinates are supported "out-of-the-box", including isopycnal, geopotential, terrain-following, HYCOM1 etc. This configuration uses ALE (`USE_REGRIDDING = True`) with a stretched geopotential (z-star) vertical coordinate (`REGRIDDING_COORDINATE_MODE = "ZSTAR"`). The layer spacing is specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The maximum ocean depth is capped at 6000m (`MAXIMUM_DEPTH = 6000.0`). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it possible to be more explicit here?
The layer spacing is specified via an input file (
ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta")
Kind of thing that always gets discussed in a paper. I imagine @ezhilsabareesh8 will have some comments. I think we used Kial's tools? Maybe even just a link to the grid information?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The vertical spacing is based on the following function
Where,
"Stewart, K.D., Hogg, A.M., Griffies, S.M., Heerdegen, A.P., Ward, M.L., Spence, P. and England, M.H., 2017. Vertical resolution of baroclinic modes in global ocean models. Ocean Modelling, 113, pp.50-65. http://dx.doi.org/10.1016/j.ocemod.2017.03.012"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @ezhilsabareesh8. Can I suggest you add that detail?
I note that currently we have:
Vertical grid
In the ocean model, we use a 75 level vertical grid unchanged from many OM2 configurations, following Stewart et al.(2017)(Stewart et al., 2017)2.
I think putting it here^ makes more sense? Then just adding a link from here. If you do want to add it here, please do it on this PR:
#912
(Just add your commit to the branch.)
Is it possible to even list what the layers are (as in what they start at)?
@dougiesquire has just been looking at how this varies with z* -- a comment in that sense might be nice too but not necessary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @ezhilsabareesh8 can you please add a reference to that here too? "Further details of the vertical grid can be found..." or similar.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
|
||
| The freezing conservative temperature is calculated from absolute salinity and pressure using a 23-term polynomial fit refactored from the TEOS-10 package (`TFREEZE_FORM = "TEOS_POLY"`). More relevant discussions or notes can be found in [TWG-23-July-2025](https://forum.access-hive.org.au/t/cosima-twg-meeting-minutes-2025/4067/17#:~:text=Freezing%20temperature%20consistency%20between%20mom6%20and%20cice). | ||
| ### Thermodynamics and Equation of State (TEOS-10) | ||
| The configuration uses the "ROQUET_RHO" equation of state for seawater thermodynamic properties (`EQN_OF_STATE = "ROQUET_RHO"`). This scheme is based on TEOS-10, but uses a 75-term polynomial to compute in-situ density as a function of conservative temperature and absolute salinity, closely approximating the full TEOS-10 results [@roquet2015accurate]. The `_RHO` variant specifically fits density rather than specific volume and is well-suited for layered models. Prognostic temperature and salinity are conservative temperature and absolute salinity (`USE_CONTEMP_ABSSAL = True`), consistent with the equation of state. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The configuration uses the "ROQUET_RHO" equation of state for seawater thermodynamic properties (`EQN_OF_STATE = "ROQUET_RHO"`). This scheme is based on TEOS-10, but uses a 75-term polynomial to compute in-situ density as a function of conservative temperature and absolute salinity, closely approximating the full TEOS-10 results [@roquet2015accurate]. The `_RHO` variant specifically fits density rather than specific volume and is well-suited for layered models. Prognostic temperature and salinity are conservative temperature and absolute salinity (`USE_CONTEMP_ABSSAL = True`), consistent with the equation of state. | |
| The configuration uses the "ROQUET_RHO" equation of state for seawater thermodynamic properties (`EQN_OF_STATE = "ROQUET_RHO"`). This scheme is based on TEOS-10 using a 75-term polynomial to compute in-situ density as a function of conservative temperature and absolute salinity, closely approximating the full TEOS-10 results [@roquet2015accurate]. The `_RHO` variant specifically fits density rather than specific volume and is well-suited for layered models. Prognostic temperature and salinity are conservative temperature and absolute salinity (`USE_CONTEMP_ABSSAL = True`), consistent with the equation of state. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently we have:
https://access-om3-configs.access-hive.org.au/pr-preview-912/inputs/Initial-conditions-generation/
The workflow produces Conservative Temperature (CT) and Absolute Salinity (SA), the prognostic variables required by the TEOS-10 equation of state (EOS) for use in ACCESS-OM3.
I think it would be worth mentioning or linking to that here.
.. Here's a suggestion:
65eefba
(Part of this PR)
|
|
||
| We ensure salinity never goes negative by setting `BOUND_SALINITY = True`. In coupled models, sea-ice formation and melting can generate large salinity fluxes at the ocean surface. This setting clips salinity at a minimum of `MIN_SALINITY = 0.0`. However, if the lower bound is hit, it clips the salinity value and discards any excess, which may violate salt conservation in rare cases. This can occasionally trigger sea-ice model crashes due to thermodynamic conservation errors. We also set `SALINITY_UNDERFLOW = 0.0`, which resets very small salinity values to exactly zero. | ||
| ### Frazil formation | ||
| Frazil formation in the ocean is turned on (`FRAZIL = TRUE`). This scheme works upwards through each water column, transferring heat downwards from the layer above as needed to prevent the in-situ temperature falling below the local freezing point in each layer in turn. If the top layer is below freezing, heat is extracted from the sea ice model, which grows frazil ice in response. More details are [here](https://mom6.readthedocs.io/en/main/api/generated/pages/Frazil_Ice.html). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Frazil formation in the ocean is turned on (`FRAZIL = TRUE`). This scheme works upwards through each water column, transferring heat downwards from the layer above as needed to prevent the in-situ temperature falling below the local freezing point in each layer in turn. If the top layer is below freezing, heat is extracted from the sea ice model, which grows frazil ice in response. More details are [here](https://mom6.readthedocs.io/en/main/api/generated/pages/Frazil_Ice.html). | |
| Frazil ice typically consists of individual particles that appear like a coarse slush. Frazil ice can contribute to the creation of first-year sea ice, evolving to form a soupy ‘grease ice’ layer on the ocean surface, which may then develop into pancake ice. Frazil formation in the ocean is turned on (`FRAZIL = TRUE`, `ENABLE_THERMODYNAMICS = True`), Frazil ice forms in the model when the in situ temperature drops below the local freezing point, taking into account the in situ salinity and pressure. This scheme works upwards through each water column, transferring heat downwards from the layer above as needed to prevent the in-situ temperature falling below the local freezing point in each layer in turn. If the top layer is below freezing, heat is extracted from the sea ice model, which grows frazil ice in response. In these configurations, we also have: | |
| 1. `MASK_SRESTORE_UNDER_ICE = False`, i.e. disables SSS restoring under sea-ice based on a frazil criteria; | |
| 1. `PRESSURE_DEPENDENT_FRAZIL = True` a pressure dependent freezing temperature is used when making frazil; | |
| 1. `RECLAIM_FRAZIL = True` use any frazil heat deficit to cool any overlying layers down to the freezing point. | |
| More details are [here](https://mom6.readthedocs.io/en/main/api/generated/pages/Frazil_Ice.html. |
A bit of background taken from here. @ezhilsabareesh8 seen that study? Alexander Babanin was involved.
|
|
|
||
| ### Vertical resolution and ALE coordinate | ||
| This configuration uses 75 vertical layers (`NK=75`) with an arbitrary Lagrangian Euler (`ALE`) vertical coordinate scheme [@griffies2020primer]. The `ALE` scheme is enabled by `USE_REGRIDDING = True` (activating the “split-explicit” layered/regridding algorithm). MOM6 also supports true hybrid vertical coordinates, such as "layered isopycnal-z", where layers follow density surfaces in the ocean interior but transition to z-coordinates near the surface or bottom. However, that mode is not used in this configuration. We adopt a stretched $z^*$ vertical coordinate `REGRIDDING_COORDINATE_MODE = "ZSTAR"`. The vertical grid spacing is specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The deepest ocean depth is set to `MAXIMUM_DEPTH = 6000.0`. The gravitational acceleration is `G_EARTH = 9.8` $m/s^2$. The Boussinesq approximation is made (`BOUSSINESQ = True`), meaning density variations only affect buoyancy, with all other terms using a reference density `RHO_0 = 1035` $kg/m^3$, the standard value. In our configuration, sea level is computed assuming a reference density (here using the fixed reference density for sea-level calc since `CALC_RHO_FOR_SEA_LEVEL = False`). | ||
| There are 75 vertical layers (`NK = 75`). MOM6 supports an arbitrary Lagrangian Euler (ALE) vertical coordinate scheme [@griffies2020primer] that allows for completely general vertical coordinates. A number of coordinates are supported "out-of-the-box", including isopycnal, geopotential, terrain-following, HYCOM1 etc. This configuration uses ALE with a stretched geopotential (z-star) vertical coordinate (`USE_REGRIDDING = True`, `REGRIDDING_COORDINATE_MODE = "ZSTAR"`). The layer spacing specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The deepest ocean depth is set to `MAXIMUM_DEPTH = 6000.0`. Further details of the vertical grid can be found [here](https://access-om3-configs.access-hive.org.au/inputs/Grids/#vertical-grid). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| There are 75 vertical layers (`NK = 75`). MOM6 supports an arbitrary Lagrangian Euler (ALE) vertical coordinate scheme [@griffies2020primer] that allows for completely general vertical coordinates. A number of coordinates are supported "out-of-the-box", including isopycnal, geopotential, terrain-following, HYCOM1 etc. This configuration uses ALE with a stretched geopotential (z-star) vertical coordinate (`USE_REGRIDDING = True`, `REGRIDDING_COORDINATE_MODE = "ZSTAR"`). The layer spacing specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The deepest ocean depth is set to `MAXIMUM_DEPTH = 6000.0`. Further details of the vertical grid can be found [here](https://access-om3-configs.access-hive.org.au/inputs/Grids/#vertical-grid). | |
| There are 75 vertical layers (`NK = 75`). MOM6 supports an arbitrary Lagrangian Euler (ALE) vertical coordinate scheme [@griffies2020primer] that allows for completely general vertical coordinates. A number of coordinates are supported "out-of-the-box", including isopycnal, geopotential, terrain-following, HYCOM1 etc. This configuration uses ALE with a stretched geopotential (z-star) vertical coordinate (`USE_REGRIDDING = True`, `REGRIDDING_COORDINATE_MODE = "ZSTAR"`). The layer spacing specified via an input file (`ALE_COORDINATE_CONFIG = "FILE:ocean_vgrid.nc,interfaces=zeta"`). The deepest ocean depth is set to `MAXIMUM_DEPTH = 6000.0`. Further details of the vertical grid can be found [here](../../inputs/Grids/#vertical-grid). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks @ezhilsabareesh8. FYI, please use relative links in future.
e.g. here --> here
|
|
||
| ### Surface salinity restoring | ||
| Sea surface salinity is restored toward a reference climatology by enabling `RESTORE_SALINITY = True`. The restoration uses a monthly climatological dataset from the World Ocean Atlas 2023 (SALT_RESTORE_FILE = "salt_sfc_restore.nc"), available at [NOAA NCEI](https://www.ncei.noaa.gov/products/world-ocean-atlas). A piston velocity of 0.11 $m/day$ (`FLUXCONST = 0.11`) is applied to control the strength of the salinity relaxation. The restoring is implemented as a virtual salt flux ( `SRESTORE_AS_SFLUX = True`). This approach conserves salt overall (balanced globally by subtracting the mean flux, because we set `ADJUST_NET_SRESTORE_TO_ZERO = True` to avoid altering global salinity). No effective limit is applied to the salinity restoring applied (`MAX_DELTA_SRESTORE = 999`). More discussions and decisions can be found at [issues/350](https://github.com/ACCESS-NRI/access-om3-configs/issues/350), [issues/325](https://github.com/ACCESS-NRI/access-om3-configs/issues/325), [issues/257](https://github.com/ACCESS-NRI/access-om3-configs/issues/257). | ||
| Sea surface salinity is restored toward a monthly climatological dataset calculated from the World Ocean Atlas 2023 available at [NOAA NCEI](https://www.ncei.noaa.gov/products/world-ocean-atlas) (`RESTORE_SALINITY = True`, `SALT_RESTORE_FILE = "salt_sfc_restore.nc"`). A piston velocity of 0.11 $m/day$ is applied to control the strength of the salinity relaxation (`FLUXCONST = 0.11`). The restoring is implemented as a virtual salt flux (`SRESTORE_AS_SFLUX = True`). This approach conserves salt overall, balanced globally by subtracting the mean flux to avoid altering global salinity (`ADJUST_NET_SRESTORE_TO_ZERO = True`). No effective limit is applied to the salinity restoring flux (`MAX_DELTA_SRESTORE = 999`). More discussion can be found in [issues/350](https://github.com/ACCESS-NRI/access-om3-configs/issues/350), [issues/325](https://github.com/ACCESS-NRI/access-om3-configs/issues/325), [issues/257](https://github.com/ACCESS-NRI/access-om3-configs/issues/257). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Sea surface salinity is restored toward a monthly climatological dataset calculated from the World Ocean Atlas 2023 available at [NOAA NCEI](https://www.ncei.noaa.gov/products/world-ocean-atlas) (`RESTORE_SALINITY = True`, `SALT_RESTORE_FILE = "salt_sfc_restore.nc"`). A piston velocity of 0.11 $m/day$ is applied to control the strength of the salinity relaxation (`FLUXCONST = 0.11`). The restoring is implemented as a virtual salt flux (`SRESTORE_AS_SFLUX = True`). This approach conserves salt overall, balanced globally by subtracting the mean flux to avoid altering global salinity (`ADJUST_NET_SRESTORE_TO_ZERO = True`). No effective limit is applied to the salinity restoring flux (`MAX_DELTA_SRESTORE = 999`). More discussion can be found in [issues/350](https://github.com/ACCESS-NRI/access-om3-configs/issues/350), [issues/325](https://github.com/ACCESS-NRI/access-om3-configs/issues/325), [issues/257](https://github.com/ACCESS-NRI/access-om3-configs/issues/257). | |
| Sea surface salinity is restored toward a monthly climatological dataset calculated from the World Ocean Atlas 2023 available at [NOAA NCEI](https://www.ncei.noaa.gov/products/world-ocean-atlas) (`RESTORE_SALINITY = True`, `SALT_RESTORE_FILE = "salt_sfc_restore.nc"`). A piston velocity of 0.11 $m/day$ is applied to control the strength of the salinity relaxation (`FLUXCONST = 0.11`). The restoring is implemented as a virtual salt flux (`SRESTORE_AS_SFLUX = True`). This approach conserves salt overall, balanced globally by subtracting the mean flux to avoid altering global salinity (`ADJUST_NET_SRESTORE_TO_ZERO = True`). No effective limit is applied to the salinity restoring flux (`MAX_DELTA_SRESTORE = 999`). More discussion can be found in [issues/350](https://github.com/ACCESS-NRI/access-om3-configs/issues/350), [issues/325](https://github.com/ACCESS-NRI/access-om3-configs/issues/325), [issues/257](https://github.com/ACCESS-NRI/access-om3-configs/issues/257). |
On the More discussion part, given we use virtual salt flux, I think it's less relevant but we could add:
#920
Possibly this too:
https://forum.access-hive.org.au/t/salt-restoring-flux-from-file-in-mom5-and-mom6/4610/17
| ### Diagnostics and age tracer | ||
| The configuration introduces some passive tracers and diagnostics for analysis. For example, we enable `USE_IDEAL_AGE_TRACER = True`, which measures the time since water left the surface. This tracer ages at a rate of 1/year once it is isolated from the surface (`DO_IDEAL_AGE = True`). It doesn’t affect dynamics but is a diagnostic to understand water mass ventilation and residence times. | ||
| ### Diagnostics | ||
| Three-dimensional ocean diagnostics are output on either $z*$- or density-coordinates, depending on the diagnostic, rather than on the model's native coordinate. Specifically, `NUM_DIAG_COORDS = 2` with `DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO"` and the vertical coordinate levels for each are defined by `DIAG_COORD_DEF_Z = "FILE:ocean_vgrid.nc,interfaces=zeta"` and `DIAG_COORD_DEF_RHO2 = "RFNC1:76,999.5,1020.,1034.1,3.1,1041.,0.002"` (relevant info can be found at [PR/622](https://github.com/ACCESS-NRI/access-om3-configs/pull/622)). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it be possible to give a link(s) or some information as to which variables are output on which coordinates?
| Three-dimensional ocean diagnostics are output on either $z*$- or density-coordinates, depending on the diagnostic, rather than on the model's native coordinate. Specifically, `NUM_DIAG_COORDS = 2` with `DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO"` and the vertical coordinate levels for each are defined by `DIAG_COORD_DEF_Z = "FILE:ocean_vgrid.nc,interfaces=zeta"` and `DIAG_COORD_DEF_RHO2 = "RFNC1:76,999.5,1020.,1034.1,3.1,1041.,0.002"` (relevant info can be found at [PR/622](https://github.com/ACCESS-NRI/access-om3-configs/pull/622)). | ||
|
|
||
| We also output 3D diagnostics on both $z*$- and density-coordinates. Specifically, `NUM_DIAG_COORDS = 2` with `DIAG_COORDS = "z Z ZSTAR", "rho2 RHO2 RHO"`, which the vertical coordinate levels for each are defined by `DIAG_COORD_DEF_Z = "FILE:ocean_vgrid.nc,interfaces=zeta"` and `DIAG_COORD_DEF_RHO2 = "RFNC1:76,999.5,1020.,1034.1,3.1,1041.,0.002"` (relevant info can be found at [PR/622](https://github.com/ACCESS-NRI/access-om3-configs/pull/622)). | ||
| An ideal age tracer is configured (`USE_IDEAL_AGE_TRACER = True`). This tracer ages at a rate of 1/year once it is isolated from the surface and is useful for understanding water mass ventilation and residence times. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| An ideal age tracer is configured (`USE_IDEAL_AGE_TRACER = True`). This tracer ages at a rate of 1/year once it is isolated from the surface and is useful for understanding water mass ventilation and residence times. | |
| An ideal age tracer is initialised (`USE_IDEAL_AGE_TRACER = True`). This tracer, once isolated from the surface, ages at a rate of 1 per year. It is useful for understanding water mass ventilation and residence times. |
| #### Energetic planetary boundary layer (`ePBL`) | ||
| The configuration handles the vertical mixing in the ocean surface boundary layer (`OSBL`) with the `ePBL` scheme rather the the traditional `KPP`. The `ePBL` scheme is an energy-based 1D turbulence closure approach that integrates a boundary layer energy budget to determine mixing coefficients. It was developed by [@reichl2018simplified] to improve upon `KPP` for climate simulations by including the effect of turbulent kinetic energy input and wind-driven mixing in a more physically constrained way. Relevant discussions and decisions can be found at [issues/465](https://github.com/ACCESS-NRI/access-om3-configs/issues/465), [issues/426](https://github.com/ACCESS-NRI/access-om3-configs/issues/426), [issues/373](https://github.com/ACCESS-NRI/access-om3-configs/issues/373). | ||
| #### Energetic planetary boundary layer (ePBL) | ||
| The configuration handles the vertical mixing in the ocean surface boundary layer with the ePBL scheme rather the the traditional KPP. The ePBL scheme is an energy-based 1D turbulence closure approach that integrates a boundary layer energy budget to determine mixing coefficients. It was developed by [@reichl2018simplified] to improve upon KPP for climate simulations by including the effect of turbulent kinetic energy input and wind-driven mixing in a more physically constrained way. Relevant discussion can be found in [issues/465](https://github.com/ACCESS-NRI/access-om3-configs/issues/465), [issues/426](https://github.com/ACCESS-NRI/access-om3-configs/issues/426), [issues/373](https://github.com/ACCESS-NRI/access-om3-configs/issues/373). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The configuration handles the vertical mixing in the ocean surface boundary layer with the ePBL scheme rather the the traditional KPP. The ePBL scheme is an energy-based 1D turbulence closure approach that integrates a boundary layer energy budget to determine mixing coefficients. It was developed by [@reichl2018simplified] to improve upon KPP for climate simulations by including the effect of turbulent kinetic energy input and wind-driven mixing in a more physically constrained way. Relevant discussion can be found in [issues/465](https://github.com/ACCESS-NRI/access-om3-configs/issues/465), [issues/426](https://github.com/ACCESS-NRI/access-om3-configs/issues/426), [issues/373](https://github.com/ACCESS-NRI/access-om3-configs/issues/373). | |
| The energetic Planetary Boundary Layer (ePBL) mixing scheme is an energy-based 1D turbulence closure approach that integrates a boundary layer energy budget to determine mixing coefficients. It was developed by [@reichl2018simplified] to improve upon KPP for climate simulations by including the effect of turbulent kinetic energy input and wind-driven mixing in a more physically constrained way. Relevant discussion can be found in [issues/465](https://github.com/ACCESS-NRI/access-om3-configs/issues/465), [issues/426](https://github.com/ACCESS-NRI/access-om3-configs/issues/426), [issues/373](https://github.com/ACCESS-NRI/access-om3-configs/issues/373). |
| The ePBL scheme parameters in the configuration are based on the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all), including: | ||
|
|
||
| We have adjusted some `ePBL` parameters to match the [`GFDL` OM4 scheme](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2247) (`EPBL_MSTAR_SCHEME = “OM4”`). We set `MSTAR_CAP = 1.25` (caps the mixing length scale factor `m` to 1.25) and adjusted coefficients: `MSTAR2_COEF1 = 0.29` and `COEF2 = 0.152`. These tweaks are inherited from the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2255-L2260). We also enable `USE_MLD_ITERATION = True`, which allows `ePBL` to iteratively solve for a self-consistent mixed layer depth (`MLD`) rather than a single-pass estimate. This provides a more accurate `MLD`, especially when multiple criteria (buoyancy, shear) are at play, but at the cost of a few more iterations (`EPBL_MLD_MAX_ITS = 20`). Additionally, we set `EPBL_IS_ADDITIVE = False`, which means that the diffusivity from `ePBL` is not simply added to other sources of diffusivity, instead we let `ePBL` replace shear mixing when it is more energetic, rather than always adding on top. This avoids double counting turbulence. It is a choice that effectively transitions between schemes, for example, in weak wind conditions, shear-driven mixing might dominate, but in strong wind conditions, `ePBL` mixing dominates. | ||
| - Additional mixing due to Langmuir (wave-driven) turbulence (`EPBL_LANGMUIR_SCHEME = “ADDITIVE”`). Since we do not explicitly couple to a wave model in this configuration (`USE_WAVES = False`), the Langmuir effect is parameterised via a predetermined enhancement factor using MOM6 default values. The inclusion of wave effects is expected to reduce warm SST biases by enhancing mixing under strong winds, as found in studies of Langmuir turbulence (e.g., `USE_LA_LI2016 = True` from [@li2016langmuir]). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess we could say how the effects of wave coupling are explored here:
#950
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The inclusion of wave effects is expected to reduce warm SST biases by enhancing mixing under strong winds
is that what we've found in mcw @ezhilsabareesh8 @NoahDay ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
" the Langmuir effect is parameterised via a predetermined enhancement factor using MOM6 default values. The inclusion of wave effects is expected to reduce warm SST biases by enhancing mixing under strong winds, as found in studies of Langmuir turbulence (e.g., USE_LA_LI2016 = True from [@li2016langmuir])"
This section applies only to KPP. The Langmuir mixing formulation of Li et al. (2016) is explicitly based on the KPP scheme, and recent test runs confirm a clear sensitivity of mixed-layer depths to the inclusion of wave effects. In KPP, the Langmuir effect is parameterised through the VR12-MA enhancement factor using WW3 inputs, consistent with MOM6 default settings. In contrast, wave effects in ePBL are represented through surface Stokes drift velocities from WW3 (when coupled), with non-breaking wave–induced mixing incorporated via additive or rescaling approaches rather than an explicit Langmuir enhancement factor.
When WW3 is not coupled, still ePBL does not use a Langmuir enhancement factor; instead, Langmuir mixing is represented through surface Stokes drift velocities derived from a Pierson–Moskowitz wind–wave spectrum refer here, where significant wave height is parameterised from the 10 m wind speed refer here, which is ultimately utilised in the calculation of m* by modifying the surface Langmuir number, as implemented through EPBL_LANGMUIR_SCHEME = "ADDITIVE".
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When WW3 is fully coupled to ePBL vertical mixing, we find that the resulting mixed-layer depths are unrealistic; therefore, we disable wave-induced mixing in ePBL (i.e., no wave to ocean coupling) to obtain reasonable mixed-layer depths.
|
@atteggiani and @anton-seaice the pr-preview on this seems to have broken: Perhaps that's related to the infra changes you've both been looking at? (fyi @dougiesquire I notice there's some |
|
The link changed during this PR, its lost in the comments above. Try https://access-om3-configs.access-hive.org.au/pr-previews/911/ Not sure if youll also need to merge with latest main |
|
|
||
| #### Interior shear-driven mixing | ||
| Below the surface layer, we use a parameterisation for shear-driven mixing in stratified interior. Specifically we enable the [@jackson2008parameterization] shear instability scheme (`USE_JACKSON_PARAM = True`). This scheme targets mixing in stratified shear zones. It uses a local Richardson number (`Ri`). We keep the default critical Richardson number `RINO_CRIT = 0.25` and the nondimensional shear mixing rate `SHEARMIX_RATE = 0.089`. We also set `VERTEX_SHEAR = True`, meaning the shear is computed at cell vertices (horizontally staggered grid) to better capture shear between adjacent grid cells. That is a technical detail to get more accurate shear estimates on a C-grid. The Jackson et al. (2008) parameterisation is energetically constrained hence it iteratively finds a diffusivity such that the energy extracted from the mean flow equals the energy used in mixing plus that lost to dissipation. Our settings allow up to `MAX_RINO_IT = 25` iterations for this solve (inherited from [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2088)). The Jackson scheme effectively adds interior diffusivity when `Ri<0.25`, gradually reducing it as `Ri` increases beyond critical. | ||
| Shear-driven mixing is parameterised use the Jackson-Hallberg-Legg shear mixing scheme [@jackson2008parameterization] using the MOM6 default critical Richardson number (Ri) and shear mixing rate (`USE_JACKSON_PARAM = True`, `RINO_CRIT = 0.25`, `SHEARMIX_RATE = 0.089`). This scheme targets mixing in stratified shear zones, effectively adding interior vertical diffusivity when the local Ri is less than the critical value. The shear is computed at cell vertices to better capture shear between adjacent grid cells (`VERTEX_SHEAR = True`). The Jackson-Hallberg-Legg parameterisation is energetically constrained: it iteratively finds a diffusivity such that the energy extracted from the mean flow equals the energy used in mixing plus that lost to dissipation (`MAX_RINO_IT = 25`, inherited from the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2088)). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Shear-driven mixing is parameterised use the Jackson-Hallberg-Legg shear mixing scheme [@jackson2008parameterization] using the MOM6 default critical Richardson number (Ri) and shear mixing rate (`USE_JACKSON_PARAM = True`, `RINO_CRIT = 0.25`, `SHEARMIX_RATE = 0.089`). This scheme targets mixing in stratified shear zones, effectively adding interior vertical diffusivity when the local Ri is less than the critical value. The shear is computed at cell vertices to better capture shear between adjacent grid cells (`VERTEX_SHEAR = True`). The Jackson-Hallberg-Legg parameterisation is energetically constrained: it iteratively finds a diffusivity such that the energy extracted from the mean flow equals the energy used in mixing plus that lost to dissipation (`MAX_RINO_IT = 25`, inherited from the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2088)). | |
| Shear-driven mixing is parameterised using the Jackson-Hallberg-Legg shear mixing scheme [@jackson2008parameterization] with the MOM6 default critical Richardson number (Ri; `RINO_CRIT = 0.25`) and shear mixing rate (`USE_JACKSON_PARAM = True` and `SHEARMIX_RATE = 0.089`). This scheme targets mixing in stratified shear zones, effectively adding interior vertical diffusivity when the local Ri is less than the critical value. The shear is computed at cell vertices to better capture shear between adjacent grid cells (`VERTEX_SHEAR = True`). The Jackson-Hallberg-Legg parameterisation is energetically constrained: it iteratively finds a diffusivity such that the energy extracted from the mean flow equals the energy used in mixing plus that lost to dissipation (`MAX_RINO_IT = 25`, inherited from the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2088)). See the [MOM6 documentation for further details](https://mom6.readthedocs.io/en/main/api/generated/pages/Internal_Vert_Mixing.html#shear-driven-mixing-in-jackson). |
|
@atteggiani, the old pr-preview isn't working anymore but the new link is. Can I delete this post? |
Yes thank you |
|
Thanks, done. |
|
|
||
| #### Interior background mixing | ||
| For the ocean interior background mixing, we follow the approach from the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2004) of using a weak constant background diapycnal diffusivity (`KD = 1.5E-05`) for diapycnal mixing. A floor `KD_MIN = 2.0e-6` is also applied, so it won’t go below 2e-6 $m^2/s$ anywhere, ensuring numerical stability. We enable `DOUBLE_DIFFUSION = True`, which enhances vertical mixing for salt-fingering. Henyey-type internal wave scaling is set through `HENYEY_IGW_BACKGROUND = True`. The parameters `HENYEY_N0_2OMEGA = 20.0` and `HENYEY_MAX_LAT = 73.0` are kept at default. At the same time, to prevent unbounded growth of shear-based or convective mixing, we cap the total diffusivity increment from TKE-based schemes with `KD_MAX = 0.1`. This is a large upper bound that would only be triggered in extremely unstable cases. | ||
| Ocean interior background mixing is also configured based on the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2004). A weak constant background diapycnal diffusivity is set for diapycnal mixing (`KD = 1.5E-05`), with a floor for numerical stability (`KD_MIN = 2.0e-6`). Vertical mixing is enhanced in the salt-fingering regime (`DOUBLE_DIFFUSION = True`) and Henyey-type internal wave scaling is configured with default MOM6 parameters (`HENYEY_IGW_BACKGROUND = True`, `HENYEY_N0_2OMEGA = 20.0`, `HENYEY_MAX_LAT = 73.0`). The total diffusivity increment from TKE-based schemes is capped to prevent unbounded growth of shear-based or convective mixing (`KD_MAX = 0.1`). This is a large upper bound that would only take effect in extremely unstable cases. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Ocean interior background mixing is also configured based on the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2004). A weak constant background diapycnal diffusivity is set for diapycnal mixing (`KD = 1.5E-05`), with a floor for numerical stability (`KD_MIN = 2.0e-6`). Vertical mixing is enhanced in the salt-fingering regime (`DOUBLE_DIFFUSION = True`) and Henyey-type internal wave scaling is configured with default MOM6 parameters (`HENYEY_IGW_BACKGROUND = True`, `HENYEY_N0_2OMEGA = 20.0`, `HENYEY_MAX_LAT = 73.0`). The total diffusivity increment from TKE-based schemes is capped to prevent unbounded growth of shear-based or convective mixing (`KD_MAX = 0.1`). This is a large upper bound that would only take effect in extremely unstable cases. | |
| Ocean interior background mixing is also configured based on the [GFDL OM5 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM5_025/MOM_parameter_doc.all#L2004). A weak constant background diapycnal diffusivity is set for diapycnal mixing (`KD = 1.5E-05`; m^2 s-1), with a floor for numerical stability (`KD_MIN = 2.0e-6`; m^2 s-1). Vertical mixing is enhanced in the salt-fingering regime (`DOUBLE_DIFFUSION = True`) and Henyey-type internal wave scaling is configured with default MOM6 parameters (`HENYEY_IGW_BACKGROUND = True`, `HENYEY_N0_2OMEGA = 20.0`, `HENYEY_MAX_LAT = 73.0`). The total diffusivity increment from TKE-based schemes is capped to prevent unbounded growth of shear-based or convective mixing (`KD_MAX = 0.1`; m^2 s-1). This is a large upper bound that would only take effect in extremely unstable cases. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Feel free to use LaTeX if you remember the syntax.
| $$ | ||
| \kappa_{\text{static}} = \min\left[\max\left(\kappa_{\text{bg}}, U_\nu \Delta(x,y), \kappa_{2d}(x,y), \kappa_{\phi}(x,y)\right), \kappa_{max}(x,y)\right] | ||
| $$ | ||
| - no constant background viscosity (`AH = 0.0`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - no constant background viscosity (`AH = 0.0`) | |
| - no constant background viscosity (`AH = 0.0` default value; `m^2 s-1`) |
| 1. $\kappa_{\text{bg}}$ (`USE_KH_BG_2D = False`) is constant but spatially variable 2D map, also there is no constant background viscosity (`KH = 0`). | ||
| 2. $U_\nu \Delta(x,y)$ ($U_\nu$ = `KH_VEL_SCALE = 0.01`) is a constant velocity scale, | ||
| 3. $\kappa_{\phi}(x,y) = \kappa_\pi|sin(\phi)|^n$ (`KH_SIN_LAT = 2000.0`, `KH_PWR_OF_SINE = 4`) is a function of latitude, | ||
| - no constant background viscosity (`KH = 0.0`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - no constant background viscosity (`KH = 0.0`) | |
| - no constant background viscosity (`KH = 0.0` default value; `m^4 s-1`) |
| - no constant background viscosity (`KH = 0.0`) | ||
| - a grid-dependent background viscosity (`KH_VEL_SCALE = 0.01`) | ||
| - a latitudinally-dependent background viscosity (`KH_SIN_LAT = 2000.0`, `KH_PWR_OF_SINE = 4.0`) | ||
| - no file-base background viscosity (`USE_KH_BG_2D = False`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| - no file-base background viscosity (`USE_KH_BG_2D = False`) | |
| - a 2-d spatial map of background viscosity is not applied (`USE_KH_BG_2D = False`) |
| - a dynamic Smagorinsky nonlinear eddy viscosity (`SMAGORINSKY_AH = True`, `SMAG_BI_CONST = 0.06`, `LEITH_AH = False`) | ||
|
|
||
| where, | ||
| The Lapacian viscosity includes: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| The Lapacian viscosity includes: | |
| The [Lapacian viscosity](https://mom6.readthedocs.io/en/main/api/generated/modules/mom_hor_visc.html#laplacian-viscosity-coefficient) includes: |
| - no dynamic viscosity component (`SMAGORINSKY_KH = False`, `LEITH_KH = False`) | ||
| - reduction scaling in well-resolved regions (`RESOLN_SCALED_KH = True`) | ||
| - the two coefficient anisotropic viscosity scheme proposed by [@smith2003anisotropic] is not used (`ANISOTROPIC_VISCOSITY = False`) | ||
| The Laplacian and biharmonic coefficients are both limited locally to guarantee stability (`BOUND_KH = True`, `BETTER_BOUND_KH = True`, `BOUND_AH = True`, `BETTER_BOUND_AH = True`). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should be on a new line but it isn't on the rendered version and currently look like a run-on sentence.
Maybe this will help?
| The Laplacian and biharmonic coefficients are both limited locally to guarantee stability (`BOUND_KH = True`, `BETTER_BOUND_KH = True`, `BOUND_AH = True`, `BETTER_BOUND_AH = True`). | |
| The Laplacian and biharmonic coefficients are both limited locally to guarantee stability (`BOUND_KH = True`, `BETTER_BOUND_KH = True`, `BOUND_AH = True`, `BETTER_BOUND_AH = True`). |
|
|
||
| The full viscosity includes the dynamic components, | ||
| ### Isopycnal mixing | ||
| Baroclinic instability converts available potential energy (APE) stored in sloping isopycnals into eddy kinetic energy (EKE). In an eddy-permitting 25km configuration, this conversion is only partly resolved hence the model does not fully capture the eddy processes that naturally flatten isopycnals and release APE. As a result, isopycnal slopes remain steeper than they should be unless the unresolved eddy effects are parameterised. More details can be found in [@mitgcm_gmredi]. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Baroclinic instability converts available potential energy (APE) stored in sloping isopycnals into eddy kinetic energy (EKE). In an eddy-permitting 25km configuration, this conversion is only partly resolved hence the model does not fully capture the eddy processes that naturally flatten isopycnals and release APE. As a result, isopycnal slopes remain steeper than they should be unless the unresolved eddy effects are parameterised. More details can be found in [@mitgcm_gmredi]. | |
| Baroclinic instability converts available potential energy (APE) stored in sloping isopycnals into eddy kinetic energy (EKE). In an eddy-permitting 25km configuration, this conversion is only partly resolved [1] hence the model does not fully capture the eddy processes that naturally flatten isopycnals and release APE. As a result, isopycnal slopes remain steeper than they should be unless the unresolved eddy effects are parameterised. More details can be found in [@mitgcm_gmredi]. |
Don't commit the above! Rather suggesting a reference insert at [1]
[1] the standard ref: https://www.sciencedirect.com/science/article/abs/pii/S1463500313001601
Also on this
More details can be found in [@mitgcm_gmredi]
Details of what exactly?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry for the confusion. I meant details of the physical basis and formulation of GM.
| Baroclinic instability converts available potential energy (APE) stored in sloping isopycnals into eddy kinetic energy (EKE). In an eddy-permitting 25km configuration, this conversion is only partly resolved hence the model does not fully capture the eddy processes that naturally flatten isopycnals and release APE. As a result, isopycnal slopes remain steeper than they should be unless the unresolved eddy effects are parameterised. More details can be found in [@mitgcm_gmredi]. | |
| Baroclinic instability converts available potential energy (APE) stored in sloping isopycnals into eddy kinetic energy (EKE). In an eddy-permitting 25km configuration, this conversion is only partly resolved hence the model does not fully capture the eddy processes that naturally flatten isopycnals and release APE. As a result, isopycnal slopes remain steeper than they should be unless the unresolved eddy effects are parameterised. More details on the physical basis and mathematical formulation of the GM parameterisation can be found in [@mitgcm_gmredi]. |
| $$ | ||
| \kappa_h(x,y,t) = r(\Delta, L_d)\max\left(\kappa_{\text{static}}, \kappa_{\text{Smagorinsky}}, \kappa_{\text{Leith}}\right) | ||
| $$ | ||
| Mesoscale eddies also induce irreversible mixing of tracers but primarily along neutral density surfaces rather than vertically. This diabatic component needs to be represented through an isopycnal diffusion parameterisation that diffuses tracers along neutral surfaces while avoiding spurious diapycnal mixing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I found these two sentences a little confusing. I think you are referring to "the real ocean" and not the parameterisation? In the second sentence the use of the word diabatic feels counter to what you are saying about a parameterisation that is focused on "along neutral surfaces".
The GM parameterization was originally derived to apply to the adiabatic interior ocean
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good catch! The use of diabatic is indeed not correct and misleading!
| Mesoscale eddies also induce irreversible mixing of tracers but primarily along neutral density surfaces rather than vertically. This diabatic component needs to be represented through an isopycnal diffusion parameterisation that diffuses tracers along neutral surfaces while avoiding spurious diapycnal mixing. | |
| Mesoscale eddies also induce irreversible mixing of tracers but primarily along neutral density surfaces rather than vertically. In ocean models, this effect is represented using an isopycnal diffusion parameterisation, which diffuses tracers along neutral surfaces while minimising spurious diapycnal mixing. |
| Mesoscale eddies also induce irreversible mixing of tracers but primarily along neutral density surfaces rather than vertically. This diabatic component needs to be represented through an isopycnal diffusion parameterisation that diffuses tracers along neutral surfaces while avoiding spurious diapycnal mixing. | ||
|
|
||
| where, | ||
| To represent both the flattening of isopycnals and the along-isopycnal tracer mixing, the configuration applies a hybrid mesoscale parameterisation that combines neutral diffusion [@redi1982oceanic] with the Gent-McWilliams (`GM`) eddy-induced advection scheme [@gent1990isopycnal]. Both require an eddy diffusivity, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
To represent both the flattening of isopycnals and the along-isopycnal tracer mixing
On my previous comment, I think it is the "adiabatic flattening of isopycnals"? (Please correct me if I'm wrong!)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You are correct! But strictly quasi-adiabatic! :)
| - isopycnal tracer diffusivity ($KHTR$ in MOM6) | ||
|
|
||
| We enable `BOUND_KH = True` to locally limit the Laplacian diffusivity ensuring CFL stability. Specifically, a coefficient `Kh_Limit = 0.3 / (dt * 4.0)` is applied, taking grid spacing into account. To further improve numerical stability, we enable both `BETTER_BOUND_KH = True` and `BETTER_BOUND_AH = True`, which apply more refined constraints on Laplacian and biharmonic viscosities, respectively. We set `RES_SCALE_MEKE_VISC = False`, meaning the viscosity is not explicitly scaled by MEKE. For biharmonic viscosity, we apply a flow-dependent Smagorinsky parameterisation with no background value (`AH = 0.0`). The viscosity is dynamically computed based on the local strain rate by enabling `SMAGORINSKY_AH = True`, and is scaled using `SMAG_BI_CONST = 0.06` (the MOM6 default). Anisotropic viscosity is disabled via `ANISOTROPIC_VISCOSITY = False`. Finally, to maintain numerical stability, the biharmonic viscosity is locally bounded using `BOUND_AH = True`, with a coefficient limit `Ah_Limit = 0.3 / (dt * 64.0)`. | ||
| In MOM5, these coefficients were prescribed constants or latitude-dependent maps, but these choices are ad-hoc and not dynamically constrained. Hence MOM6 also offers the Mesoscale Eddy Kinetic Energy (`MEKE`) scheme [@mom6_mom_meke] which provides a flow-dependent, scale-aware `GM` diffusivity. `MEKE` prognostically computes an eddy kinetic energy field $E(x,y,z,t)$ from which it derives an eddy velocity scale, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| In MOM5, these coefficients were prescribed constants or latitude-dependent maps, but these choices are ad-hoc and not dynamically constrained. Hence MOM6 also offers the Mesoscale Eddy Kinetic Energy (`MEKE`) scheme [@mom6_mom_meke] which provides a flow-dependent, scale-aware `GM` diffusivity. `MEKE` prognostically computes an eddy kinetic energy field $E(x,y,z,t)$ from which it derives an eddy velocity scale, | |
| In MOM5, these coefficients were prescribed constants or latitude-dependent maps, but these choices are ad-hoc and not dynamically constrained. Hence MOM6 also offers the Mesoscale Eddy Kinetic Energy (`MEKE`) scheme [@mom6_mom_meke] which provides a flow-dependent, scale-aware `GM` diffusivity. `MEKE` prognostically computes an eddy kinetic energy field $E(x,y,z,t)$ ($m^2 s^-2$) from which it derives an eddy velocity scale: |
| 1. $r(\Delta, L_d)$ (`RESOLN_SCALED_KH = True`) is a resolution function. This will scale down the Laplacian component of viscosity in well-resolved regions. | ||
| 2. $\kappa_{\text{Smagorinsky}}$ (`SMAGORINSKY_KH = False`) is from the dynamic Smagorinsky scheme, | ||
| 3. $\kappa_{\text{Leith}}$ (`LEITH_KH = False`) is the Leith viscosity. | ||
| - thickness diffusivity ($KHTH$ in MOM6) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should use the MOM6 notation here (as well), as in κ_o see here
Not sure if khtr has a symbol?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd prefer to use the code-level parameter name here (KHTH), so we dont need to worry about differences in the MOM6 notation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for all your work on this @minghangli-uni! I found the new version much easier to read and I've learnt a lot from reading it. 😃
I've left some additional comments on top of my older comments above (it seems some have appeared as one line reviews and others got collated).
I briefly chatted to @AndyHoggANU late last week and his GM sensitivity work is done and he'll share it soon. @AndyHoggANU feel free to have a look at my comments in the Isopycnal mixing section. Once we've chatted, I'd still like to chase down a few of the code paths and add that information in.
So we can get this out the door (as discussed at last week's OSIT)... @minghangli-uni, once you've resolved the suggestions. Can I suggest we move the Isopycnal mixing section (and sub-sections) to a new PR. We can then proceed with a release as @anton-seaice suggested.
One minor thing, I noticed there's a tendency to flip flop between referencing the MOM docs/MIT with a hyperlink versus sometimes with a footnote. I think we should be consistent. Although, if we are going to use footnoted ones we should probably use it correctly (e.g. date accessed etc).
|
|
||
| For the channel drag, a Laplacian Smagorinsky constant ([`SMAG_CONST_CHANNEL = 0.15`](https://github.com/ACCESS-NRI/MOM6/blob/569ba3126835bfcdea5e39c46eeae01938f5413c/src/parameterizations/vertical/MOM_set_viscosity.F90#L967-L969)) is used. | ||
| $$ | ||
| U_{eddy}=\sqrt{2E} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The docs use U_e I think it helps if we are consistent.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| U_{eddy}=\sqrt{2E} | |
| U_{e}=\sqrt{2E} |
| and an eddy length scale ($L$) based on a configurable combination of multiple length scales. The GM thickness diffusivity is then computed as, | ||
|
|
||
| $$ | ||
| KHTH = CU_{eddy}L |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you have a reference for this?
See earlier comment about notation for khth.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| Hence when EKE is large, `GM` diffusivity increases with stronger flattening of isopycnals and similarly when EKE is small, `GM` diffusivity decreases and let the resolved eddies do the work. Hence the `GM` flattening of isopycnals becomes energetically consistent and scale-aware, adapting automatically to the local eddy field. | ||
|
|
||
| #### Isopycnal thickness diffusion (Gent McWilliams bolus transport) | ||
| In MOM6, `GM` is implemented in a thickness diffusion form. MOM6 adds a diffusive flux of layer thickness to the thickness (mass continuity) equation. This height diffusion formulation is mathematically equivalent to the original scheme, which was expressed as an eddy-induced (bolus) velocity that advects tracers and layer thickness [@adcroft2019gfdl]. `GM` is turned on via `THICKNESSDIFFUSE = True`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
MOM6 adds a diffusive flux of layer thickness to the thickness (mass continuity) equation
When you say "mass continuity", in a Boussinesq Approximation model, I think of volume?
e.g.
This is also called the incompressibility equation. In the Boussinesq approximation, volume conservation replaced mass conservation.
We are running mom6 in Boussinesq I imagine? (MOM6 supports a non-Boussinesq formulation)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mass continuity is kind of like a fluid mechanics terminology but yes in Boussinesq, that is also volume continuity.
|
|
||
| #### Isopycnal thickness diffusion (`GM`) | ||
| `GM` is turned on via `THICKNESSDIFFUSE = True`. Instead of using a fixed `GM` thickness diffusivity (`KHTH = 0.0`), the Mesoscale Eddy Kinetic Energy (MEKE) scheme (`USE_MEKE = True`) is turned on. MEKE activates a prognostic equation for eddy kinetic energy (EKE) and a spatially varying GM streamfunction. The MEKE parameterisation is based on the work of [@jansen2015parameterization], where an EKE budget is solved. The model converts that EKE into an eddy diffusivity (GM diffusivity) via mixing-length theory. In practice, this means the thickness diffusion coefficient is not a fixed number but evolves according to local conditions. Our configuration does not feed external `EKE` data (`EKE_SOURCE = "prog"`), so the model instability growth provides the source of `EKE`. `MEKE_BGSRC = 1.0E-13` prevents `EKE` from decaying to zero in very quiet regions. It serves as a floor to aid numerical stability and is analogous to a background diffusivity but in energy form. `MEKE_GMCOEFF = 1.0` means the scheme converts eddy potential energy to eddy kinetic energy with 100% efficiency for the `GM` effect. `MEKE_KHTR_FAC = 0.5` and `MEKE_KHTH_FAC = 0.5` map some of the eddy energy to tracer diffusivity and lateral thickness diffusivity, respectively. So the configuration actually uses `MEKE` to the job of `GM`: flatterning isopycnals to remove available potential energy, but in a physically informed way using a local EKE prognostic variable. We use `KHTH_USE_FGNV_STREAMFUNCTION = True` which solves a 1D boundary value problem so the `GM` streamfunction is automatically smooth in the vertical and vanishes at the surface and bottom [@ferrari2010boundary]. `FGNV_FILTER_SCALE = 0.1` is used to damp the eddy field noise. | ||
| This configuration uses `MEKE` (`USE_MEKE = True`) to provide the `GM` diffusivity. Because we do not supply an external EKE field (`EKE_SOURCE = "prog"`), EKE is generated internally through instability growth. `MEKE_BGSRC = 1.0E-13` prevents `EKE` from decaying to zero in very quiet regions. It serves as a floor to aid numerical stability and is analogous to a background diffusivity but in energy form. `MEKE_GMCOEFF = 1.0` means the scheme converts eddy potential energy to eddy kinetic energy with 100% efficiency for the `GM` effect. `MEKE_KHTR_FAC = 0.5` and `MEKE_KHTH_FAC = 0.5` map some of the eddy energy to tracer diffusivity and thickness diffusivity, respectively. In practice, `MEKE` supplies the dynamically varying `GM` coefficient that flattens isopycnals and removes APE in a physically informed way. We use `KHTH_USE_FGNV_STREAMFUNCTION = True`, which solves a 1-D boundary-value problem to ensure the `GM` streamfunction is smooth in the vertical and vanishes at the surface and bottom [@ferrari2010boundary]. `FGNV_FILTER_SCALE = 0.1` applies light spatial filtering to reduce noise in the diagnosed streamfunction. We set `RES_SCALE_MEKE_VISC = False`, meaning viscosity is not explicitly scaled by `MEKE`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This configuration uses
MEKE(USE_MEKE = True) to provide theGMdiffusivity.
I think @AndyHoggANU suggested it would be more like an upper bound? Or does it actually specify the amount of diffusion to be done by GM?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My understanding was MEKE computes the GM diffusivity and not just simply an upper bound.
|
|
||
| #### Isopycnal thickness diffusion (`GM`) | ||
| `GM` is turned on via `THICKNESSDIFFUSE = True`. Instead of using a fixed `GM` thickness diffusivity (`KHTH = 0.0`), the Mesoscale Eddy Kinetic Energy (MEKE) scheme (`USE_MEKE = True`) is turned on. MEKE activates a prognostic equation for eddy kinetic energy (EKE) and a spatially varying GM streamfunction. The MEKE parameterisation is based on the work of [@jansen2015parameterization], where an EKE budget is solved. The model converts that EKE into an eddy diffusivity (GM diffusivity) via mixing-length theory. In practice, this means the thickness diffusion coefficient is not a fixed number but evolves according to local conditions. Our configuration does not feed external `EKE` data (`EKE_SOURCE = "prog"`), so the model instability growth provides the source of `EKE`. `MEKE_BGSRC = 1.0E-13` prevents `EKE` from decaying to zero in very quiet regions. It serves as a floor to aid numerical stability and is analogous to a background diffusivity but in energy form. `MEKE_GMCOEFF = 1.0` means the scheme converts eddy potential energy to eddy kinetic energy with 100% efficiency for the `GM` effect. `MEKE_KHTR_FAC = 0.5` and `MEKE_KHTH_FAC = 0.5` map some of the eddy energy to tracer diffusivity and lateral thickness diffusivity, respectively. So the configuration actually uses `MEKE` to the job of `GM`: flatterning isopycnals to remove available potential energy, but in a physically informed way using a local EKE prognostic variable. We use `KHTH_USE_FGNV_STREAMFUNCTION = True` which solves a 1D boundary value problem so the `GM` streamfunction is automatically smooth in the vertical and vanishes at the surface and bottom [@ferrari2010boundary]. `FGNV_FILTER_SCALE = 0.1` is used to damp the eddy field noise. | ||
| This configuration uses `MEKE` (`USE_MEKE = True`) to provide the `GM` diffusivity. Because we do not supply an external EKE field (`EKE_SOURCE = "prog"`), EKE is generated internally through instability growth. `MEKE_BGSRC = 1.0E-13` prevents `EKE` from decaying to zero in very quiet regions. It serves as a floor to aid numerical stability and is analogous to a background diffusivity but in energy form. `MEKE_GMCOEFF = 1.0` means the scheme converts eddy potential energy to eddy kinetic energy with 100% efficiency for the `GM` effect. `MEKE_KHTR_FAC = 0.5` and `MEKE_KHTH_FAC = 0.5` map some of the eddy energy to tracer diffusivity and thickness diffusivity, respectively. In practice, `MEKE` supplies the dynamically varying `GM` coefficient that flattens isopycnals and removes APE in a physically informed way. We use `KHTH_USE_FGNV_STREAMFUNCTION = True`, which solves a 1-D boundary-value problem to ensure the `GM` streamfunction is smooth in the vertical and vanishes at the surface and bottom [@ferrari2010boundary]. `FGNV_FILTER_SCALE = 0.1` applies light spatial filtering to reduce noise in the diagnosed streamfunction. We set `RES_SCALE_MEKE_VISC = False`, meaning viscosity is not explicitly scaled by `MEKE`. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| This configuration uses `MEKE` (`USE_MEKE = True`) to provide the `GM` diffusivity. Because we do not supply an external EKE field (`EKE_SOURCE = "prog"`), EKE is generated internally through instability growth. `MEKE_BGSRC = 1.0E-13` prevents `EKE` from decaying to zero in very quiet regions. It serves as a floor to aid numerical stability and is analogous to a background diffusivity but in energy form. `MEKE_GMCOEFF = 1.0` means the scheme converts eddy potential energy to eddy kinetic energy with 100% efficiency for the `GM` effect. `MEKE_KHTR_FAC = 0.5` and `MEKE_KHTH_FAC = 0.5` map some of the eddy energy to tracer diffusivity and thickness diffusivity, respectively. In practice, `MEKE` supplies the dynamically varying `GM` coefficient that flattens isopycnals and removes APE in a physically informed way. We use `KHTH_USE_FGNV_STREAMFUNCTION = True`, which solves a 1-D boundary-value problem to ensure the `GM` streamfunction is smooth in the vertical and vanishes at the surface and bottom [@ferrari2010boundary]. `FGNV_FILTER_SCALE = 0.1` applies light spatial filtering to reduce noise in the diagnosed streamfunction. We set `RES_SCALE_MEKE_VISC = False`, meaning viscosity is not explicitly scaled by `MEKE`. | |
| This configuration uses `MEKE` (`USE_MEKE = True`) to provide the `GM` diffusivity. Because we do not supply an external EKE field (`EKE_SOURCE` is not equal to "file"`), EKE is generated internally through instability growth, i.e., solving the EKE equation (`EKE_SOURCE = "prog"`). `MEKE_BGSRC = 1.0E-13` prevents `EKE` from decaying to zero in very quiet regions. It serves as a floor to aid numerical stability and is analogous to a background diffusivity but in energy form. `MEKE_GMCOEFF = 1.0` means the scheme converts eddy potential energy to eddy kinetic energy with 100% efficiency for the `GM` effect. `MEKE_KHTR_FAC = 0.5` and `MEKE_KHTH_FAC = 0.5` map some of the eddy energy to tracer diffusivity and thickness diffusivity, respectively. In practice, `MEKE` supplies the dynamically varying `GM` coefficient that flattens isopycnals and removes APE in a physically informed way. We use `KHTH_USE_FGNV_STREAMFUNCTION = True`, which solves a 1-D boundary-value problem to ensure the `GM` streamfunction is smooth in the vertical and vanishes at the surface and bottom [@ferrari2010boundary]. `FGNV_FILTER_SCALE = 0.1` applies light spatial filtering to reduce noise in the diagnosed streamfunction. We set `RES_SCALE_MEKE_VISC = False`, meaning viscosity is not explicitly scaled by `MEKE`. |
| This configuration uses `MEKE` (`USE_MEKE = True`) to provide the `GM` diffusivity. Because we do not supply an external EKE field (`EKE_SOURCE = "prog"`), EKE is generated internally through instability growth. `MEKE_BGSRC = 1.0E-13` prevents `EKE` from decaying to zero in very quiet regions. It serves as a floor to aid numerical stability and is analogous to a background diffusivity but in energy form. `MEKE_GMCOEFF = 1.0` means the scheme converts eddy potential energy to eddy kinetic energy with 100% efficiency for the `GM` effect. `MEKE_KHTR_FAC = 0.5` and `MEKE_KHTH_FAC = 0.5` map some of the eddy energy to tracer diffusivity and thickness diffusivity, respectively. In practice, `MEKE` supplies the dynamically varying `GM` coefficient that flattens isopycnals and removes APE in a physically informed way. We use `KHTH_USE_FGNV_STREAMFUNCTION = True`, which solves a 1-D boundary-value problem to ensure the `GM` streamfunction is smooth in the vertical and vanishes at the surface and bottom [@ferrari2010boundary]. `FGNV_FILTER_SCALE = 0.1` applies light spatial filtering to reduce noise in the diagnosed streamfunction. We set `RES_SCALE_MEKE_VISC = False`, meaning viscosity is not explicitly scaled by `MEKE`. | ||
|
|
||
| By using `MEKE`, the model is effectively resolution-aware, as resolution increases and resolves more eddies, the diagnostic EKE and hence `GM` coefficient naturally reduces. At the same time , in coarser areas or higher latitudes where eddies are still under-resolved, `MEKE` ramps up the eddy mixing. This avoids the need for ad-hoc spatial maps of `GM` coefficients. By using `FGNV`[@ferrari2010boundary], it ensures a robust energetically consistent vertical structure. | ||
| With `MEKE`, MOM6 becomes explicitly resolution-aware: as horizontal resolution increases and more eddy processes are partially resolved, the diagnosed `GM` coefficient naturally decreases; conversely, `GM` strengthens where eddies remain under-resolved (e.g. high latitudes), removing the need for ad-hoc spatial maps of `GM` coefficients. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
removing the need for ad-hoc spatial maps of
GMcoefficients
perhaps re-phrase without the use of the word "ad-hoc". Perhaps less dynamically aware?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about this?
| With `MEKE`, MOM6 becomes explicitly resolution-aware: as horizontal resolution increases and more eddy processes are partially resolved, the diagnosed `GM` coefficient naturally decreases; conversely, `GM` strengthens where eddies remain under-resolved (e.g. high latitudes), removing the need for ad-hoc spatial maps of `GM` coefficients. | |
| With `MEKE`, MOM6 becomes explicitly resolution-aware: as horizontal resolution increases and more eddy processes are partially resolved, the diagnosed `GM` coefficient naturally decreases; conversely, `GM` strengthens where eddies remain under-resolved (e.g. high latitudes), reducing the need for prescribed spatially varying `GM` coefficients. |
|
|
||
| #### Isopycnal tracer mixing (`Redi`) | ||
| Neutral tracer diffusion is turned on with `USE_NEUTRAL_DIFFUSION = True`, which means that tracers are mixed primarily along surfaces of constant density, which greatly reduces spurious diapycnal mixing in stratified oceans. The coefficient for along-isopycnal tracer diffusion is set to `KHTR = 50.0`. This number is adopted from [GFDL OM4_05 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM4_05/MOM_parameter_doc.all#L2419). In addition, we also use `USE_STORED_SLOPES = True` and keep `NDIFF_CONTINUOUS = True`. | ||
| Neutral tracer diffusion is enabled with `USE_NEUTRAL_DIFFUSION = True`, allowing tracers to mix primarily along neutral density surfaces, thus reducing spurious diapycnal mixing in stratified regions. The along-isopycnal diffusivity is set to `KHTR = 50.0`, following [GFDL OM4_05 configuration](https://github.com/NOAA-GFDL/MOM6-examples/blob/3c1de3512e2200bfc10d9e5150715c9df76dbd30/ice_ocean_SIS2/Baltic_OM4_05/MOM_parameter_doc.all#L2419). We also use `USE_STORED_SLOPES = True` and keep `NDIFF_CONTINUOUS = True` to ensure smooth neutral-direction slopes and numerical stability. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The along-isopycnal diffusivity is set to
KHTR = 50.0
Some of @AndyHoggANU's sensitivity work suggested that this might not be occurring so we should double check.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Comments on this @AndyHoggANU ?
|
|
||
| The 25km configuration uses a tripolar grid to avoid a singularity at the North Pole. The domain is zonally periodic `REENTRANT_X = True` and open at the north via a tripolar fold `TRIPOLAR_N = True` while closed in the south `REENTRANT_Y = False`. The horizontal grid has `1440x1152` tracer points. This is closely aligned with prior models, such as `ACCESS-OM2-025` and `GFDL OM4/OM5` (`1440x1080`) and provides eddy-permitting detail in the ocean while maintaining numerical stability. See [Grids](/inputs/Grids/) for more information. | ||
| ### Grid description | ||
| The 25km configuration uses a tripolar grid to avoid a singularity at the North Pole. The domain is zonally periodic `REENTRANT_X = True` and open at the north via a tripolar fold `TRIPOLAR_N = True` while closed in the south `REENTRANT_Y = False`. The horizontal grid has `1440x1152` [tracer points](https://github.com/NOAA-GFDL/MOM6-examples/blob/f33849827fba879cf0a2ef39aba11822daef93f1/ice_ocean_SIS2/OM4_025/MOM_parameter_doc.all#L219-L224). This is closely aligned with prior models, such as `ACCESS-OM2-025` and `GFDL OM4/OM5` (`1440x1080`) and provides eddy-permitting detail in the ocean while maintaining numerical stability. See [Grids](/inputs/Grids/) for more information. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh sorry, my mistake, I think I meant to point to ours.
@chrisb13 can you please clarify what you mean here. Do you mean:
@minghangli-uni, all but three of @chrisb13's review comments are to changes I made in this PR (all but the Isopycnal mixing section). I suggest I respond to these. We can decide what to do with the comments on the Isopycnal mixing section pending @chrisb13's response to my question above. |
Based on the summary, I think you might have missed my previous line? Emphasised below:
As in, I'm suggesting @minghangli-uni can implement or not the suggestions and then it gets moved to a new PR. Make sense? |
What gets moved to a new PR? |
This was just a means of getting a release out as discussed last week. Happy to chat if still unclear? |
|
@chrisb13 and I just had a chat. The plan is:
|
I’ve responded to the comments relevant to my changes.
Happy to do this once the above items are addressed. |
Contributes to #904
Current rendered version here.