mom_pressureforce_fv module reference¶
Finite volume pressure gradient (integrated by quadrature or analytically)
Data Types¶
Finite volume pressure gradient control structure. |
Functions/Subroutines¶
Non-Boussinesq analytically-integrated finite volume form of pressure gradient. |
|
Boussinesq analytically-integrated finite volume form of pressure gradient. |
|
Initializes the finite volume pressure gradient control structure. |
Detailed Description¶
Provides the Boussinesq and non-Boussinesq forms of horizontal accelerations due to pressure gradients using a vertically integrated finite volume form, as described by Adcroft et al., 2008. Integration in the vertical is made either by quadrature or analytically.
This form eliminates the thermobaric instabilities that had been a problem with previous forms of the pressure gradient force calculation, as described by Hallberg, 2005.
Adcroft, A., R. Hallberg, and M. Harrison, 2008: A finite volume discretization of the pressure gradient force using analytic integration. Ocean Modelling, 22, 106-113. http://doi.org/10.1016/j.ocemod.2008.02.001
Hallberg, 2005: A thermobaric instability of Lagrangian vertical coordinate ocean models. Ocean Modelling, 8, 279-300. http://dx.doi.org/10.1016/j.ocemod.2004.01.001
Type Documentation¶
-
type
mom_pressureforce_fv/
pressureforce_fv_cs
¶ Finite volume pressure gradient control structure.
- Type fields:
%
initialized
[logical] :: True if this control structure has been initialized.%
calculate_sal
[logical] :: If true, calculate self-attraction and loading.%
tides
[logical] :: If true, apply tidal momentum forcing.%
rho0
[real] :: The density used in the Boussinesq approximation [R ~> kg m-3].%
gfs_scale
[real] :: A scaling of the surface pressure gradients to allow the use of a reduced gravity model [nondim].%
time
[type(time_type),pointer] :: A pointer to the ocean model’s clock.%
diag
[type( diag_ctrl ),pointer] :: A structure that is used to regulate the timing of diagnostic output.%
usemasswghtinterp
[logical] :: Use mass weighting in T/S interpolation.%
use_inaccurate_pgf_rho_anom
[logical] :: If true, uses the older and less accurate method to calculate density anomalies, as used prior to March 2018.%
boundary_extrap
[logical] :: Indicate whether high-order boundary extrapolation should be used within boundary cells.%
reconstruct
[logical] :: If true, polynomial profiles of T & S will be reconstructed and used in the integrals for the finite volume pressure gradient calculation. The default depends on whether regridding is being used.%
recon_scheme
[integer] :: Order of the polynomial of the reconstruction of T & S for the finite volume pressure gradient calculation. By the default (1) is for a piecewise linear method.%
use_stanley_pgf
[logical] :: If true, turn on Stanley parameterization in the PGF.%
tides_answer_date
[integer] :: Recover old answers with tides in Boussinesq mode.%
id_e_tide
[integer] :: Diagnostic identifier.%
id_e_tide_eq
[integer] :: Diagnostic identifier.%
id_e_tide_sal
[integer] :: Diagnostic identifier.%
id_e_sal
[integer] :: Diagnostic identifier.%
id_rho_pgf
[integer] :: Diagnostic identifier.%
id_rho_stanley_pgf
[integer] :: Diagnostic identifier.%
id_p_stanley
[integer] :: Diagnostic identifier.%
sal_csp
[type( sal_cs ),pointer] :: SAL control structure.%
tides_csp
[type( tidal_forcing_cs ),pointer] :: Tides control structure.
Function/Subroutine Documentation¶
-
subroutine
mom_pressureforce_fv/
pressureforce_fv_nonbouss
(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm, pbce, eta)¶ Non-Boussinesq analytically-integrated finite volume form of pressure gradient.
Determines the acceleration due to hydrostatic pressure forces, using the analytic finite volume form of the Pressure gradient, and does not make the Boussinesq approximation.
To work, the following fields must be set outside of the usual (is:ie,js:je) range before this subroutine is called: h(isB:ie+1,jsB:je+1), T(isB:ie+1,jsB:je+1), and S(isB:ie+1,jsB:je+1).
- Parameters:
g :: [in] Ocean grid structure
gv :: [in] Vertical grid structure
us :: [in] A dimensional unit scaling type
h :: [in] Layer thickness [H ~> kg m-2]
tv :: [in] Thermodynamic variables
pfu :: [out] Zonal acceleration [L T-2 ~> m s-2]
pfv :: [out] Meridional acceleration [L T-2 ~> m s-2]
cs :: [in] Finite volume PGF control structure
ale_csp :: ALE control structure
p_atm :: The pressure at the ice-ocean or atmosphere-ocean interface [R L2 T-2 ~> Pa].
pbce :: [out] The baroclinic pressure anomaly in each layer due to eta anomalies [L2 T-2 H-1 ~> m4 s-2 kg-1].
eta :: [out] The total column mass used to calculate PFu and PFv [H ~> kg m-2].
- Call to:
mom_self_attr_load::calc_sal
mom_tidal_forcing::calc_tidal_forcing_legacy
mom_error_handler::mom_error
mom_pressureforce_mont::set_pbce_nonbouss
mom_ale::ts_plm_edge_values
mom_ale::ts_ppm_edge_values
-
subroutine
mom_pressureforce_fv/
pressureforce_fv_bouss
(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm, pbce, eta)¶ Boussinesq analytically-integrated finite volume form of pressure gradient.
Determines the acceleration due to hydrostatic pressure forces, using the finite volume form of the terms and analytic integrals in depth.
To work, the following fields must be set outside of the usual (is:ie,js:je) range before this subroutine is called: h(isB:ie+1,jsB:je+1), T(isB:ie+1,jsB:je+1), and S(isB:ie+1,jsB:je+1).
- Parameters:
g :: [in] Ocean grid structure
gv :: [in] Vertical grid structure
us :: [in] A dimensional unit scaling type
h :: [in] Layer thickness [H ~> m]
tv :: [in] Thermodynamic variables
pfu :: [out] Zonal acceleration [L T-2 ~> m s-2]
pfv :: [out] Meridional acceleration [L T-2 ~> m s-2]
cs :: [in] Finite volume PGF control structure
ale_csp :: ALE control structure
p_atm :: The pressure at the ice-ocean or atmosphere-ocean interface [R L2 T-2 ~> Pa].
pbce :: [out] The baroclinic pressure anomaly in each layer due to eta anomalies [L2 T-2 H-1 ~> m s-2].
eta :: [out] The sea-surface height used to calculate PFu and PFv [H ~> m], with any tidal contributions.
- Call to:
mom_self_attr_load::calc_sal
mom_tidal_forcing::calc_tidal_forcing_legacy
mom_eos::eos_domain
mom_error_handler::mom_error
mom_pressureforce_mont::set_pbce_bouss
mom_ale::ts_plm_edge_values
mom_ale::ts_ppm_edge_values
-
subroutine
mom_pressureforce_fv/
pressureforce_fv_init
(Time, G, GV, US, param_file, diag, CS, SAL_CSp, tides_CSp)¶ Initializes the finite volume pressure gradient control structure.
- Parameters:
time :: [in] Current model time
g :: [in] Ocean grid structure
gv :: [in] Vertical grid structure
us :: [in] A dimensional unit scaling type
param_file :: [in] Parameter file handles
diag :: [inout] Diagnostics control structure
cs :: [inout] Finite volume PGF control structure
sal_csp :: [in] SAL control structure
tides_csp :: [in] Tides control structure
- Call to: