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 ::
logicalTrue if this control structure has been initialized.% calculate_sal ::
logicalIf true, calculate self-attraction and loading.% sal_use_bpa ::
logicalIf true, use bottom pressure anomaly instead of SSH to calculate SAL.% tides ::
logicalIf true, apply tidal momentum forcing.% rho_ref ::
realThe reference density that is subtracted off when calculating pressure gradient forces [R ~> kg m-3].% rho_ref_bug ::
logicalIf true, recover a bug that mixes GVRho0 and CSrho_ref in Boussinesq mode.% gfs_scale ::
realA scaling of the surface pressure gradients to allow the use of a reduced gravity model [nondim].% time ::
type(time_type), pointerA pointer to the ocean model’s clock.% diag ::
type(diag_ctrl), pointerA structure that is used to regulate the timing of diagnostic output.% masswghtinterp ::
integerA flag indicating whether and how to use mass weighting in T/S interpolation.% correction_intxpa ::
logicalIf true, apply a correction to the value of intxpa at a selected interface under ice, using matching at the end values along with a 5-point quadrature integral of the hydrostatic pressure or height changes along that interface. The selected interface is either at the ocean’s surface or in the interior, depending on reset_intxpa_integral.% reset_intxpa_integral ::
logicalIf true and the surface displacement between adjacent cells exceeds the vertical grid spacing, reset intxpa at the interface below a trusted interior cell. (This often applies in ice shelf cavities.)% masswghtinterpvanonly ::
logicalIf true, don’t do mass weighting of T/S interpolation unless vanished.% reset_intxpa_flattest ::
logicalIf true, use flattest interface rather than top for reset integral in cases where no best nonvanished interface.% h_nonvanished ::
realA minimal layer thickness that indicates that a layer is thick enough to usefully reestimate the pressure integral across the interface below it [H ~> m or kg m-2].% use_inaccurate_pgf_rho_anom ::
logicalIf true, uses the older and less accurate method to calculate density anomalies, as used prior to March 2018.% boundary_extrap ::
logicalIndicate whether high-order boundary extrapolation should be used within boundary cells.% reconstruct ::
logicalIf 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 ::
integerOrder 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.% debug ::
logicalIf true, write verbose checksums for debugging purposes.% use_ssh_in_z0p ::
logicalIf true, adjust the height at which the pressure used in the equation of state is 0 to account for the displacement of the sea surface including adjustments for atmospheric or sea-ice pressure.% use_stanley_pgf ::
logicalIf true, turn on Stanley parameterization in the PGF.% bq_sal_tides ::
logicalIf true, use an alternative method for SAL and tides in Boussinesq mode.% tides_answer_date ::
integerRecover old answers with tides.% id_e_tide ::
integerDiagnostic identifier.% id_e_tidal_eq ::
integerDiagnostic identifier.% id_e_tidal_sal ::
integerDiagnostic identifier.% id_e_sal ::
integerDiagnostic identifier.% id_rho_pgf ::
integerDiagnostic identifier.% id_rho_stanley_pgf ::
integerDiagnostic identifier.% id_p_stanley ::
integerDiagnostic identifier.% id_masswt_u ::
integerDiagnostic identifier.% id_masswt_v ::
integerDiagnostic identifier.% id_sal_u ::
integerDiagnostic identifier.% id_sal_v ::
integerDiagnostic identifier.% id_tides_u ::
integerDiagnostic identifier.% id_tides_v ::
integerDiagnostic identifier.% sal_csp ::
type(sal_cs), pointerSAL control structure.% tides_csp ::
type(tidal_forcing_cs), pointerTides control structure.
Function/Subroutine Documentation
- subroutine mom_pressureforce_fv/pressureforce_fv_nonbouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, ADp, 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 ::
h[in] Layer thickness [H ~> kg m-2]tv ::
tv[in] Thermodynamic variablespfu :: [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
adp :: Acceleration diagnostic pointers
p_atm ::
p_atmThe pressure at the ice-ocean or atmosphere-ocean interface [R L2 T-2 ~> Pa].pbce ::
pbce[out] The baroclinic pressure anomaly in each layer due to eta anomalies [L2 T-2 H-1 ~> m4 s-2 kg-1].eta ::
eta[out] The total column mass used to calculate PFu and PFv [H ~> kg m-2].
- Call to:
mom_self_attr_load::calc_salmom_tidal_forcing::calc_tidal_forcing_legacymom_density_integrals::diagnose_mass_weight_pmom_error_handler::mom_errormom_pressureforce_mont::set_pbce_nonboussmom_ale::ts_plm_edge_valuesmom_ale::ts_plm_wls_edge_valuesmom_ale::ts_ppm_edge_values
- subroutine mom_pressureforce_fv/pressureforce_fv_bouss(h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, ADp, 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 ::
h[in] Layer thickness [H ~> m]tv ::
tv[in] Thermodynamic variablespfu :: [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
adp :: Acceleration diagnostic pointers
p_atm ::
p_atmThe pressure at the ice-ocean or atmosphere-ocean interface [R L2 T-2 ~> Pa].pbce ::
pbce[out] The baroclinic pressure anomaly in each layer due to eta anomalies [L2 T-2 H-1 ~> m s-2].eta ::
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_salmom_tidal_forcing::calc_tidal_forcing_legacymom_density_integrals::diagnose_mass_weight_zmom_eos::eos_domainmom_error_handler::mom_errormom_pressureforce_mont::set_pbce_boussmom_ale::ts_plm_edge_valuesmom_ale::ts_plm_wls_edge_valuesmom_ale::ts_ppm_edge_values
- subroutine mom_pressureforce_fv/pressureforce_fv_init(Time, G, GV, US, param_file, diag, CS, ADp, 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 ::
param_file[in] Parameter file handlesdiag ::
diag[inout] Diagnostics control structurecs :: [inout] Finite volume PGF control structure
adp :: Acceleration diagnostic pointers
sal_csp :: [in] SAL control structure
tides_csp :: [in] Tides control structure
- Call to: