mom_pressureforce_fv module reference

Finite volume pressure gradient (integrated by quadrature or analytically)

More…

Data Types

pressureforce_fv_cs

Finite volume pressure gradient control structure.

Functions/Subroutines

pressureforce_fv_nonbouss()

Non-Boussinesq analytically-integrated finite volume form of pressure gradient.

pressureforce_fv_bouss()

Boussinesq analytically-integrated finite volume form of pressure gradient.

pressureforce_fv_init()

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:

mom_error_handler::mom_error