File petsc3damg.hxx¶
-
class LaplacePetsc3dAmg : public Laplacian¶
Public Functions
-
LaplacePetsc3dAmg(Options *opt = nullptr, const CELL_LOC loc = CELL_CENTRE, Mesh *mesh_in = nullptr, Solver *solver = nullptr, Datafile *dump = nullptr)¶
-
~LaplacePetsc3dAmg() override¶
-
inline virtual void setCoefA(const Field2D &val) override¶
Set coefficients for inversion. Re-builds matrices if necessary.
-
PetscMatrix<Field3D> &getMatrix3D()¶
-
inline IndexerPtr<Field3D> getIndexer()¶
-
virtual Field3D solve(const Field3D &b_in, const Field3D &x0) override¶
Performs the laplacian inversion y-slice by y-slice
- Parameters
b – [in] All the y-slices of b_slice, which is the right hand side of the equation A*x_slice = b_slice
x0 – [in] All the y-slices of the variable eventually used to set BC
- Returns
x All the y-slices of x_slice in the equation A*x_slice = b_slice
Private Functions
-
void updateMatrix3D()¶
Private Members
-
bool issetD = false¶
-
bool issetC = false¶
-
bool issetE = false¶
-
bool updateRequired = true¶
-
int lower_boundary_flags¶
-
int upper_boundary_flags¶
-
int gmres_max_steps¶
-
int maxits¶
-
bool direct¶
-
RangeIterator lowerY¶
-
RangeIterator upperY¶
-
IndexerPtr<Field3D> indexer¶
-
PetscMatrix<Field3D> operator3D¶
-
KSP ksp¶
-
bool kspInitialised¶
Private Static Functions
-
static OperatorStencil<Ind3D> getStencil(Mesh *localmesh, const RangeIterator &lowerYBound, const RangeIterator &upperYBound)¶
Private Static Attributes
-
static constexpr int implemented_flags = INVERT_START_NEW¶
-
static constexpr int implemented_boundary_flags = INVERT_AC_GRAD + INVERT_SET + INVERT_RHS¶
-
LaplacePetsc3dAmg(Options *opt = nullptr, const CELL_LOC loc = CELL_CENTRE, Mesh *mesh_in = nullptr, Solver *solver = nullptr, Datafile *dump = nullptr)¶