mom_internal_tides module reference¶
Subroutines that use the ray-tracing equations to propagate the internal tide energy density.
Data Types¶
This control structure has parameters for the MOM_internal_tides module. |
|
A structure with the active energy loop bounds. |
Functions/Subroutines¶
Calls subroutines in this file that are needed to refract, propagate, and dissipate energy density of the internal tide. |
|
Checks for energy conservation on computational domain. |
|
Calculates the energy lost from the propagating internal tide due to scattering over small-scale roughness along the lines of Jayne & St. |
|
This subroutine extracts the energy lost from the propagating internal which has been summed across all angles, frequencies, and modes for a given mechanism and location. |
|
Returns the values of diffusivity corresponding to various mechanisms. |
|
Implements refraction on the internal waves at a single frequency. |
|
This subroutine calculates the 1-d flux for advection in angular space using a monotonic piecewise parabolic scheme. |
|
Propagates internal waves at a single frequency. |
|
Propagates the internal wave energy in the logical x-direction. |
|
Propagates the internal wave energy in the logical y-direction. |
|
Evaluates the zonal mass or volume fluxes in a layer. |
|
Evaluates the meridional mass or volume fluxes in a layer. |
|
Reflection of the internal waves at a single frequency. |
|
Moves energy across lines of partial reflection to prevent reflection of energy that is supposed to get across. |
|
Rotates points in the halos where required to accommodate changes in grid orientation, such as at the tripolar fold. |
|
Calculates left/right edge values for PPM reconstruction in x-direction. |
|
Calculates left/right edge valus for PPM reconstruction in y-direction. |
|
Limits the left/right edge values of the PPM reconstruction to give a reconstruction that is positive-definite. |
|
This subroutine initializes the internal tides module. |
|
This subroutine deallocates the memory associated with the internal tides control structure. |
Detailed Description¶
<undocumented>
Type Documentation¶
-
type
mom_internal_tides/int_tide_cs¶ This control structure has parameters for the MOM_internal_tides module.
- Type fields:
%id_cg1[integer] :: Diag handles.%id_cn[integer(:),allocatable] :: Diag handles.%id_tot_en[integer] :: Diag handles.%id_refl_pref[integer] :: Diag handles.%id_refl_ang[integer] :: Diag handles.%id_land_mask[integer] :: Diag handles.%id_trans[integer] :: Diag handles.%id_residual[integer] :: Diag handles.%id_dx_cv[integer] :: Diag handles.%id_dy_cu[integer] :: Diag handles.%id_tot_leak_loss[integer] :: Diag handles.%id_tot_quad_loss[integer] :: Diag handles.%id_tot_itidal_loss[integer] :: Diag handles.%id_tot_froude_loss[integer] :: Diag handles.%id_tot_residual_loss[integer] :: Diag handles.%id_tot_allprocesses_loss[integer] :: Diag handles.%id_en_mode[integer(:,:),allocatable] :: Diag handles.%id_itidal_loss_mode[integer(:,:),allocatable] :: Diag handles.%id_leak_loss_mode[integer(:,:),allocatable] :: Diag handles.%id_quad_loss_mode[integer(:,:),allocatable] :: Diag handles.%id_froude_loss_mode[integer(:,:),allocatable] :: Diag handles.%id_residual_loss_mode[integer(:,:),allocatable] :: Diag handles.%id_allprocesses_loss_mode[integer(:,:),allocatable] :: Diag handles.%id_itide_drag[integer(:,:),allocatable] :: Diag handles.%id_ub_mode[integer(:,:),allocatable] :: Diag handles.%id_cp_mode[integer(:,:),allocatable] :: Diag handles.%id_en_ang_mode[integer(:,:),allocatable] :: Diag handles.%id_itidal_loss_ang_mode[integer(:,:),allocatable] :: Diag handles.%id_tke_itidal_input[integer(:),allocatable] :: Diag handles.%id_ustruct_mode[integer(:),allocatable] :: Diag handles.%id_wstruct_mode[integer(:),allocatable] :: Diag handles.%id_int_w2_mode[integer(:),allocatable] :: Diag handles.%id_int_u2_mode[integer(:),allocatable] :: Diag handles.%id_int_n2w2_mode[integer(:),allocatable] :: Diag handles.%initialized[logical] :: True if this control structure has been initialized.%do_int_tides[logical] :: If true, use the internal tide code.%nfreq[integer] :: The number of internal tide frequency bands.%nmode[integer] :: The number of internal tide vertical modes.%nangle[integer] :: The number of internal tide angular orientations.%energized_angle[integer] :: If positive, only this angular band is energized for debugging purposes.%dt_itides[real] :: The timestep for internal tides ray-tracing [s ~> T].%uniform_test_cg[real] :: Uniform group velocity of internal tide for testing internal tides [L T-1 ~> m s-1].%corner_adv[logical] :: If true, use a corner advection rather than PPM.%upwind_1st[logical] :: If true, use a first-order upwind scheme.%simple_2nd[logical] :: If true, use a simple second order (arithmetic mean) interpolation of the edge values instead of the higher order interpolation.%vol_cfl[logical] :: If true, use the ratio of the open face lengths to the tracer cell areas when estimating CFL numbers. Without aggress_adjust, the default is false; it is always true with aggress_adjust.%use_ppmang[logical] :: If true, use PPM for advection of energy in angular space.%update_kd[logical] :: If true, the scheme will modify the diffusivities seen by the dynamics.%apply_refraction[logical] :: If false, skip refraction (for debugging)%apply_propagation[logical] :: If False, do not propagate energy (for debugging)%debug[logical] :: If true, use debugging prints.%init_forcing_only[logical] :: if True, add TKE forcing only at first step (for debugging)%force_posit_en[logical] :: if True, remove subroundoff negative values (needs enhancement)%add_tke_forcing[logical] :: Whether to add forcing, used by init_forcing_only.%fraction_tidal_input[real(:,:),allocatable] :: how the energy from one tidal component is distributed over the various vertical modes, 2d in frequency and mode [nondim]%refl_angle[real(:,:),allocatable] :: local coastline/ridge/shelf angles read from file [rad]%nullangle[real] :: placeholder value in cells with no reflection [rad]%refl_pref[real(:,:),allocatable] :: partial reflection coeff for each “coast cell” [nondim]%refl_pref_logical[logical(:,:),allocatable] :: true if reflecting cell with partial reflection%refl_dbl[logical(:,:),allocatable] :: identifies reflection cells where double reflection is possible (i.e. ridge cells)%trans[real(:,:),allocatable] :: partial transmission coeff for each “coast cell” [nondim]%residual[real(:,:),allocatable] :: residual of reflection and transmission coeff for each “coast cell” [nondim]%cp[real(:,:,:,:),allocatable] :: horizontal phase speed [L T-1 ~> m s-1]%tke_leak_loss[real(:,:,:,:,:),allocatable] :: energy lost due to misc background processes [H Z2 T-3 ~> m3 s-3 or W m-2]%tke_quad_loss[real(:,:,:,:,:),allocatable] :: energy lost due to quadratic bottom drag [H Z2 T-3 ~> m3 s-3 or W m-2]%tke_froude_loss[real(:,:,:,:,:),allocatable] :: energy lost due to wave breaking [H Z2 T-3 ~> m3 s-3 or W m-2]%tke_itidal_loss_fixed[real(:,:),allocatable] :: Fixed part of the energy lost due to small-scale drag [H Z2 L-2 ~> kg m-2] here; This will be multiplied by N and the squared near-bottom velocity (and by the near-bottom density in non-Boussinesq mode) to get the energy losses in [R Z4 H-1 L-2 ~> kg m-2 or m].%tke_itidal_loss[real(:,:,:,:,:),allocatable] :: energy lost due to small-scale wave drag [H Z2 T-3 ~> m3 s-3 or W m-2]%tke_residual_loss[real(:,:,:,:,:),allocatable] :: internal tide energy loss due to the residual at slopes [H Z2 T-3 ~> m3 s-3 or W m-2]%tke_slope_loss[real(:,:,:,:,:),allocatable] :: internal tide energy loss due to the residual at slopes [H Z2 T-3 ~> m3 s-3 or W m-2]%tke_input_glo_dt[real(:,:),allocatable] :: The integrated energy input to the internal waves [H Z2 L2 T-2 ~> m5 s-2 or J].%tke_leak_loss_glo_dt[real(:,:),allocatable] :: Integrated energy lost due to misc background processes [H Z2 L2 T-2 ~> m5 s-2 or J].%tke_quad_loss_glo_dt[real(:,:),allocatable] :: Integrated energy lost due to quadratic bottom drag [H Z2 L2 T-2 ~> m5 s-2 or J].%tke_froude_loss_glo_dt[real(:,:),allocatable] :: Integrated energy lost due to wave breaking [H Z2 L2 T-2 ~> m5 s-2 or J].%tke_itidal_loss_glo_dt[real(:,:),allocatable] :: energy lost due to small-scale wave drag [H Z2 T-2 ~> m3 s-2 or J m-2]%tke_residual_loss_glo_dt[real(:,:),allocatable] :: internal tide energy loss due to the residual at slopes [H Z2 L2 T-2 ~> m5 s-2 or J]%error_mode[real(:,:),allocatable] :: internal tide energy budget error for each mode [H Z2 L2 T-2 ~> m5 s-2 or J]%tot_leak_loss[real(:,:),allocatable] :: Energy loss rates due to misc background processes, summed over angle, frequency and mode [H Z2 T-3 ~> m3 s-3 or W m-2].%tot_quad_loss[real(:,:),allocatable] :: Energy loss rates due to quadratic bottom drag, summed over angle, frequency and mode [H Z2 T-3 ~> m3 s-3 or W m-2].%tot_itidal_loss[real(:,:),allocatable] :: Energy loss rates due to small-scale drag, summed over angle, frequency and mode [H Z2 T-3 ~> m3 s-3 or W m-2].%tot_froude_loss[real(:,:),allocatable] :: Energy loss rates due to wave breaking, summed over angle, frequency and mode [H Z2 T-3 ~> m3 s-3 or W m-2].%tot_residual_loss[real(:,:),allocatable] :: Energy loss rates due to residual on slopes, summed over angle, frequency and mode [H Z2 T-3 ~> m3 s-3 or W m-2].%tot_allprocesses_loss[real(:,:),allocatable] :: Energy loss rates due to all processes, summed over angle, frequency and mode [H Z2 T-3 ~> m3 s-3 or W m-2].%w_struct[real(:,:,:,:),allocatable] :: Vertical structure of vertical velocity (normalized) for each frequency and each mode [nondim].%u_struct[real(:,:,:,:),allocatable] :: Vertical structure of horizontal velocity (normalized and divided by layer thicknesses) for each frequency and each mode [Z-1 ~> m-1].%u_struct_max[real(:,:,:),allocatable] :: Maximum of u_struct, for each mode [Z-1 ~> m-1].%u_struct_bot[real(:,:,:),allocatable] :: Bottom value of u_struct, for each mode [Z-1 ~> m-1].%int_w2[real(:,:,:),allocatable] :: Vertical integral of w_struct squared, for each mode [H ~> m or kg m-2].%int_u2[real(:,:,:),allocatable] :: Vertical integral of u_struct squared, for each mode [H Z-2 ~> m-1 or kg m-4].%int_n2w2[real(:,:,:),allocatable] :: Depth-integrated Brunt Vaissalla freqency times vertical profile squared, for each mode [H T-2 ~> m s-2 or kg m-2 s-2].%q_itides[real] :: fraction of local dissipation [nondim]%mixing_effic[real] :: mixing efficiency [nondim]%en_sum[real] :: global sum of energy for use in debugging, in MKS units [m5 s-2 or J]%en_underflow[real] :: A minuscule amount of energy [H Z2 T-2 ~> m3 s-2 or J m-2].%en_restart_power[integer] :: A power factor of 2 by which to multiply the energy in restart [nondim].%time[type(time_type),pointer] :: A pointer to the model’s clock.%pass_en[type(group_pass_type)] :: Pass 5d array Energy as a group of 3d arrays.%inputdir[character (len=200)] :: directory to look for coastline angle file%decay_rate_2d[real(:,:,:,:),allocatable] :: rate at which internal tide energy is lost to the interior ocean internal wave field as a function of longitude, latitude, frequency and vertical mode [T-1 ~> s-1].%cdrag[real] :: The bottom drag coefficient [nondim].%drag_min_depth[real] :: The minimum total ocean thickness that will be used in the denominator of the quadratic drag terms for internal tides when INTERNAL_TIDE_QUAD_DRAG is true [H ~> m or kg m-2].%gamma_osborn[real] :: Mixing efficiency from Osborn 1980 [nondim].%kd_min[real] :: The minimum diapycnal diffusivity. [L2 T-1 ~> m2 s-1].%max_tke_to_kd[real] :: Maximum allowed value for TKE_to_kd [H Z2 T-3 ~> m3 s-3 or W m-2].%min_thick_layer_kd[real] :: minimum layer thickness allowed to use with TKE_to_kd [H ~> m or kg m-2]%apply_background_drag[logical] :: If true, apply a drag due to background processes as a sink.%apply_bottom_drag[logical] :: If true, apply a quadratic bottom drag as a sink.%apply_wave_drag[logical] :: If true, apply scattering due to small-scale roughness as a sink.%apply_froude_drag[logical] :: If true, apply wave breaking as a sink.%en_check_tol[real] :: An energy density tolerance for flagging points with small negative internal tide energy [H Z2 T-2 ~> m3 s-2 or J m-2].%apply_residual_drag[logical] :: If true, apply sink from residual term of reflection/transmission.%use_2d_decay_rate[logical] :: If true, use a spatially varying decay rate for each harmonic.%en[real(:,:,:,:,:),allocatable] :: The internal wave energy density as a function of (i,j,angle,frequency,mode) integrated within an angular and frequency band [H Z2 T-2 ~> m3 s-2 or J m-2].%en_ini_glo[real(:,:),allocatable] :: The internal wave energy density as a function of (frequency,mode) spatially integrated within an angular and frequency band [H Z2 L2 T-2 ~> m5 s-2 or J] only at the start of the routine (for diags)%en_end_glo[real(:,:),allocatable] :: The internal wave energy density as a function of (frequency,mode) spatially integrated within an angular and frequency band [H Z2 L2 T-2 ~> m5 s-2 or J] only at the end of the routine (for diags)%en_restart_mode1[real(:,:,:,:),allocatable] :: The internal wave energy density as a function of (i,j,angle,freq) for mode 1 [H Z2 T-2 ~> m3 s-2 or J m-2].%en_restart_mode2[real(:,:,:,:),allocatable] :: The internal wave energy density as a function of (i,j,angle,freq) for mode 2 [H Z2 T-2 ~> m3 s-2 or J m-2].%en_restart_mode3[real(:,:,:,:),allocatable] :: The internal wave energy density as a function of (i,j,angle,freq) for mode 3 [H Z2 T-2 ~> m3 s-2 or J m-2].%en_restart_mode4[real(:,:,:,:),allocatable] :: The internal wave energy density as a function of (i,j,angle,freq) for mode 4 [H Z2 T-2 ~> m3 s-2 or J m-2].%en_restart_mode5[real(:,:,:,:),allocatable] :: The internal wave energy density as a function of (i,j,angle,freq) for mode 5 [H Z2 T-2 ~> m3 s-2 or J m-2].%frequency[real(:),allocatable] :: The frequency of each band [T-1 ~> s-1].%int_tide_decay_scale[real] :: vertical decay scale for St Laurent profile [Z ~> m]%int_tide_decay_scale_slope[real] :: vertical decay scale for St Laurent profile on slopes [Z ~> m]%wave_speed[type( wave_speed_cs )] :: Wave speed control structure.%diag[type( diag_ctrl ),pointer] :: A structure that is used to regulate the timing of diagnostic output.
-
type
mom_internal_tides/loop_bounds_type¶ A structure with the active energy loop bounds.
- Type fields:
%ish[integer,private] :: The active loop bounds.%ieh[integer,private] :: The active loop bounds.%jsh[integer,private] :: The active loop bounds.%jeh[integer,private] :: The active loop bounds.
Function/Subroutine Documentation¶
-
subroutine
mom_internal_tides/propagate_int_tide(h, tv, Nb, Rho_bot, dt, G, GV, US, inttide_input_CSp, CS)¶ Calls subroutines in this file that are needed to refract, propagate, and dissipate energy density of the internal tide.
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
h :: [in] Layer thicknesses [H ~> m or kg m-2]
tv :: [in] Pointer to thermodynamic variables (needed for wave structure).
nb :: [inout] Near-bottom buoyancy frequency [T-1 ~> s-1]. In some cases the input values are used, but in others this is set along with the wave speeds.
rho_bot :: [in] Near-bottom density or the Boussinesq reference density [R ~> kg m-3].
dt :: [in] Length of time over which to advance the internal tides [T ~> s].
inttide_input_csp :: [in] Internal tide input control structure
cs :: [inout] Internal tide control structure
- Call to:
correct_halo_rotationmom_int_tide_input::get_barotropic_tidal_velmom_int_tide_input::get_input_tkemom_spatial_means::global_area_integralitidal_lowmode_lossmom_error_handler::mom_errorpropagaterefractmom_io::stdoutsum_enmom_wave_speed::wave_speeds
-
subroutine
mom_internal_tides/sum_en(G, GV, US, CS, En, label)¶ Checks for energy conservation on computational domain.
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
cs :: [inout] Internal tide control structure
en :: [in] The energy density of the internal tides [H Z2 T-2 ~> m3 s-2 or J m-2].
label :: [in] A label to use in error messages
- Call to:
- Called from:
-
subroutine
mom_internal_tides/itidal_lowmode_loss(G, GV, US, CS, Nb, Rho_bot, Ub, En, TKE_loss_fixed, TKE_loss, dt, halo_size)¶ Calculates the energy lost from the propagating internal tide due to scattering over small-scale roughness along the lines of Jayne & St. Laurent (2001).
- Parameters:
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
cs :: [in] Internal tide control structure
nb :: [in] Near-bottom stratification [T-1 ~> s-1].
rho_bot :: [in] Near-bottom density [R ~> kg m-3].
ub :: [inout] RMS (over one period) near-bottom horizontal
tke_loss_fixed :: [in] Fixed part of energy loss [R Z4 H-1 L-2 ~> kg m-2 or m]
en :: [inout] Energy density of the internal waves [H Z2 T-2 ~> m3 s-2 or J m-2].
tke_loss :: [out] Energy loss rate [H Z2 T-3 ~> m3 s-3 or W m-2]
dt :: [in] Time increment [T ~> s].
halo_size :: [in] The halo size over which to do the calculations
- Called from:
-
subroutine
mom_internal_tides/get_lowmode_loss(i, j, G, CS, mechanism, TKE_loss_sum)¶ This subroutine extracts the energy lost from the propagating internal which has been summed across all angles, frequencies, and modes for a given mechanism and location.
It can be called from another module to get values from this module’s (private) CS.
- Parameters:
i :: [in] The i-index of the value to be reported.
j :: [in] The j-index of the value to be reported.
g :: [in] The ocean’s grid structure
cs :: [in] Internal tide control structure
mechanism :: [in] The named mechanism of loss to return
tke_loss_sum :: [out] Total energy loss rate due to specified mechanism [H Z2 T-3 ~> m3 s-3 or W m-2].
- Called from:
mom_tidal_mixing::add_int_tide_diffusivityget_lowmode_diffusivity
-
subroutine
mom_internal_tides/get_lowmode_diffusivity(G, GV, h, tv, US, h_bot, k_bot, j, N2_lay, N2_int, TKE_to_Kd, Kd_max, CS, Kd_leak, Kd_quad, Kd_itidal, Kd_Froude, Kd_slope, Kd_lay, Kd_int, profile_leak, profile_quad, profile_itidal, profile_Froude, profile_slope)¶ Returns the values of diffusivity corresponding to various mechanisms.
- Parameters:
g :: [in] The ocean’s grid structure
gv :: [in] The ocean’s vertical grid structure
h :: [in] Layer thicknesses [H ~> m or kg m-2]
tv :: [in] Structure containing pointers to any available
us :: [in] A dimensional unit scaling type
h_bot :: [in] Bottom boundary layer thickness [H ~> m or kg m-2]
k_bot :: [in] Bottom boundary layer top layer index
j :: [in] The j-index to work on
n2_lay :: [in] The squared buoyancy frequency of the layers [T-2 ~> s-2].
n2_int :: [in] The squared buoyancy frequency of the interfaces [T-2 ~> s-2].
tke_to_kd :: [in] The conversion rate between the TKE dissipated within a layer and the diapycnal diffusivity within that layer, usually (~Rho_0 / (G_Earth * dRho_lay)) [H Z T-1 / H Z2 T-3 = T2 Z-1 ~> s2 m-1]
kd_max :: [in] The maximum increment for diapycnal diffusivity due to TKE-based processes [H Z T-1 ~> m2 s-1 or kg m-1 s-1]. Set this to a negative value to have no limit. [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
cs :: [in] The control structure for this module
kd_leak :: [out] Diffusivity due to background drag [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
kd_quad :: [out] Diffusivity due to bottom drag [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
kd_itidal :: [out] Diffusivity due to wave drag [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
kd_froude :: [out] Diffusivity due to high Froude breaking [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
kd_slope :: [out] Diffusivity due to critical slopes [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
kd_lay :: [inout] The diapycnal diffusivity in layers [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
kd_int :: [inout] The diapycnal diffusivity at interfaces [H Z T-1 ~> m2 s-1 or kg m-1 s-1].
profile_leak :: [out] Normalized profile for background drag [H-1 ~> m-1 or m2 kg-1]
profile_quad :: [out] Normalized profile for bottom drag [H-1 ~> m-1 or m2 kg-1]
profile_itidal :: [out] Normalized profile for wave drag [H-1 ~> m-1 or m2 kg-1]
profile_froude :: [out] Normalized profile for Froude drag [H-1 ~> m-1 or m2 kg-1]
profile_slope :: [out] Normalized profile for critical slopes [H-1 ~> m-1 or m2 kg-1]
- Call to:
get_lowmode_lossmom_error_handler::mom_errormom_io::stdout- Called from:
-
subroutine
mom_internal_tides/refract(En, cn, freq, dt, G, US, NAngle, use_PPMang)¶ Implements refraction on the internal waves at a single frequency.
- Parameters:
g :: [in] The ocean’s grid structure.
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum.
en :: [inout] The internal gravity wave energy density as a
cn :: [in] Baroclinic mode speed [L T-1 ~> m s-1].
freq :: [in] Wave frequency [T-1 ~> s-1].
dt :: [in] Time step [T ~> s].
us :: [in] A dimensional unit scaling type
use_ppmang :: [in] If true, use PPM for advection rather than upwind.
- Call to:
- Called from:
-
subroutine
mom_internal_tides/ppm_angular_advect(En2d, CFL_ang, Flux_En, NAngle, dt, halo_ang)¶ This subroutine calculates the 1-d flux for advection in angular space using a monotonic piecewise parabolic scheme. This needs to be called from within i and j spatial loops.
- Parameters:
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum [nondim]
dt :: [in] Time increment [T ~> s].
halo_ang :: [in] The halo size in angular space
en2d :: [in] The internal gravity wave energy density as a
cfl_ang :: [in] The CFL number of the energy advection across angles [nondim]
flux_en :: [out] The time integrated internal wave energy flux across angles [H Z2 T-2 ~> m3 s-2 or J m-2].
- Called from:
-
subroutine
mom_internal_tides/propagate(En, cn, freq, dt, G, GV, US, CS, NAngle, residual_loss)¶ Propagates internal waves at a single frequency.
- Parameters:
g :: [inout] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum.
en :: [inout] The internal gravity wave energy density as a
cn :: [in] Baroclinic mode speed [L T-1 ~> m s-1].
freq :: [in] Wave frequency [T-1 ~> s-1].
dt :: [in] Time step [T ~> s].
us :: [in] A dimensional unit scaling type
cs :: [inout] Internal tide control structure
residual_loss :: [inout] internal tide energy loss due
- Call to:
propagate_xpropagate_ymom_io::stdoutsum_en- Called from:
-
subroutine
mom_internal_tides/propagate_x(En, speed_x, Cgx_av, dCgx, dt, G, US, Nangle, CS, LB, residual_loss)¶ Propagates the internal wave energy in the logical x-direction.
- Parameters:
g :: [in] The ocean’s grid structure.
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum.
en :: [inout] The energy density integrated over an angular
speed_x :: [in] The magnitude of the group velocity at the
cgx_av :: [in] The average x-projection in each angular band [nondim]
dcgx :: [in] The difference in x-projections between the edges of each angular band [nondim].
dt :: [in] Time increment [T ~> s].
us :: [in] A dimensional unit scaling type
cs :: [in] Internal tide control structure
lb :: [in] A structure with the active energy loop bounds.
residual_loss :: [inout] internal tide energy loss due
- Call to:
- Called from:
-
subroutine
mom_internal_tides/propagate_y(En, speed_y, Cgy_av, dCgy, dt, G, US, Nangle, CS, LB, residual_loss)¶ Propagates the internal wave energy in the logical y-direction.
- Parameters:
g :: [in] The ocean’s grid structure.
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum.
en :: [inout] The energy density integrated over an angular
speed_y :: [in] The magnitude of the group velocity at the
cgy_av :: [in] The average y-projection in each angular band [nondim]
dcgy :: [in] The difference in y-projections between the edges of each angular band [nondim]
dt :: [in] Time increment [T ~> s].
us :: [in] A dimensional unit scaling type
cs :: [in] Internal tide control structure
lb :: [in] A structure with the active energy loop bounds.
residual_loss :: [inout] internal tide energy loss due
- Call to:
- Called from:
-
subroutine
mom_internal_tides/zonal_flux_en(u, h, hL, hR, uh, dt, G, US, j, ish, ieh, vol_CFL)¶ Evaluates the zonal mass or volume fluxes in a layer.
- Parameters:
g :: [in] The ocean’s grid structure.
u :: [in] The zonal velocity [L T-1 ~> m s-1].
h :: [in] Energy density used to calculate the fluxes [H Z2 T-2 ~> m3 s-2 or J m-2].
hl :: [in] Left- Energy densities in the reconstruction [H Z2 T-2 ~> m3 s-2 or J m-2].
hr :: [in] Right- Energy densities in the reconstruction [H Z2 T-2 ~> m3 s-2 or J m-2].
uh :: [out] The zonal energy transport [H Z2 L2 T-3 ~> m5 s-3 or J s-1].
dt :: [in] Time increment [T ~> s].
us :: [in] A dimensional unit scaling type
j :: [in] The j-index to work on.
ish :: [in] The start i-index range to work on.
ieh :: [in] The end i-index range to work on.
vol_cfl :: [in] If true, rescale the ratio of face areas to the cell areas when estimating the CFL number.
- Called from:
-
subroutine
mom_internal_tides/merid_flux_en(v, h, hL, hR, vh, dt, G, US, J, ish, ieh, vol_CFL)¶ Evaluates the meridional mass or volume fluxes in a layer.
- Parameters:
g :: [in] The ocean’s grid structure.
v :: [in] The meridional velocity [L T-1 ~> m s-1].
h :: [in] Energy density used to calculate the fluxes [H Z2 T-2 ~> m3 s-2 or J m-2].
hl :: [in] Left- Energy densities in the reconstruction [H Z2 T-2 ~> m3 s-2 or J m-2].
hr :: [in] Right- Energy densities in the reconstruction [H Z2 T-2 ~> m3 s-2 or J m-2].
vh :: [out] The meridional energy transport [H Z2 L2 T-3 ~> m5 s-3 or J s-1].
dt :: [in] Time increment [T ~> s].
us :: [in] A dimensional unit scaling type
j :: [in] The j-index to work on.
ish :: [in] The start i-index range to work on.
ieh :: [in] The end i-index range to work on.
vol_cfl :: [in] If true, rescale the ratio of face areas to the cell areas when estimating the CFL number.
- Called from:
-
subroutine
mom_internal_tides/reflect(En, NAngle, CS, G, LB)¶ Reflection of the internal waves at a single frequency.
- Parameters:
g :: [in] The ocean’s grid structure
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum.
en :: [inout] The internal gravity wave energy density as a
cs :: [in] Internal tide control structure
lb :: [in] A structure with the active energy loop bounds.
- Called from:
-
subroutine
mom_internal_tides/teleport(En, NAngle, CS, G, LB)¶ Moves energy across lines of partial reflection to prevent reflection of energy that is supposed to get across.
- Parameters:
g :: [in] The ocean’s grid structure.
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum.
en :: [inout] The internal gravity wave energy density as a
cs :: [in] Internal tide control structure
lb :: [in] A structure with the active energy loop bounds.
- Call to:
-
subroutine
mom_internal_tides/correct_halo_rotation(En, test, G, NAngle, halo)¶ Rotates points in the halos where required to accommodate changes in grid orientation, such as at the tripolar fold.
- Parameters:
g :: [in] The ocean’s grid structure
en :: [inout] The internal gravity wave energy density as a function of space, angular orientation, frequency, and vertical mode [H Z2 T-2 ~> m3 s-2 or J m-2].
test :: [in] An x-unit vector that has been passed through
nangle :: [in] The number of wave orientations in the discretized wave energy spectrum.
halo :: [in] The halo size over which to do the calculations
- Call to:
- Called from:
-
subroutine
mom_internal_tides/ppm_reconstruction_x(h_in, h_l, h_r, G, LB, simple_2nd)¶ Calculates left/right edge values for PPM reconstruction in x-direction.
- Parameters:
g :: [in] The ocean’s grid structure.
h_in :: [in] Energy density in a sector (2D) [H Z2 T-2 ~> m3 s-2 or J m-2]
h_l :: [out] Left edge value of reconstruction (2D) [H Z2 T-2 ~> m3 s-2 or J m-2]
h_r :: [out] Right edge value of reconstruction (2D) [H Z2 T-2 ~> m3 s-2 or J m-2]
lb :: [in] A structure with the active loop bounds.
simple_2nd :: [in] If true, use the arithmetic mean energy densities as default edge values for a simple 2nd order scheme.
- Call to:
- Called from:
-
subroutine
mom_internal_tides/ppm_reconstruction_y(h_in, h_l, h_r, G, LB, simple_2nd)¶ Calculates left/right edge valus for PPM reconstruction in y-direction.
- Parameters:
g :: [in] The ocean’s grid structure.
h_in :: [in] Energy density in a sector (2D) [H Z2 T-2 ~> m3 s-2 or J m-2]
h_l :: [out] Left edge value of reconstruction (2D) [H Z2 T-2 ~> m3 s-2 or J m-2]
h_r :: [out] Right edge value of reconstruction (2D) [H Z2 T-2 ~> m3 s-2 or J m-2]
lb :: [in] A structure with the active loop bounds.
simple_2nd :: [in] If true, use the arithmetic mean energy densities as default edge values for a simple 2nd order scheme.
- Call to:
- Called from:
-
subroutine
mom_internal_tides/ppm_limit_pos(h_in, h_L, h_R, h_min, G, iis, iie, jis, jie)¶ Limits the left/right edge values of the PPM reconstruction to give a reconstruction that is positive-definite. Here this is reinterpreted as giving a constant value if the mean value is less than h_min, with a minimum of h_min otherwise.
- Parameters:
g :: [in] The ocean’s grid structure.
h_in :: [in] Energy density in each sector (2D) [H Z2 T-2 ~> m3 s-2 or J m-2]
h_l :: [inout] Left edge value of reconstruction [H Z2 T-2 ~> m3 s-2 or J m-2]
h_r :: [inout] Right edge value of reconstruction [H Z2 T-2 ~> m3 s-2 or J m-2]
h_min :: [in] The minimum value that can be obtained by a concave parabolic fit [H Z2 T-2 ~> m3 s-2 or J m-2]
iis :: [in] Start i-index for computations
iie :: [in] End i-index for computations
jis :: [in] Start j-index for computations
jie :: [in] End j-index for computations
- Called from:
-
subroutine
mom_internal_tides/register_int_tide_restarts(G, GV, US, param_file, CS, restart_CS)¶ - Parameters:
g :: [in] The ocean’s grid structure
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
param_file :: [in] A structure to parse for run-time parameters
cs :: Internal tide control structure
restart_cs :: MOM restart control structure
- Call to:
-
subroutine
mom_internal_tides/internal_tides_init(Time, G, GV, US, param_file, diag, CS)¶ This subroutine initializes the internal tides module.
- Parameters:
time :: [in] The current model time.
g :: [in] The ocean’s grid structure.
gv :: [in] The ocean’s vertical grid structure.
us :: [in] A dimensional unit scaling type
param_file :: [in] A structure to parse for run-time parameters.
diag :: [in] A structure that is used to regulate diagnostic output.
cs :: Internal tide control structure
- Call to:
mom_diag_mediator::define_axes_groupmom_string_functions::extract_realmom_error_handler::mom_errormom_error_handler::mom_mesgmom_wave_speed::wave_speed_init- Called from:
-
subroutine
mom_internal_tides/internal_tides_end(CS)¶ This subroutine deallocates the memory associated with the internal tides control structure.
- Parameters:
cs :: [inout] Internal tide control structure