|
| template<int n_components> |
| static GradientType< dim, NumberType, n_components > | compute_gradient (const dealii::Point< dim > ¢er_pos, const std::array< NumberType, n_components > &u_center, const std::array< dealii::Point< dim >, n_faces > &x_n, const std::array< std::array< NumberType, n_components >, n_faces > &u_n) |
| | Compute the gradient of u using the injected slope limiter.
|
| |
| template<int n_components> |
| static GradientType< dim, NumberType, n_components > | compute_gradient_at_point (const dealii::Point< dim > ¢er_pos, const dealii::Point< dim > &x, const std::array< NumberType, n_components > &u_center, const std::array< dealii::Point< dim >, n_faces > &x_n, const std::array< std::array< NumberType, n_components >, n_faces > &u_n) |
| |
| template<int n_components> |
| static GradientType< dim, NumberType, n_components > | compute_gradient_derivative (const dealii::Point< dim > ¢er_pos, const std::array< ADNumberType, n_components > &u_center, const std::array< dealii::Point< dim >, n_faces > &x_n, const std::array< std::array< ADNumberType, n_components >, n_faces > &u_n) |
| | Compute the derivative of the limited gradient w.r.t. a single stencil DOF.
|
| |
| template<int n_components> |
| static GradientType< dim, NumberType, n_components > | compute_gradient_at_point_derivative (const dealii::Point< dim > ¢er_pos, const dealii::Point< dim > &x, const std::array< ADNumberType, n_components > &u_center, const std::array< dealii::Point< dim >, n_faces > &x_n, const std::array< std::array< ADNumberType, n_components >, n_faces > &u_n) |
| |
| template<int n_components> |
| static ThirdDerivativeType< dim, NumberType, n_components > | compute_third_derivatives_at_face (const std::array< dealii::Point< dim >, 4 > &x_stencil, const std::array< std::array< NumberType, n_components >, 4 > &u_stencil) |
| |
| template<int n_components> |
| static ThirdDerivativeType< dim, NumberType, n_components > | compute_third_derivatives_at_face_derivative (const std::array< dealii::Point< dim >, 4 > &x_stencil, const std::array< std::array< ADNumberType, n_components >, 4 > &u_stencil) |
| |
template<int dim_, HasSlopeLimiter Limiter, typename NumberType>
class DiFfRG::def::TVDReconstructor< dim_, Limiter, NumberType >
TVD gradient reconstructor parameterised by a slope limiter.
Computes piecewise-linear cell gradients on a rectangular mesh using two one-sided finite-difference slopes per dimension, each pair limited by the injected Limiter.
When the limiter satisfies the TVD property (e.g. MinModLimiter), the resulting reconstruction is Total Variation Diminishing.
- Template Parameters
-
| dim | The spatial dimension of the reconstruction. |
| Limiter | A type satisfying the HasSlopeLimiter concept (e.g. MinModLimiter). |
| NumberType | The numeric type used for computations (e.g. double, float). |
Usage with the KT assembler:
Definition KurganovTadmor.hh:645
TVD gradient reconstructor parameterised by a slope limiter.
Definition tvd_reconstructor.hh:46
template<int dim_, HasSlopeLimiter Limiter, typename NumberType >
template<int n_components>
| static GradientType< dim, NumberType, n_components > DiFfRG::def::TVDReconstructor< dim_, Limiter, NumberType >::compute_gradient |
( |
const dealii::Point< dim > & | center_pos, |
|
|
const std::array< NumberType, n_components > & | u_center, |
|
|
const std::array< dealii::Point< dim >, n_faces > & | x_n, |
|
|
const std::array< std::array< NumberType, n_components >, n_faces > & | u_n ) |
|
inlinestatic |
Compute the gradient of u using the injected slope limiter.
For every component and every spatial dimension the method computes two one-sided slopes from the cell centre to its axis-aligned neighbours and returns the limiter-processed gradient.
- Template Parameters
-
| n_components | the number of components in u |
- Parameters
-
| center_pos | position of the cell centre |
| u_center | solution values at the cell centre |
| x_n | positions of the def::n_faces<dim> neighbouring cell centres, ordered as pairs (left, right) for dim 0, then dim 1, … |
| u_n | solution values at those neighbours |
- Returns
- per-component gradient vector
template<int dim_, HasSlopeLimiter Limiter, typename NumberType >
template<int n_components>
| static GradientType< dim, NumberType, n_components > DiFfRG::def::TVDReconstructor< dim_, Limiter, NumberType >::compute_gradient_derivative |
( |
const dealii::Point< dim > & | center_pos, |
|
|
const std::array< ADNumberType, n_components > & | u_center, |
|
|
const std::array< dealii::Point< dim >, n_faces > & | x_n, |
|
|
const std::array< std::array< ADNumberType, n_components >, n_faces > & | u_n ) |
|
inlinestatic |
Compute the derivative of the limited gradient w.r.t. a single stencil DOF.
The inputs are already seeded autodiff::Real<1,NumberType> values; exactly one entry across u_center and u_n should have a non-zero derivative part (set via seed()).
Unlike compute_gradient, this method does not evaluate the reconstruction at a face point — it returns the per-component derivative of the gradient itself.
- Template Parameters
-
| n_components | the number of solution components |
- Parameters
-
| center_pos | position of the cell centre |
| u_center | cell-centre values as seeded AD types |
| x_n | positions of the def::n_faces<dim> neighbouring cell centres |
| u_n | neighbour values as seeded AD types |
- Returns
- per-component gradient-derivative tensor d(grad u_c) / d(u_target)