diff --git a/MOM_input b/MOM_input index becf5cf3..a01f6d9b 100644 --- a/MOM_input +++ b/MOM_input @@ -504,6 +504,36 @@ SIMPLE_TKE_TO_KD = True ! [Boolean] default = False ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact ! energetics for an isopycnal layer-formulation. +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization +INT_TIDE_DISSIPATION = True ! [Boolean] default = False + ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, + ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" + ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with + ! INT_TIDE_DISSIPATION. Valid values are: + ! STLAURENT_02 - Use the St. Laurent et al exponential + ! decay profile. + ! POLZIN_09 - Use the Polzin WKB-stretched algebraic + ! decay profile. +INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 + ! The decay scale away from the bottom for tidal TKE with the new coding when + ! INT_TIDE_DISSIPATION is used. +KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 + ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 + ! km, as in St.Laurent et al. 2002. +KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 + ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. +TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 + ! The maximum internal tide energy source available to mix above the bottom + ! boundary layer with INT_TIDE_DISSIPATION. +READ_TIDEAMP = True ! [Boolean] default = False + ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude + ! with INT_TIDE_DISSIPATION. +H2_FILE = "bottom_roughness.nc" ! + ! The path to the file containing the sub-grid-scale topographic roughness + ! amplitude with INT_TIDE_DISSIPATION. + ! === module MOM_bkgnd_mixing === ! Adding static vertical background mixing coefficients KD = 1.5E-05 ! [m2 s-1] diff --git a/config.yaml b/config.yaml index ecc4b07e..e436b9e1 100644 --- a/config.yaml +++ b/config.yaml @@ -25,6 +25,8 @@ input: - /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/grids/vertical/global.025deg/2025.03.12/ocean_vgrid.nc - /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/initial_conditions/global.025deg/2025.03.19/ocean_temp_salt.res.nc - /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/surface_salt_restoring/global.025deg/2025.01.30/salt_sfc_restore.nc + - /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/tidal_external_files/global.25km/2025.05.15/bottom_roughness.nc + - /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/tidal_external_files/global.25km/2025.05.15/tideamp.nc - /g/data/vk83/prerelease/configurations/inputs/access-om3/share/grids/global.25km/2025.05.15/topog.nc - /g/data/vk83/prerelease/configurations/inputs/access-om3/share/meshes/global.25km/2025.05.15/access-om3-025deg-ESMFmesh.nc - /g/data/vk83/prerelease/configurations/inputs/access-om3/share/meshes/global.25km/2025.05.15/access-om3-025deg-nomask-ESMFmesh.nc diff --git a/docs/MOM_parameter_doc.all b/docs/MOM_parameter_doc.all index 28da79d6..984b10c1 100644 --- a/docs/MOM_parameter_doc.all +++ b/docs/MOM_parameter_doc.all @@ -1718,9 +1718,87 @@ SET_DIFF_ANSWER_DATE = 99991231 ! default = 99991231 ! Vertical Tidal Mixing Parameterization USE_CVMix_TIDAL = False ! [Boolean] default = False ! If true, turns on tidal mixing via CVMix -INT_TIDE_DISSIPATION = False ! [Boolean] default = False +INT_TIDE_DISSIPATION = True ! [Boolean] default = False ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +TIDAL_MIXING_ANSWER_DATE = 99991231 ! default = 99991231 + ! The vintage of the order of arithmetic and expressions in the tidal mixing + ! calculations. Values below 20190101 recover the answers from the end of 2018, + ! while higher values use updated and more robust forms of the same expressions. +INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" + ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with + ! INT_TIDE_DISSIPATION. Valid values are: + ! STLAURENT_02 - Use the St. Laurent et al exponential + ! decay profile. + ! POLZIN_09 - Use the Polzin WKB-stretched algebraic + ! decay profile. +LEE_WAVE_DISSIPATION = False ! [Boolean] default = False + ! If true, use an lee wave driven dissipation scheme to drive diapycnal mixing, + ! along the lines of Nikurashin (2010) and using the St. Laurent et al. (2002) + ! and Simmons et al. (2004) vertical profile +INT_TIDE_LOWMODE_DISSIPATION = False ! [Boolean] default = False + ! If true, consider mixing due to breaking low modes that have been remotely + ! generated; as with itidal drag on the barotropic tide, use an internal tidal + ! dissipation scheme to drive diapycnal mixing, along the lines of St. Laurent + ! et al. (2002) and Simmons et al. (2004). +NU_POLZIN = 0.0697 ! [nondim] default = 0.0697 + ! When the Polzin decay profile is used, this is a non-dimensional constant in + ! the expression for the vertical scale of decay for the tidal energy + ! dissipation. +NBOTREF_POLZIN = 9.61E-04 ! [s-1] default = 9.61E-04 + ! When the Polzin decay profile is used, this is the reference value of the + ! buoyancy frequency at the ocean bottom in the Polzin formulation for the + ! vertical scale of decay for the tidal energy dissipation. +POLZIN_DECAY_SCALE_FACTOR = 1.0 ! [nondim] default = 1.0 + ! When the Polzin decay profile is used, this is a scale factor for the vertical + ! scale of decay of the tidal energy dissipation. +POLZIN_SCALE_MAX_FACTOR = 1.0 ! [nondim] default = 1.0 + ! When the Polzin decay profile is used, this is a factor to limit the vertical + ! scale of decay of the tidal energy dissipation to + ! POLZIN_DECAY_SCALE_MAX_FACTOR times the depth of the ocean. +POLZIN_MIN_DECAY_SCALE = 0.0 ! [m] default = 0.0 + ! When the Polzin decay profile is used, this is the minimum vertical decay + ! scale for the vertical profile + ! of internal tide dissipation with the Polzin (2009) formulation +INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 + ! The decay scale away from the bottom for tidal TKE with the new coding when + ! INT_TIDE_DISSIPATION is used. +MU_ITIDES = 0.2 ! [nondim] default = 0.2 + ! A dimensionless turbulent mixing efficiency used with INT_TIDE_DISSIPATION, + ! often 0.2. +GAMMA_ITIDES = 0.3333 ! [nondim] default = 0.3333 + ! The fraction of the internal tidal energy that is dissipated locally with + ! INT_TIDE_DISSIPATION. THIS NAME COULD BE BETTER. +MIN_ZBOT_ITIDES = 0.0 ! [m] default = 0.0 + ! Turn off internal tidal dissipation when the total ocean depth is less than + ! this value. +KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 + ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 + ! km, as in St.Laurent et al. 2002. +UTIDE = 0.0 ! [m s-1] default = 0.0 + ! The constant tidal amplitude used with INT_TIDE_DISSIPATION. +KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 + ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. +TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 + ! The maximum internal tide energy source available to mix above the bottom + ! boundary layer with INT_TIDE_DISSIPATION. +READ_TIDEAMP = True ! [Boolean] default = False + ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude + ! with INT_TIDE_DISSIPATION. +TIDEAMP_FILE = "tideamp.nc" ! default = "tideamp.nc" + ! The path to the file containing the spatially varying tidal amplitudes with + ! INT_TIDE_DISSIPATION. +TIDEAMP_VARNAME = "tideamp" ! default = "tideamp" + ! The name of the tidal amplitude variable in the input file. +H2_FILE = "bottom_roughness.nc" ! + ! The path to the file containing the sub-grid-scale topographic roughness + ! amplitude with INT_TIDE_DISSIPATION. +ROUGHNESS_VARNAME = "h2" ! default = "h2" + ! The name in the input file of the squared sub-grid-scale topographic roughness + ! amplitude variable. +FRACTIONAL_ROUGHNESS_MAX = 0.1 ! [nondim] default = 0.1 + ! The maximum topographic roughness amplitude as a fraction of the mean depth, + ! or a negative value for no limitations on roughness. ML_RADIATION = False ! [Boolean] default = False ! If true, allow a fraction of TKE available from wind work to penetrate below ! the base of the mixed layer with a vertical decay scale determined by the @@ -1752,6 +1830,10 @@ LOTW_BBL_ANSWER_DATE = 20190101 ! default = 20190101 DZ_BBL_AVG_MIN = 0.0 ! [m] default = 0.0 ! A minimal distance over which to average to determine the average bottom ! boundary layer density. +SIMPLE_TKE_TO_KD = True ! [Boolean] default = False + ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary + ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact + ! energetics for an isopycnal layer-formulation. ! === module MOM_bkgnd_mixing === ! Adding static vertical background mixing coefficients @@ -2299,11 +2381,6 @@ MASK_SRESTORE = False ! [Boolean] default = False ! If true, read a file (salt_restore_mask) containing a mask for SSS restoring. CD_TIDES = 1.0E-04 ! [nondim] default = 1.0E-04 ! The drag coefficient that applies to the tides. -READ_TIDEAMP = False ! [Boolean] default = False - ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude - ! with INT_TIDE_DISSIPATION. -UTIDE = 0.0 ! [m s-1] default = 0.0 - ! The constant tidal amplitude used with INT_TIDE_DISSIPATION. READ_GUST_2D = False ! [Boolean] default = False ! If true, use a 2-dimensional gustiness supplied from an input file GUST_CONST = 0.0 ! [Pa] default = 0.0 diff --git a/docs/MOM_parameter_doc.short b/docs/MOM_parameter_doc.short index be85018a..37c080f6 100644 --- a/docs/MOM_parameter_doc.short +++ b/docs/MOM_parameter_doc.short @@ -383,6 +383,8 @@ BT_PROJECT_VELOCITY = True ! [Boolean] default = False ! use a predictor continuity step to find the pressure field, and then to do a ! corrector continuity step using a weighted average of the old and new ! velocities, with weights of (1-BEBT) and BEBT. +DYNAMIC_SURFACE_PRESSURE = True ! [Boolean] default = False + ! If true, add a dynamic pressure due to a viscous ice shelf, for instance. BEBT = 0.2 ! [nondim] default = 0.1 ! BEBT determines whether the barotropic time stepping uses the forward-backward ! time-stepping scheme or a backward Euler scheme. BEBT is valid in the range @@ -446,6 +448,36 @@ EPBL_IS_ADDITIVE = False ! [Boolean] default = True ! Otherwise, the larger of kappa-shear and ePBL diffusivities are used. ! === module MOM_set_diffusivity === + +! === module MOM_tidal_mixing === +! Vertical Tidal Mixing Parameterization +INT_TIDE_DISSIPATION = True ! [Boolean] default = False + ! If true, use an internal tidal dissipation scheme to drive diapycnal mixing, + ! along the lines of St. Laurent et al. (2002) and Simmons et al. (2004). +INT_TIDE_PROFILE = "POLZIN_09" ! default = "STLAURENT_02" + ! INT_TIDE_PROFILE selects the vertical profile of energy dissipation with + ! INT_TIDE_DISSIPATION. Valid values are: + ! STLAURENT_02 - Use the St. Laurent et al exponential + ! decay profile. + ! POLZIN_09 - Use the Polzin WKB-stretched algebraic + ! decay profile. +INT_TIDE_DECAY_SCALE = 300.3003003003003 ! [m] default = 500.0 + ! The decay scale away from the bottom for tidal TKE with the new coding when + ! INT_TIDE_DISSIPATION is used. +KAPPA_ITIDES = 6.28319E-04 ! [m-1] default = 6.283185307179586E-04 + ! A topographic wavenumber used with INT_TIDE_DISSIPATION. The default is 2pi/10 + ! km, as in St.Laurent et al. 2002. +KAPPA_H2_FACTOR = 0.84 ! [nondim] default = 1.0 + ! A scaling factor for the roughness amplitude with INT_TIDE_DISSIPATION. +TKE_ITIDE_MAX = 0.1 ! [W m-2] default = 1000.0 + ! The maximum internal tide energy source available to mix above the bottom + ! boundary layer with INT_TIDE_DISSIPATION. +READ_TIDEAMP = True ! [Boolean] default = False + ! If true, read a file (given by TIDEAMP_FILE) containing the tidal amplitude + ! with INT_TIDE_DISSIPATION. +H2_FILE = "bottom_roughness.nc" ! + ! The path to the file containing the sub-grid-scale topographic roughness + ! amplitude with INT_TIDE_DISSIPATION. BBL_EFFIC = 0.01 ! [nondim] default = 0.2 ! The efficiency with which the energy extracted by bottom drag drives BBL ! diffusion. This is only used if BOTTOMDRAGLAW is true. @@ -456,6 +488,10 @@ USE_LOTW_BBL_DIFFUSIVITY = True ! [Boolean] default = False ! If true, uses a simple, imprecise but non-coordinate dependent, model of BBL ! mixing diffusivity based on Law of the Wall. Otherwise, uses the original BBL ! scheme. +SIMPLE_TKE_TO_KD = True ! [Boolean] default = False + ! If true, uses a simple estimate of Kd/TKE that will work for arbitrary + ! vertical coordinates. If false, calculates Kd/TKE and bounds based on exact + ! energetics for an isopycnal layer-formulation. ! === module MOM_bkgnd_mixing === ! Adding static vertical background mixing coefficients diff --git a/docs/available_diags.000000 b/docs/available_diags.000000 index b3a7c50c..4a7c5fd7 100644 --- a/docs/available_diags.000000 +++ b/docs/available_diags.000000 @@ -2125,6 +2125,78 @@ ! long_name: Depth integrated heat tendency due to frazil formation ! units: W m-2 ! cell_methods: xh:mean yh:mean area:mean +"Kd_itides" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Internal Tide Driven Diffusivity + ! units: m2 s-1 + ! cell_methods: xh:mean yh:mean zi:point area:mean + ! variants: {Kd_itides,Kd_itides_xyave} +"TKE_itidal" [Unused] + ! modules: {ocean_model,ocean_model_d2} + ! long_name: Internal Tide Driven Turbulent Kinetic Energy + ! units: W m-2 + ! cell_methods: xh:mean yh:mean area:mean +"Nb" [Unused] + ! modules: {ocean_model,ocean_model_d2} + ! long_name: Bottom Buoyancy Frequency + ! units: s-1 + ! cell_methods: xh:mean yh:mean area:mean +"Kd_lowmode" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Internal Tide Driven Diffusivity (from propagating low modes) + ! units: m2 s-1 + ! cell_methods: xh:mean yh:mean zi:point area:mean + ! variants: {Kd_lowmode,Kd_lowmode_xyave} +"Fl_itides" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Vertical flux of tidal turbulent dissipation + ! units: m3 s-3 + ! cell_methods: xh:mean yh:mean zi:point area:mean + ! variants: {Fl_itides,Fl_itides_xyave} +"Fl_lowmode" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Vertical flux of tidal turbulent dissipation (from propagating low modes) + ! units: m3 s-3 + ! cell_methods: xh:mean yh:mean zi:point area:mean + ! variants: {Fl_lowmode,Fl_lowmode_xyave} +"Polzin_decay_scale" [Unused] + ! modules: {ocean_model,ocean_model_d2} + ! long_name: Vertical decay scale for the tidal turbulent dissipation with Polzin scheme + ! units: m + ! cell_methods: xh:mean yh:mean area:mean +"Polzin_decay_scale_scaled" [Unused] + ! modules: {ocean_model,ocean_model_d2} + ! long_name: Vertical decay scale for the tidal turbulent dissipation with Polzin scheme, scaled by N2_bot/N2_meanz + ! units: m + ! cell_methods: xh:mean yh:mean area:mean +"N2_b" [Unused] + ! modules: {ocean_model,ocean_model_d2} + ! long_name: Bottom Buoyancy frequency squared + ! units: s-2 + ! cell_methods: xh:mean yh:mean area:mean +"N2_meanz" [Unused] + ! modules: {ocean_model,ocean_model_d2} + ! long_name: Buoyancy frequency squared averaged over the water column + ! units: s-2 + ! cell_methods: xh:mean yh:mean area:mean +"Kd_Itidal_Work" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Work done by Internal Tide Diapycnal Mixing + ! units: W m-2 + ! cell_methods: xh:mean yh:mean zl:mean area:mean + ! variants: {Kd_Itidal_Work,Kd_Itidal_Work_xyave} +"Kd_Nikurashin_Work" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Work done by Nikurashin Lee Wave Drag Scheme + ! units: W m-2 + ! cell_methods: xh:mean yh:mean zl:mean area:mean + ! variants: {Kd_Nikurashin_Work,Kd_Nikurashin_Work_xyave} +"Kd_Lowmode_Work" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Work done by Internal Tide Diapycnal Mixing (low modes) + ! units: W m-2 + ! cell_methods: xh:mean yh:mean zl:mean area:mean + ! variants: {Kd_Lowmode_Work,Kd_Lowmode_Work_xyave} "Kd_BBL" [Unused] ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} ! long_name: Bottom Boundary Layer Diffusivity @@ -2149,6 +2221,30 @@ ! units: m2 s-1 ! cell_methods: xh:mean yh:mean zl:mean area:mean ! variants: {Kd_layer,Kd_layer_xyave} +"Kd_Work" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Work done by Diapycnal Mixing + ! units: W m-2 + ! cell_methods: xh:mean yh:mean zl:mean area:mean + ! variants: {Kd_Work,Kd_Work_xyave} +"maxTKE" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Maximum layer TKE + ! units: m3 s-3 + ! cell_methods: xh:mean yh:mean zl:mean area:mean + ! variants: {maxTKE,maxTKE_xyave} +"TKE_to_Kd" [Unused] + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Convert TKE to Kd + ! units: s2 m + ! cell_methods: xh:mean yh:mean zl:mean area:mean + ! variants: {TKE_to_Kd,TKE_to_Kd_xyave} +"N2" [Unused] (CMOR equivalent is "obvfsq") + ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} + ! long_name: Buoyancy frequency squared + ! units: s-2 + ! cell_methods: xh:mean yh:mean zi:point area:mean + ! variants: {N2,N2_xyave,obvfsq,obvfsq_xyave} "Kd_shear" [Unused] ! modules: {ocean_model,ocean_model_z,ocean_model_d2,ocean_model_z_d2} ! long_name: Shear-driven Diapycnal Diffusivity diff --git a/manifests/input.yaml b/manifests/input.yaml index 91c5450c..78516ba4 100644 --- a/manifests/input.yaml +++ b/manifests/input.yaml @@ -86,6 +86,11 @@ work/INPUT/access-om3-025deg-rof-remap-weights.nc: hashes: binhash: 72b02f07b141ec1471c7bd3d41498863 md5: 41657fc054785cc0e1741dd3639c3c16 +work/INPUT/bottom_roughness.nc: + fullpath: /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/tidal_external_files/global.25km/2025.05.15/bottom_roughness.nc + hashes: + binhash: 2107d37df1e8695f44b552645440aa1f + md5: 061dec8e4022c0dadccd10db8d31c567 work/INPUT/kmt.nc: fullpath: /g/data/vk83/prerelease/configurations/inputs/access-om3/cice/grids/global.25km/2025.05.15/kmt.nc hashes: @@ -111,6 +116,11 @@ work/INPUT/salt_sfc_restore.nc: hashes: binhash: a5bf255da3f43e764cc25469bfe816e3 md5: 6e37313d88f867af9f1d9f656ab633c9 +work/INPUT/tideamp.nc: + fullpath: /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/tidal_external_files/global.25km/2025.05.15/tideamp.nc + hashes: + binhash: 1e061e784b1302304c67a1d6c23360a7 + md5: dc4b570589028ce3d09d55d64a7153f5 work/INPUT/topog.nc: fullpath: /g/data/vk83/prerelease/configurations/inputs/access-om3/share/grids/global.25km/2025.05.15/topog.nc hashes: