Base class for Discontinuous Galerkin bases, intended for time-of-flight computations. More...
#include <DGBasis.hpp>
Public Member Functions | |
virtual | ~DGBasisInterface () |
Virtual destructor. | |
virtual int | numBasisFunc () const =0 |
The number of basis functions per cell. | |
virtual int | dimensions () const =0 |
The number of space dimensions. | |
virtual int | degree () const =0 |
The polynomial degree of the basis functions. | |
virtual void | eval (const int cell, const double *x, double *f_x) const =0 |
Evaluate all basis functions associated with cell at x, writing to f_x. More... | |
virtual void | evalGrad (const int cell, const double *x, double *grad_f_x) const =0 |
Evaluate gradients of all basis functions associated with cell at x, writing to grad_f_x. More... | |
virtual void | addConstant (const double increment, double *coefficients) const =0 |
Modify basis coefficients to add to the function value. More... | |
virtual void | multiplyGradient (const double factor, double *coefficients) const =0 |
Modify basis coefficients to change the function's slope. More... | |
double | evalFunc (const int cell, const double *coefficients, const double *x) const |
Evaluate function f = sum_i c_i b_i at the point x. More... | |
virtual double | functionAverage (const double *coefficients) const =0 |
Compute the average of the function f = sum_i c_i b_i. More... | |
Base class for Discontinuous Galerkin bases, intended for time-of-flight computations.
|
pure virtual |
Modify basis coefficients to add to the function value.
A function f = sum_i c_i b_i is assumed, and we change it to (f + increment) by modifying the c_i. This is done without modifying its gradient.
[in] | increment | Add this value to the function. |
[out] | coefficients | Coefficients {c_i} for a single cell. |
Implemented in Opm::DGBasisMultilin, and Opm::DGBasisBoundedTotalDegree.
|
pure virtual |
Evaluate all basis functions associated with cell at x, writing to f_x.
The array f_x must have size equal to numBasisFunc().
Implemented in Opm::DGBasisMultilin, and Opm::DGBasisBoundedTotalDegree.
double Opm::DGBasisInterface::evalFunc | ( | const int | cell, |
const double * | coefficients, | ||
const double * | x | ||
) | const |
Evaluate function f = sum_i c_i b_i at the point x.
Note that this function is not virtual, but implemented in terms of the virtual functions of the class.
[in] | cell | Cell index |
[in] | coefficients | Coefficients {c_i} for a single cell. |
[in] | x | Point at which to compute f(x). |
|
pure virtual |
Evaluate gradients of all basis functions associated with cell at x, writing to grad_f_x.
The array grad_f_x must have size numBasisFunc() * dimensions(). The dimensions() components of the first basis function gradient come before the components of the second etc.
Implemented in Opm::DGBasisMultilin, and Opm::DGBasisBoundedTotalDegree.
|
pure virtual |
Compute the average of the function f = sum_i c_i b_i.
[in] | coefficients | Coefficients {c_i} for a single cell. |
Implemented in Opm::DGBasisMultilin, and Opm::DGBasisBoundedTotalDegree.
|
pure virtual |
Modify basis coefficients to change the function's slope.
A function f = sum_i c_i b_i is assumed, and we change it to a function g with the property that grad g = factor * grad f by modifying the c_i. This is done without modifying the average, i.e. the integrals of g and f over the cell are the same.
[in] | factor | Multiply gradient by this factor. |
[out] | coefficients | Coefficients {c_i} for a single cell. |
Implemented in Opm::DGBasisMultilin, and Opm::DGBasisBoundedTotalDegree.