mom_tidal_forcing module reference¶
Tidal contributions to geopotential.
Data Types¶
Simple type to store astronomical longitudes used to calculate tidal phases. |
|
The control structure for the MOM_tidal_forcing module. |
Functions/Subroutines¶
Finds astronomical longitudes s, h, p, and N, the mean longitude of the moon, sun, lunar perigee, and ascending node, respectively, at the specified reference time time_ref. |
|
Calculates the equilibrium phase argument for the given tidal constituent constit and the astronomical longitudes and the reference time. |
|
Looks up angular frequencies for the main tidal constituents. |
|
Find amplitude (f) and phase (u) modulation of tidal constituents by the 18.6 year nodal cycle. |
|
This subroutine allocates space for the static variables used by this module. |
|
This subroutine finds a named variable in a list of files and reads its values into a domain-decomposed 2-d array. |
|
This subroutine calculates returns the partial derivative of the local geopotential height with the input sea surface height due to self-attraction and loading. |
|
This subroutine calculates the geopotential anomalies that drive the tides, including self-attraction and loading. |
|
This subroutine deallocates memory associated with the tidal forcing module. |
Detailed Description¶
Tidal contributions to geopotential.
Type Documentation¶
-
type
mom_tidal_forcing/
astro_longitudes
¶ Simple type to store astronomical longitudes used to calculate tidal phases.
- Type fields
%
s
[real] :: Mean longitude of moon [rad].%
h
[real] :: Mean longitude of sun [rad].%
p
[real] :: Mean longitude of lunar perigee [rad].%
n
[real] :: Longitude of ascending node [rad].
-
type
mom_tidal_forcing/
tidal_forcing_cs
¶ The control structure for the MOM_tidal_forcing module.
- Type fields
%
use_sal_scalar
[logical] :: If true, use the scalar approximation when calculating self-attraction and loading.%
tidal_sal_from_file
[logical] :: If true, Read the tidal self-attraction and loading from input files, specified by TIDAL_INPUT_FILE.%
use_prev_tides
[logical] :: If true, use the SAL from the previous iteration of the tides to facilitate convergence.%
use_eq_phase
[logical] :: If true, tidal forcing is phase-shifted to match equilibrium tide. Set to false if providing tidal phases that have already been shifted by the astronomical/equilibrium argument.%
sal_scalar
[real] :: The constant of proportionality between sea surface height (really it should be bottom pressure) anomalies and bottom geopotential anomalies.%
nc
[integer] :: The number of tidal constituents in use.%
freq
[real( max_constituents )] :: The frequency of a tidal constituent [s-1].%
phase0
[real( max_constituents )] :: The phase of a tidal constituent at time 0, in radians.%
amp
[real( max_constituents )] :: The amplitude of a tidal constituent at time 0 [m].%
love_no
[real( max_constituents )] :: The Love number of a tidal constituent at time 0 [nondim].%
struct
[integer( max_constituents )] :: An encoded spatial structure for each constituent.%
const_name
[character (len=16)( max_constituents )] :: The name of each constituent.%
time_ref
[type(time_type)] :: Reference time (t = 0) used to calculate tidal forcing.%
tidal_longitudes
[type( astro_longitudes )] :: Astronomical longitudes used to calculate tidal phases at t = 0.%
sin_struct
[real(:,:,:),pointer] :: The sine and cosine based structures that can.%
cos_struct
[real(:,:,:),pointer] :: be associated with the astronomical forcing.%
cosphasesal
[real(:,:,:),pointer] :: The cosine and sine of the phase of the.%
sinphasesal
[real(:,:,:),pointer] :: self-attraction and loading amphidromes.%
ampsal
[real(:,:,:),pointer] :: The amplitude of the SAL [m].%
cosphase_prev
[real(:,:,:),pointer] :: The cosine and sine of the phase of the.%
sinphase_prev
[real(:,:,:),pointer] :: amphidromes in the previous tidal solutions.%
amp_prev
[real(:,:,:),pointer] :: The amplitude of the previous tidal solution [m].
Function/Subroutine Documentation¶
-
subroutine
mom_tidal_forcing/
astro_longitudes_init
(time_ref, longitudes)¶ Finds astronomical longitudes s, h, p, and N, the mean longitude of the moon, sun, lunar perigee, and ascending node, respectively, at the specified reference time time_ref. These formulas were obtained from Kowalik and Luick, “Modern Theory and Practice of Tide Analysis and Tidal Power”, 2019 (their Equation I.71), which are based on Schureman, 1958. For simplicity, the time associated with time_ref should be at midnight. These formulas also only make sense if the calendar is gregorian.
-
function
mom_tidal_forcing/
eq_phase
(constit, longitudes) [real]¶ Calculates the equilibrium phase argument for the given tidal constituent constit and the astronomical longitudes and the reference time. These formulas follow Table I.4 of Kowalik and Luick, “Modern Theory and Practice of Tide Analysis and Tidal Power”, 2019.
- Call to
- Called from
-
function
mom_tidal_forcing/
tidal_frequency
(constit) [real]¶ Looks up angular frequencies for the main tidal constituents. Values used here are from previous versions of MOM.
- Call to
- Called from
-
subroutine
mom_tidal_forcing/
nodal_fu
(constit, N, fn, un)¶ Find amplitude (f) and phase (u) modulation of tidal constituents by the 18.6 year nodal cycle. Values here follow Table I.6 in Kowalik and Luick, “Modern Theory and Practice of Tide Analysis and Tidal Power”, 2019.
- Call to
- Called from
-
subroutine
mom_tidal_forcing/
tidal_forcing_init
(Time, G, param_file, CS)¶ This subroutine allocates space for the static variables used by this module. The metrics may be effectively 0, 1, or 2-D arrays, while fields like the background viscosities are 2-D arrays. ALLOC is a macro defined in
MOM_memory.h
for allocate or nothing with static memory.- Parameters
time :: [in] The current model time.
g :: [inout] The ocean’s grid structure.
param_file :: [in] A structure to parse for run-time parameters.
cs :: A pointer that is set to point to the control structure for this module.
- Call to
astro_longitudes_init
mom_cpu_clock::cpu_clock_id
eq_phase
find_in_files
id_clock_tides
max_constituents
mom_error_handler::mom_error
mom_error_handler::mom_mesg
tidal_frequency
-
subroutine
mom_tidal_forcing/
find_in_files
(filenames, varname, array, G)¶ This subroutine finds a named variable in a list of files and reads its values into a domain-decomposed 2-d array.
- Parameters
filenames :: [in] The names of the files to search for the named variable
varname :: [in] The name of the variable to read
g :: [in] The ocean’s grid structure
array :: [out] The array to fill with the data
- Call to
- Called from
-
subroutine
mom_tidal_forcing/
tidal_forcing_sensitivity
(G, CS, deta_tidal_deta)¶ This subroutine calculates returns the partial derivative of the local geopotential height with the input sea surface height due to self-attraction and loading.
- Parameters
g :: [in] The ocean’s grid structure.
cs :: The control structure returned by a previous call to tidal_forcing_init.
deta_tidal_deta :: [out] The partial derivative of eta_tidal with the local value of eta [nondim].
- Called from
-
subroutine
mom_tidal_forcing/
calc_tidal_forcing
(Time, eta, eta_tidal, G, CS, deta_tidal_deta, m_to_Z)¶ This subroutine calculates the geopotential anomalies that drive the tides, including self-attraction and loading. Optionally, it also returns the partial derivative of the local geopotential height with the input sea surface height. For now, eta and eta_tidal are both geopotential heights in depth units, but probably the input for eta should really be replaced with the column mass anomalies.
- Parameters
g :: [in] The ocean’s grid structure.
time :: [in] The time for the caluculation.
eta :: [in] The sea surface height anomaly from a time-mean geoid [Z ~> m].
eta_tidal :: [out] The tidal forcing geopotential height anomalies [Z ~> m].
cs :: The control structure returned by a previous call to tidal_forcing_init.
deta_tidal_deta :: [out] The partial derivative of eta_tidal with the local value of eta [nondim].
m_to_z :: [in] A scaling factor from m to the units of eta.
- Call to
id_clock_tides
- Called from
mom_pressureforce_fv::pressureforce_fv_bouss
mom_pressureforce_fv::pressureforce_fv_nonbouss
mom_pressureforce_mont::pressureforce_mont_bouss
mom_pressureforce_mont::pressureforce_mont_nonbouss
-
subroutine
mom_tidal_forcing/
tidal_forcing_end
(CS)¶ This subroutine deallocates memory associated with the tidal forcing module.
- Parameters
cs :: The control structure returned by a previous call to tidal_forcing_init; it is deallocated here.