MOM6
|
Routines that estimate edge slopes to be used in high-order reconstruction schemes.
Functions/Subroutines | |
subroutine, public | edge_slopes_implicit_h3 (N, h, u, edge_slopes, h_neglect, answers_2018) |
Compute ih4 edge slopes (implicit third order accurate) in the same units as h. More... | |
subroutine, public | edge_slopes_implicit_h5 (N, h, u, edge_slopes, h_neglect, answers_2018) |
Compute ih5 edge values (implicit fifth order accurate) More... | |
Variables | |
real, parameter | hneglect_dflt = 1.E-30 |
Default negligible cell thickness. More... | |
subroutine, public regrid_edge_slopes::edge_slopes_implicit_h3 | ( | integer, intent(in) | N, |
real, dimension(:), intent(in) | h, | ||
real, dimension(:), intent(in) | u, | ||
real, dimension(:,:), intent(inout) | edge_slopes, | ||
real, intent(in), optional | h_neglect, | ||
logical, intent(in), optional | answers_2018 | ||
) |
Compute ih4 edge slopes (implicit third order accurate) in the same units as h.
Compute edge slopes based on third-order implicit estimates. Note that the estimates are fourth-order accurate on uniform grids
Third-order implicit estimates of edge slopes are based on a two-cell stencil. A tridiagonal system is set up and is based on expressing the edge slopes in terms of neighboring cell averages. The generic relationship is
\[ \alpha u'_{i-1/2} + u'_{i+1/2} + \beta u'_{i+3/2} = a \bar{u}_i + b \bar{u}_{i+1} \]
and the stencil looks like this
i i+1
..–o---—o---—o–.. i-1/2 i+1/2 i+3/2
In this routine, the coefficients \(\alpha\), \(\beta\), a and b are computed, the tridiagonal system is built, boundary conditions are prescribed and the system is solved to yield edge-slope estimates.
There are N+1 unknowns and we are able to write N-1 equations. The boundary conditions close the system.
[in] | n | Number of cells |
[in] | h | cell widths (size N) [H] |
[in] | u | cell average properties (size N) in arbitrary units [A] |
[in,out] | edge_slopes | Returned edge slopes [A H-1] |
[in] | h_neglect | A negligibly small width |
[in] | answers_2018 | If true use older, less acccurate expressions. |
Definition at line 50 of file regrid_edge_slopes.F90.
References polynomial_functions::evaluation_polynomial(), hneglect_dflt, regrid_solvers::solve_linear_system(), and regrid_solvers::solve_tridiagonal_system().
Referenced by mom_remapping::build_reconstructions_1d(), and regrid_interp::regridding_set_ppolys().
subroutine, public regrid_edge_slopes::edge_slopes_implicit_h5 | ( | integer, intent(in) | N, |
real, dimension(:), intent(in) | h, | ||
real, dimension(:), intent(in) | u, | ||
real, dimension(:,:), intent(inout) | edge_slopes, | ||
real, intent(in), optional | h_neglect, | ||
logical, intent(in), optional | answers_2018 | ||
) |
Compute ih5 edge values (implicit fifth order accurate)
[in] | n | Number of cells |
[in] | h | cell widths (size N) [H] |
[in] | u | cell average properties (size N) in arbitrary units [A] |
[in,out] | edge_slopes | Returned edge slopes [A H-1] |
[in] | h_neglect | A negligibly small width [H] |
[in] | answers_2018 | If true use older, less acccurate expressions. |
Definition at line 192 of file regrid_edge_slopes.F90.
References polynomial_functions::evaluation_polynomial(), hneglect_dflt, regrid_solvers::solve_linear_system(), and regrid_solvers::solve_tridiagonal_system().
Referenced by mom_remapping::build_reconstructions_1d(), and regrid_interp::regridding_set_ppolys().
|
private |
Default negligible cell thickness.
Definition at line 16 of file regrid_edge_slopes.F90.
Referenced by edge_slopes_implicit_h3(), and edge_slopes_implicit_h5().