MOM6
|
Analytically integrated finite volume pressure gradient.
Provides the Boussinesq and non-Boussinesq forms of horizontal accelerations due to pressure gradients using a 2nd-order analytically vertically integrated finite volume form, as described by Adcroft et al., 2008.
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
Data Types | |
type | pressureforce_afv_cs |
Finite volume pressure gradient control structure. More... | |
Functions/Subroutines | |
subroutine, public | pressureforce_afv (h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm, pbce, eta) |
Thin interface between the model and the Boussinesq and non-Boussinesq pressure force routines. More... | |
subroutine, public | pressureforce_afv_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. More... | |
subroutine, public | pressureforce_afv_bouss (h, tv, PFu, PFv, G, GV, US, CS, ALE_CSp, p_atm, pbce, eta) |
Boussinesq analytically-integrated finite volume form of pressure gradient. More... | |
subroutine, public | pressureforce_afv_init (Time, G, GV, US, param_file, diag, CS, tides_CSp) |
Initializes the finite volume pressure gradient control structure. More... | |
subroutine, public | pressureforce_afv_end (CS) |
Deallocates the finite volume pressure gradient control structure. More... | |
subroutine, public mom_pressureforce_afv::pressureforce_afv | ( | real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, |
type(thermo_var_ptrs), intent(inout) | tv, | ||
real, dimension(szib_(g),szj_(g),szk_(g)), intent(out) | PFu, | ||
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(out) | PFv, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(pressureforce_afv_cs), pointer | CS, | ||
type(ale_cs), pointer | ALE_CSp, | ||
real, dimension(:,:), optional, pointer | p_atm, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(out), optional | pbce, | ||
real, dimension(szi_(g),szj_(g)), intent(out), optional | eta | ||
) |
Thin interface between the model and the Boussinesq and non-Boussinesq pressure force routines.
[in] | g | Ocean grid structure |
[in] | gv | Vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | h | Layer thickness [H ~> m or kg m-2] |
[in,out] | tv | Thermodynamic variables |
[out] | pfu | Zonal acceleration [L T-2 ~> m s-2] |
[out] | pfv | Meridional acceleration [L T-2 ~> m s-2] |
cs | Finite volume PGF control structure | |
ale_csp | ALE control structure | |
p_atm | The pressure at the ice-ocean or atmosphere-ocean interface [Pa]. | |
[out] | pbce | The baroclinic pressure anomaly in each layer due to eta anomalies [m2 s-2 H-1 ~> m s-2 or m4 s-2 kg-1]. |
[out] | eta | The bottom mass used to calculate PFu and PFv [H ~> m or kg m-2], with any tidal contributions or compressibility compensation. |
Definition at line 67 of file MOM_PressureForce_analytic_FV.F90.
References pressureforce_afv_bouss(), and pressureforce_afv_nonbouss().
subroutine, public mom_pressureforce_afv::pressureforce_afv_bouss | ( | real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, |
type(thermo_var_ptrs), intent(in) | tv, | ||
real, dimension(szib_(g),szj_(g),szk_(g)), intent(out) | PFu, | ||
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(out) | PFv, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(pressureforce_afv_cs), pointer | CS, | ||
type(ale_cs), pointer | ALE_CSp, | ||
real, dimension(:,:), optional, pointer | p_atm, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(out), optional | pbce, | ||
real, dimension(szi_(g),szj_(g)), intent(out), optional | 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).
[in] | g | Ocean grid structure |
[in] | gv | Vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | h | Layer thickness [H ~> m] |
[in] | tv | Thermodynamic variables |
[out] | pfu | Zonal acceleration [L T-2 ~> m s-2] |
[out] | pfv | Meridional acceleration [L T-2 ~> m s-2] |
cs | Finite volume PGF control structure | |
ale_csp | ALE control structure | |
p_atm | The pressure at the ice-ocean or atmosphere-ocean interface [Pa]. | |
[out] | pbce | The baroclinic pressure anomaly in each layer due to eta anomalies [m2 s-2 H-1 ~> m s-2 or m4 s-2 kg-1]. |
[out] | eta | The bottom mass used to calculate PFu and PFv [H ~> m or kg m-2], with any tidal contributions or compressibility compensation. |
Definition at line 446 of file MOM_PressureForce_analytic_FV.F90.
References mom_tidal_forcing::calc_tidal_forcing(), mom_error_handler::mom_error(), mom_ale::pressure_gradient_plm(), mom_ale::pressure_gradient_ppm(), and mom_pressureforce_mont::set_pbce_bouss().
Referenced by pressureforce_afv().
subroutine, public mom_pressureforce_afv::pressureforce_afv_end | ( | type(pressureforce_afv_cs), pointer | CS | ) |
Deallocates the finite volume pressure gradient control structure.
cs | Finite volume pressure control structure that will be deallocated in this subroutine. |
Definition at line 864 of file MOM_PressureForce_analytic_FV.F90.
subroutine, public mom_pressureforce_afv::pressureforce_afv_init | ( | type(time_type), intent(in), target | Time, |
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(param_file_type), intent(in) | param_file, | ||
type(diag_ctrl), intent(inout), target | diag, | ||
type(pressureforce_afv_cs), pointer | CS, | ||
type(tidal_forcing_cs), optional, pointer | tides_CSp | ||
) |
Initializes the finite volume pressure gradient control structure.
[in] | time | Current model time |
[in] | g | Ocean grid structure |
[in] | gv | Vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | param_file | Parameter file handles |
[in,out] | diag | Diagnostics control structure |
cs | Finite volume PGF control structure | |
tides_csp | Tides control structure |
Definition at line 791 of file MOM_PressureForce_analytic_FV.F90.
References mom_error_handler::mom_error().
subroutine, public mom_pressureforce_afv::pressureforce_afv_nonbouss | ( | real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, |
type(thermo_var_ptrs), intent(in) | tv, | ||
real, dimension(szib_(g),szj_(g),szk_(g)), intent(out) | PFu, | ||
real, dimension(szi_(g),szjb_(g),szk_(g)), intent(out) | PFv, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(pressureforce_afv_cs), pointer | CS, | ||
type(ale_cs), pointer | ALE_CSp, | ||
real, dimension(:,:), optional, pointer | p_atm, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(out), optional | pbce, | ||
real, dimension(szi_(g),szj_(g)), intent(out), optional | 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).
[in] | g | Ocean grid structure |
[in] | gv | Vertical grid structure |
[in] | us | A dimensional unit scaling type |
[in] | h | Layer thickness [H ~> kg/m2] |
[in] | tv | Thermodynamic variables |
[out] | pfu | Zonal acceleration [L T-2 ~> m s-2] |
[out] | pfv | Meridional acceleration [L T-2 ~> m s-2] |
cs | Finite volume PGF control structure | |
ale_csp | ALE control structure | |
p_atm | The pressure at the ice-ocean or atmosphere-ocean interface [Pa]. | |
[out] | pbce | The baroclinic pressure anomaly in each layer due to eta anomalies [m2 s-2 H-1 ~> m s-2 or m4 s-2 kg-1]. |
[out] | eta | The bottom mass used to calculate PFu and PFv [H ~> m or kg m-2], with any tidal contributions or compressibility compensation. |
Definition at line 103 of file MOM_PressureForce_analytic_FV.F90.
References mom_tidal_forcing::calc_tidal_forcing(), mom_error_handler::mom_error(), mom_ale::pressure_gradient_plm(), mom_ale::pressure_gradient_ppm(), and mom_pressureforce_mont::set_pbce_nonbouss().
Referenced by pressureforce_afv().