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, ppoly_E, ppoly_S, ppoly_coef, h_neglect) |
Reconstruction by quartic polynomials within each cell. More... | |
subroutine | pqm_limiter (N, h, u, ppoly_E, ppoly_S, h_neglect) |
Limit the piecewise quartic method reconstruction. More... | |
subroutine, public | pqm_boundary_extrapolation (N, h, u, ppoly_E, ppoly_coef) |
Reconstruction by parabolas within boundary cells. More... | |
subroutine, public | pqm_boundary_extrapolation_v1 (N, h, u, ppoly_E, ppoly_S, ppoly_coef, h_neglect) |
Reconstruction by parabolas within boundary cells. More... | |
Variables | |
real, parameter | hneglect_dflt = 1.E-30 |
Default negligible cell thickness. More... | |
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) | ppoly_E, | ||
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) |
[in] | u | cell averages (size N) |
[in,out] | ppoly_e | Edge value of polynomial, with the same units as u. |
[in,out] | ppoly_coef | Coefficients of polynomial, mainly with the same units as u. |
Definition at line 359 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) | ppoly_E, | ||
real, dimension(:,:), intent(inout) | ppoly_S, | ||
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) |
[in] | u | cell averages (size N) |
[in,out] | ppoly_e | Edge value of polynomial, with the same units as u. |
[in,out] | ppoly_s | Edge slope of polynomial, in the units of u over the units of h. |
[in,out] | ppoly_coef | Coefficients of polynomial, mainly with the same units as u. |
[in] | h_neglect | A negligibly small width for the purpose of cell reconstructions in the same units as h. |
Definition at line 508 of file PQM_functions.F90.
References hneglect_dflt.
Referenced by mom_remapping::build_reconstructions_1d(), and regrid_interp::regridding_set_ppolys().
|
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) |
[in] | u | cell average properties (size N) |
[in,out] | ppoly_e | Potentially modified edge values, with the same units as u. |
[in,out] | ppoly_s | Potentially modified edge slopes, with the same units as u. |
[in] | h_neglect | A negligibly small width for the purpose of cell reconstructions in the same units as h |
Definition at line 79 of file PQM_functions.F90.
References regrid_edge_values::bound_edge_values(), regrid_edge_values::check_discontinuous_edge_values(), and hneglect_dflt.
Referenced by pqm_reconstruction().
subroutine, public pqm_functions::pqm_reconstruction | ( | integer, intent(in) | N, |
real, dimension(:), intent(in) | h, | ||
real, dimension(:), intent(in) | u, | ||
real, dimension(:,:), intent(inout) | ppoly_E, | ||
real, dimension(:,:), intent(inout) | ppoly_S, | ||
real, dimension(:,:), intent(inout) | ppoly_coef, | ||
real, intent(in), optional | h_neglect | ||
) |
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) |
[in] | u | cell averages (size N) |
[in,out] | ppoly_e | Edge value of polynomial, with the same units as u. |
[in,out] | ppoly_s | Edge slope of polynomial, in the units of u over the units of h. |
[in,out] | ppoly_coef | Coefficients of polynomial, mainly with the same units as u. |
[in] | h_neglect | A negligibly small width for the purpose of cell reconstructions in the same units as h |
Definition at line 21 of file PQM_functions.F90.
References pqm_limiter().
Referenced by mom_remapping::build_reconstructions_1d(), and regrid_interp::regridding_set_ppolys().
|
private |
Default negligible cell thickness.
Definition at line 12 of file PQM_functions.F90.
Referenced by pqm_boundary_extrapolation_v1(), and pqm_limiter().