|
MOM6
|
Finite volume pressure gradient (integrated by quadrature or analytically)
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
Data Types | |
| type | pressureforce_fv_cs |
| Finite volume pressure gradient control structure. More... | |
Functions/Subroutines | |
| subroutine, public | 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. More... | |
| subroutine, public | 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. More... | |
| subroutine, public | pressureforce_fv_init (Time, G, GV, US, param_file, diag, CS, tides_CSp) |
| Initializes the finite volume pressure gradient control structure. More... | |
| subroutine, public | pressureforce_fv_end (CS) |
| Deallocates the finite volume pressure gradient control structure. More... | |
| subroutine, public mom_pressureforce_fv::pressureforce_fv_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_fv_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 [R L2 T-2 ~> Pa]. | |
| [out] | pbce | The baroclinic pressure anomaly in each layer due to eta anomalies [L2 T-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 416 of file MOM_PressureForce_FV.F90.
| subroutine, public mom_pressureforce_fv::pressureforce_fv_end | ( | type(pressureforce_fv_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 880 of file MOM_PressureForce_FV.F90.
| subroutine, public mom_pressureforce_fv::pressureforce_fv_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_fv_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 799 of file MOM_PressureForce_FV.F90.
| subroutine, public mom_pressureforce_fv::pressureforce_fv_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_fv_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 [R L2 T-2 ~> Pa]. | |
| [out] | pbce | The baroclinic pressure anomaly in each layer due to eta anomalies [L2 T-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 76 of file MOM_PressureForce_FV.F90.