|
MOM6
|
Piecewise quartic reconstruction functions.
Date of creation: 2008.06.06 L. White
This module contains routines that handle one-dimensionnal finite volume reconstruction using the piecewise quartic method (PQM).
Functions/Subroutines | |
| subroutine, public | pqm_reconstruction (N, h, u, edge_values, edge_slopes, ppoly_coef, h_neglect, answers_2018) |
| Reconstruction by quartic polynomials within each cell. More... | |
| subroutine | pqm_limiter (N, h, u, edge_values, edge_slopes, h_neglect, answers_2018) |
| Limit the piecewise quartic method reconstruction. More... | |
| subroutine, public | pqm_boundary_extrapolation (N, h, u, edge_values, ppoly_coef) |
| Reconstruction by parabolas within boundary cells. More... | |
| subroutine, public | pqm_boundary_extrapolation_v1 (N, h, u, edge_values, edge_slopes, ppoly_coef, h_neglect) |
| Reconstruction by parabolas within boundary cells. More... | |
Variables | |
| real, parameter | hneglect_dflt = 1.E-30 |
| Default negligible cell thickness. | |
| subroutine, public pqm_functions::pqm_boundary_extrapolation | ( | integer, intent(in) | N, |
| real, dimension(:), intent(in) | h, | ||
| real, dimension(:), intent(in) | u, | ||
| real, dimension(:,:), intent(inout) | edge_values, | ||
| real, dimension(:,:), intent(inout) | ppoly_coef | ||
| ) |
Reconstruction by parabolas within boundary cells.
The following explanations apply to the left boundary cell. The same reasoning holds for the right boundary cell.
A parabola needs to be built in the cell and requires three degrees of freedom, which are the right edge value and slope and the cell average. The right edge values and slopes are taken to be that of the neighboring cell (i.e., the left edge value and slope of the neighboring cell). The resulting parabola is not necessarily monotonic and the traditional PPM limiter is used to modify one of the edge values in order to yield a monotonic parabola.
It is assumed that the size of the array 'u' is equal to the number of cells defining 'grid' and 'ppoly'. No consistency check is performed here.
| [in] | n | Number of cells |
| [in] | h | cell widths (size N) [H] |
| [in] | u | cell averages (size N) [A] |
| [in,out] | edge_values | Edge value of polynomial [A] |
| [in,out] | ppoly_coef | Coefficients of polynomial, mainly [A] |
Definition at line 355 of file PQM_functions.F90.
| subroutine, public pqm_functions::pqm_boundary_extrapolation_v1 | ( | integer, intent(in) | N, |
| real, dimension(:), intent(in) | h, | ||
| real, dimension(:), intent(in) | u, | ||
| real, dimension(:,:), intent(inout) | edge_values, | ||
| real, dimension(:,:), intent(inout) | edge_slopes, | ||
| real, dimension(:,:), intent(inout) | ppoly_coef, | ||
| real, intent(in), optional | h_neglect | ||
| ) |
Reconstruction by parabolas within boundary cells.
The following explanations apply to the left boundary cell. The same reasoning holds for the right boundary cell.
A parabola needs to be built in the cell and requires three degrees of freedom, which are the right edge value and slope and the cell average. The right edge values and slopes are taken to be that of the neighboring cell (i.e., the left edge value and slope of the neighboring cell). The resulting parabola is not necessarily monotonic and the traditional PPM limiter is used to modify one of the edge values in order to yield a monotonic parabola.
It is assumed that the size of the array 'u' is equal to the number of cells defining 'grid' and 'ppoly'. No consistency check is performed here.
| [in] | n | Number of cells |
| [in] | h | cell widths (size N) [H] |
| [in] | u | cell averages (size N) [A] |
| [in,out] | edge_values | Edge value of polynomial [A] |
| [in,out] | edge_slopes | Edge slope of polynomial [A H-1] |
| [in,out] | ppoly_coef | Coefficients of polynomial, mainly [A] |
| [in] | h_neglect | A negligibly small width for the purpose of cell reconstructions [H] |
Definition at line 502 of file PQM_functions.F90.
|
private |
Limit the piecewise quartic method reconstruction.
Standard PQM limiter (White & Adcroft, JCP 2008).
It is assumed that the dimension of 'u' is equal to the number of cells defining 'grid' and 'ppoly'. No consistency check is performed.
| [in] | n | Number of cells |
| [in] | h | cell widths (size N) [H] |
| [in] | u | cell average properties (size N) [A] |
| [in,out] | edge_values | Potentially modified edge values [A] |
| [in,out] | edge_slopes | Potentially modified edge slopes [A H-1] |
| [in] | h_neglect | A negligibly small width for the purpose of cell reconstructions [H] |
| [in] | answers_2018 | If true use older, less acccurate expressions. |
Definition at line 76 of file PQM_functions.F90.
| subroutine, public pqm_functions::pqm_reconstruction | ( | integer, intent(in) | N, |
| real, dimension(:), intent(in) | h, | ||
| real, dimension(:), intent(in) | u, | ||
| real, dimension(:,:), intent(inout) | edge_values, | ||
| real, dimension(:,:), intent(inout) | edge_slopes, | ||
| real, dimension(:,:), intent(inout) | ppoly_coef, | ||
| real, intent(in), optional | h_neglect, | ||
| logical, intent(in), optional | answers_2018 | ||
| ) |
Reconstruction by quartic polynomials within each cell.
It is assumed that the dimension of 'u' is equal to the number of cells defining 'grid' and 'ppoly'. No consistency check is performed.
| [in] | n | Number of cells |
| [in] | h | cell widths (size N) [H] |
| [in] | u | cell averages (size N) [A] |
| [in,out] | edge_values | Edge value of polynomial [A] |
| [in,out] | edge_slopes | Edge slope of polynomial [A H-1] |
| [in,out] | ppoly_coef | Coefficients of polynomial, mainly [A] |
| [in] | h_neglect | A negligibly small width for the purpose of cell reconstructions [H] |
| [in] | answers_2018 | If true use older, less acccurate expressions. |
Definition at line 21 of file PQM_functions.F90.