File invert_parderiv.hxx¶
Variables
-
constexpr auto PARDERIVCYCLIC =
"cyclic"¶
-
class InvertParFactory : public Factory<InvertPar, InvertParFactory, Options*, CELL_LOC, Mesh*>¶
Public Functions
-
inline ReturnType create(Options *options = nullptr, CELL_LOC location = CELL_CENTRE, Mesh *mesh = nullptr) const¶
Public Static Functions
-
static void ensureRegistered()¶
Public Static Attributes
-
static constexpr auto type_name =
"InvertPar"¶
-
static constexpr auto section_name =
"parderiv"¶
-
static constexpr auto option_name =
"type"¶
-
static constexpr auto default_type = PARDERIVCYCLIC¶
-
inline ReturnType create(Options *options = nullptr, CELL_LOC location = CELL_CENTRE, Mesh *mesh = nullptr) const¶
-
class InvertPar¶
- #include <invert_parderiv.hxx>
Base class for parallel inversion solvers.
Inverts a matrix of the form
A + B * Grad2_par2 + C*D2DYDZ + D*D2DZ2 + E*DDY
Example
auto inv = InvertPar::Create(); inv->setCoefA(1.0); inv->setCoefB(-0.1);
Field3D result = inv->solve(rhs);
Subclassed by InvertParCR
Public Functions
-
inline InvertPar(Options *opt, CELL_LOC location_in, Mesh *mesh_in = nullptr)¶
Constructor. Note that this is a base class, with pure virtual members, so can’t be created directly. To create an InvertPar object call the create() static function.
-
virtual ~InvertPar() = default¶
-
virtual const Field2D solve(const Field2D &f)¶
Solve the system of equations Warning: Default implementation very inefficient. This converts the Field2D to a Field3D then calls solve() on the 3D variable
-
virtual const Field3D solve(const Field3D &f) = 0¶
Solve the system of equations
This method must be implemented
Public Static Functions
-
inline InvertPar(Options *opt, CELL_LOC location_in, Mesh *mesh_in = nullptr)¶