Loading...
Searching...
No Matches
reconstruction.hpp
44 ReconstructionPolynomial(uint8_t degree, uint8_t dimensions, const std::array<double, 3> &origin, int nFields=1);
53 void initialize(uint8_t degree, uint8_t dimensions, const std::array<double, 3> &origin, int nFields=1, bool release = true);
74 void computeValues(const std::array<double, 3> &point, int nFields, int offset, double *values) const;
75 void computeValue(int degree, const std::array<double, 3> &point, int field, double *values) const;
77 void computeValues(int degree, const std::array<double, 3> &point, int nFields, double *values) const;
78 void computeValues(int degree, const std::array<double, 3> &point, int nFields, int offset, double *values) const;
80 void computeValueLimited(const std::array<double, 3> &point, const double *limiters, int field, double *value) const;
81 void computeValuesLimited(const std::array<double, 3> &point, const double *limiters, double *values) const;
82 void computeValuesLimited(const std::array<double, 3> &point, const double *limiters, int nFields, double *values) const;
83 void computeValuesLimited(const std::array<double, 3> &point, const double *limiters, int nFields, int offset, double *values) const;
84 void computeValueLimited(int degree, const std::array<double, 3> &point, const double *limiters, int field, double *values) const;
85 void computeValuesLimited(int degree, const std::array<double, 3> &point, const double *limiters, double *values) const;
86 void computeValuesLimited(int degree, const std::array<double, 3> &point, const double *limiters, int nFields, double *values) const;
87 void computeValuesLimited(int degree, const std::array<double, 3> &point, const double *limiters, int nFields, int offset, double *values) const;
89 void computeDerivative(const std::array<double, 3> &point, const std::array<double, 3> &direction, int field, double *derivative) const;
90 void computeDerivatives(const std::array<double, 3> &point, const std::array<double, 3> &direction, double *derivatives) const;
91 void computeDerivatives(const std::array<double, 3> &point, const std::array<double, 3> &direction, int nFields, double *derivatives) const;
92 void computeDerivatives(const std::array<double, 3> &point, const std::array<double, 3> &direction, int nFields, int offset, double *derivatives) const;
93 void computeDerivative(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, int field, double *derivative) const;
94 void computeDerivatives(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, double *derivatives) const;
95 void computeDerivatives(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, int nFields, double *derivatives) const;
96 void computeDerivatives(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, int nFields, int offset, double *derivatives) const;
98 void computeDerivativeLimited(const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, int field, double *derivative) const;
99 void computeDerivativesLimited(const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, double *derivatives) const;
100 void computeDerivativesLimited(const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, int nFields, double *derivatives) const;
101 void computeDerivativesLimited(const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, int nFields, int offset, double *derivatives) const;
102 void computeDerivativeLimited(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, int field, double *derivative) const;
103 void computeDerivativesLimited(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, double *derivatives) const;
104 void computeDerivativesLimited(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, int nFields, double *derivatives) const;
105 void computeDerivativesLimited(int degree, const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, int nFields, int offset, double *derivatives) const;
107 void computeGradient(const std::array<double, 3> &point, int field, std::array<double, 3> *gradient) const;
108 void computeGradients(const std::array<double, 3> &point, std::array<double, 3> *gradients) const;
109 void computeGradients(const std::array<double, 3> &point, int nFields, std::array<double, 3> *gradients) const;
110 void computeGradients(const std::array<double, 3> &point, int nFields, int offset, std::array<double, 3> *gradients) const;
111 void computeGradient(int degree, const std::array<double, 3> &point, int field, std::array<double, 3> *gradient) const;
112 void computeGradients(int degree, const std::array<double, 3> &point, std::array<double, 3> *gradients) const;
113 void computeGradients(int degree, const std::array<double, 3> &point, int nFields, std::array<double, 3> *gradients) const;
114 void computeGradients(int degree, const std::array<double, 3> &point, int nFields, int offset, std::array<double, 3> *gradients) const;
116 void computeGradientLimited(const std::array<double, 3> &point, const double *limiters, int field, std::array<double, 3> *gradient) const;
117 void computeGradientsLimited(const std::array<double, 3> &point, const double *limiters, std::array<double, 3> *gradients) const;
118 void computeGradientsLimited(const std::array<double, 3> &point, const double *limiters, int nFields, std::array<double, 3> *gradients) const;
119 void computeGradientsLimited(const std::array<double, 3> &point, const double *limiters, int nFields, int offset, std::array<double, 3> *gradients) const;
120 void computeGradientLimited(int degree, const std::array<double, 3> &point, const double *limiters, int field, std::array<double, 3> *gradient) const;
121 void computeGradientsLimited(int degree, const std::array<double, 3> &point, const double *limiters, std::array<double, 3> *gradients) const;
122 void computeGradientsLimited(int degree, const std::array<double, 3> &point, const double *limiters, int nFields, std::array<double, 3> *gradients) const;
123 void computeGradientsLimited(int degree, const std::array<double, 3> &point, const double *limiters, int nFields, int offset, std::array<double, 3> *gradients) const;
139 static void evalPointBasisValues(uint8_t degree, uint8_t dimensions, const std::array<double, 3> &origin, const std::array<double, 3> &point, double *csi);
140 static void evalPointBasisDerivatives(uint8_t degree, uint8_t dimensions, const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, double *dcsi);
142 static void evalCellBasisValues(uint8_t degree, uint8_t dimensions, const std::array<double, 3> &origin, const Cell &cell, const std::array<double, 3> *vertexCoords, double *csi);
194 void assemblePolynomial(const std::array<double, 3> &origin, const double *values, ReconstructionPolynomial *polynomial) const;
195 void assemblePolynomial(const std::array<double, 3> &origin, int nFields, const double **values, ReconstructionPolynomial *polynomial) const;
196 void assemblePolynomial(uint8_t degree, const std::array<double, 3> &origin, const double *values, ReconstructionPolynomial *polynomial) const;
197 void assemblePolynomial(uint8_t degree, const std::array<double, 3> &origin, int nFields, const double **values, ReconstructionPolynomial *polynomial) const;
200 void updatePolynomial(int nFields, const double **values, ReconstructionPolynomial *polynomial) const;
201 void updatePolynomial(uint8_t degree, const double *values, ReconstructionPolynomial *polynomial) const;
202 void updatePolynomial(uint8_t degree, int nFields, const double **values, ReconstructionPolynomial *polynomial) const;
204 void computeValueWeights(const std::array<double, 3> &origin, const std::array<double, 3> &point, double *valueWeights) const;
205 void computeValueWeights(uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, double *valueWeights) const;
206 void computeValueWeights(int nEquations, uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, double *valueWeights) const;
207 void computeValueLimitedWeights(const std::array<double, 3> &origin, const std::array<double, 3> &point, const double *limiters, double *valueWeights) const;
208 void computeValueLimitedWeights(uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const double *limiters, double *valueWeights) const;
209 void computeValueLimitedWeights(int nEquations, uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const double *limiters, double *valueWeights) const;
211 void computeDerivativeWeights(const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, double *derivativeWeights) const;
212 void computeDerivativeWeights(uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, double *derivativeWeights) const;
213 void computeDerivativeWeights(int nEquations, uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, double *derivativeWeights) const;
214 void computeDerivativeLimitedWeights(const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, double *derivativeWeights) const;
215 void computeDerivativeLimitedWeights(uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, double *derivativeWeights) const;
216 void computeDerivativeLimitedWeights(int nEquations, uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, const double *limiters, double *derivativeWeights) const;
218 void computeGradientWeights(const std::array<double, 3> &origin, const std::array<double, 3> &point, std::array<double, 3> *gradientWeights) const;
219 void computeGradientWeights(uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, std::array<double, 3> *gradientWeights) const;
220 void computeGradientWeights(int nEquations, uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, std::array<double, 3> *gradientWeights) const;
221 void computeGradientLimitedWeights(const std::array<double, 3> &origin, const std::array<double, 3> &point, const double *limiters, std::array<double, 3> *gradientWeights) const;
222 void computeGradientLimitedWeights(uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const double *limiters, std::array<double, 3> *gradientWeights) const;
223 void computeGradientLimitedWeights(int nEquations, uint8_t degree, const std::array<double, 3> &origin, const std::array<double, 3> &point, const double *limiters, std::array<double, 3> *gradientWeights) const;
270 void addPointValueEquation(ReconstructionType type, const std::array<double, 3> &origin, const std::array<double, 3> &point, double scaleFactor = 1.);
271 void addPointDerivativeEquation(ReconstructionType type, const std::array<double, 3> &origin, const std::array<double, 3> &point, const std::array<double, 3> &direction, double scaleFactor = 1.);
272 void addCellAverageEquation(ReconstructionType type, const Cell &cell, const std::array<double, 3> &origin, const std::array<double, 3> *vertexCoords, double scaleFactor = 1.);
uint8_t getDegree() const
Definition reconstruction.cpp:3237
uint16_t getCoefficientCount() const
Definition reconstruction.cpp:3257
void swap(ReconstructionAssembler &other) noexcept
Definition reconstruction.cpp:3153
void clear(bool release=true)
Definition reconstruction.cpp:3199
uint8_t getDimensions() const
Definition reconstruction.cpp:3247
void addPointValueEquation(ReconstructionType type, const std::array< double, 3 > &origin, const std::array< double, 3 > &point, double scaleFactor=1.)
Definition reconstruction.cpp:3304
void assembleKernel(ReconstructionKernel *kernel) const
Definition reconstruction.cpp:3403
void initialize(uint8_t degree, uint8_t dimensions, bool release=true)
Definition reconstruction.cpp:3180
int countConstraints() const
Definition reconstruction.cpp:3267
int countEquations() const
Definition reconstruction.cpp:3287
void addPointDerivativeEquation(ReconstructionType type, const std::array< double, 3 > &origin, const std::array< double, 3 > &point, const std::array< double, 3 > &direction, double scaleFactor=1.)
Definition reconstruction.cpp:3322
void addCellAverageEquation(ReconstructionType type, const Cell &cell, const std::array< double, 3 > &origin, const std::array< double, 3 > *vertexCoords, double scaleFactor=1.)
Definition reconstruction.cpp:3341
ReconstructionAssembler()
Definition reconstruction.cpp:3130
void updateKernel(ReconstructionKernel *kernel) const
Definition reconstruction.cpp:3424
int countLeastSquares() const
Definition reconstruction.cpp:3277
The ReconstructionKernel class allows to evaluate the weight of a reconstruction polynomial previousl...
Definition reconstruction.hpp:169
void computeGradientWeights(const std::array< double, 3 > &origin, const std::array< double, 3 > &point, std::array< double, 3 > *gradientWeights) const
Definition reconstruction.cpp:2864
void computeValueWeights(const std::array< double, 3 > &origin, const std::array< double, 3 > &point, double *valueWeights) const
Definition reconstruction.cpp:2469
void computeGradientLimitedWeights(const std::array< double, 3 > &origin, const std::array< double, 3 > &point, const double *limiters, std::array< double, 3 > *gradientWeights) const
Definition reconstruction.cpp:2942
int getEquationCount() const
Definition reconstruction.cpp:2152
void updatePolynomial(const double *values, ReconstructionPolynomial *polynomial) const
Definition reconstruction.cpp:2312
void computeDerivativeLimitedWeights(const std::array< double, 3 > &origin, const std::array< double, 3 > &point, const std::array< double, 3 > &direction, const double *limiters, double *derivativeWeights) const
Definition reconstruction.cpp:2745
void swap(ReconstructionKernel &other) noexcept
Definition reconstruction.cpp:2071
void initialize(uint8_t degree, uint8_t dimensions, int nEquations, bool release=true)
Definition reconstruction.cpp:2090
ReconstructionKernel()
Definition reconstruction.cpp:2016
uint8_t getDimensions() const
Definition reconstruction.cpp:2132
void display(std::ostream &out, double tolerance=1.e-10) const
Definition reconstruction.cpp:3095
void computeValueLimitedWeights(const std::array< double, 3 > &origin, const std::array< double, 3 > &point, const double *limiters, double *valueWeights) const
Definition reconstruction.cpp:2546
void computeDerivativeWeights(const std::array< double, 3 > &origin, const std::array< double, 3 > &point, const std::array< double, 3 > &direction, double *derivativeWeights) const
Definition reconstruction.cpp:2660
ReconstructionKernel & operator=(const ReconstructionKernel &other)
Definition reconstruction.cpp:2056
void assemblePolynomial(const std::array< double, 3 > &origin, const double *values, ReconstructionPolynomial *polynomial) const
Definition reconstruction.cpp:2193
uint16_t getCoefficientCount() const
Definition reconstruction.cpp:2142
const double * getPolynomialWeights() const
Definition reconstruction.cpp:2164
void applyLimiter(uint8_t degree, const double *limiters, double *coeffs) const
Definition reconstruction.cpp:3067
The ReconstructionPolynomial class allows to apply a reconstruction polynomial previously assembled.
Definition reconstruction.hpp:37
static uint16_t countCoefficients(uint8_t degree, uint8_t dimensions)
Definition reconstruction.cpp:148
static void evalPointBasisDerivatives(uint8_t degree, uint8_t dimensions, const std::array< double, 3 > &origin, const std::array< double, 3 > &point, const std::array< double, 3 > &direction, double *dcsi)
Definition reconstruction.cpp:267
void computeDerivativeLimited(const std::array< double, 3 > &point, const std::array< double, 3 > &direction, const double *limiters, int field, double *derivative) const
Definition reconstruction.cpp:1268
static const uint8_t MAX_DIMENSIONS
Definition reconstruction.hpp:129
void computeValue(const std::array< double, 3 > &point, int field, double *values) const
Definition reconstruction.cpp:697
const double * getDegreeCoefficients(uint8_t degree, int field=0) const
Definition reconstruction.cpp:641
void computeDerivativesLimited(const std::array< double, 3 > &point, const std::array< double, 3 > &direction, const double *limiters, double *derivatives) const
Definition reconstruction.cpp:1289
uint16_t getCoefficientCount() const
Definition reconstruction.cpp:571
void display(std::ostream &out) const
Definition reconstruction.cpp:1972
uint8_t getDegree() const
Definition reconstruction.cpp:541
void computeValuesLimited(const std::array< double, 3 > &point, const double *limiters, double *values) const
Definition reconstruction.cpp:875
void clear(bool release=true)
Definition reconstruction.cpp:526
void initialize(uint8_t degree, uint8_t dimensions, const std::array< double, 3 > &origin, int nFields=1, bool release=true)
Definition reconstruction.cpp:485
void swap(ReconstructionPolynomial &other) noexcept
Definition reconstruction.cpp:464
const double * getCoefficients() const
Definition reconstruction.cpp:591
static void evalPointBasisValues(uint8_t degree, uint8_t dimensions, const std::array< double, 3 > &origin, const std::array< double, 3 > &point, double *csi)
Definition reconstruction.cpp:218
int getFieldCount() const
Definition reconstruction.cpp:581
void computeGradientsLimited(const std::array< double, 3 > &point, const double *limiters, std::array< double, 3 > *gradients) const
Definition reconstruction.cpp:1735
static const std::vector< uint16_t > & getCoefficientsCount(uint8_t dimensions)
Definition reconstruction.cpp:132
void computeGradients(const std::array< double, 3 > &point, std::array< double, 3 > *gradients) const
Definition reconstruction.cpp:1532
static const uint8_t MAX_DEGREE
Definition reconstruction.hpp:128
void computeDerivative(const std::array< double, 3 > &point, const std::array< double, 3 > &direction, int field, double *derivative) const
Definition reconstruction.cpp:1079
void computeGradientLimited(const std::array< double, 3 > &point, const double *limiters, int field, std::array< double, 3 > *gradient) const
Definition reconstruction.cpp:1716
static void evalCellBasisValues(uint8_t degree, uint8_t dimensions, const std::array< double, 3 > &origin, const Cell &cell, const std::array< double, 3 > *vertexCoords, double *csi)
Definition reconstruction.cpp:338
static uint16_t getDegreeCoefficientCount(uint8_t degree, uint8_t dimensions)
Definition reconstruction.cpp:167
void computeValueLimited(const std::array< double, 3 > &point, const double *limiters, int field, double *value) const
Definition reconstruction.cpp:856
void computeDerivatives(const std::array< double, 3 > &point, const std::array< double, 3 > &direction, double *derivatives) const
Definition reconstruction.cpp:1093
void computeValues(const std::array< double, 3 > &point, double *values) const
Definition reconstruction.cpp:709
uint8_t getDimensions() const
Definition reconstruction.cpp:551
ReconstructionPolynomial & operator=(const ReconstructionPolynomial &other)
Definition reconstruction.cpp:449
const std::array< double, 3 > & getOrigin() const
Definition reconstruction.cpp:561
static uint16_t countDegreeCoefficients(uint8_t degree, uint8_t dimensions)
Definition reconstruction.cpp:199
static const std::vector< uint16_t > & getDegreeCoefficientsCount(uint8_t dimensions)
Definition reconstruction.cpp:183
ReconstructionPolynomial()
Definition reconstruction.cpp:408
void computeGradient(const std::array< double, 3 > &point, int field, std::array< double, 3 > *gradient) const
Definition reconstruction.cpp:1520
void initialize(uint8_t degree, uint8_t dimensions, bool release=true)
Definition reconstruction.cpp:3647
Reconstruction(uint8_t degree, uint8_t dimensions)
Definition reconstruction.cpp:3620
void swap(Reconstruction &other) noexcept
Definition reconstruction.cpp:3632
