File laplacexz-petsc.hxx#

class LaplaceXZpetsc : public LaplaceXZ#

Public Functions

LaplaceXZpetsc(Mesh *m = nullptr, Options *options = nullptr, const CELL_LOC loc = CELL_CENTRE)#
~LaplaceXZpetsc()#
virtual void setCoefs(const Field3D &A, const Field3D &B)#
inline virtual void setCoefs(const Field2D &A, const Field2D &B)#
virtual Field3D solve(const Field3D &b, const Field3D &x0)#

Solve Laplacian in X-Z

Private Members

PetscLib lib#

Requires PETSc library.

std::vector<YSlice> slice#
Vec xs#
Vec bs#

Solution and RHS vectors.

int reuse_limit#

How many times can the preconditioner be reused?

int reuse_count#

How many times has it been reused?

bool coefs_set#

Have coefficients been set?

int inner_boundary_flags#

Flags to set inner boundary condition.

int outer_boundary_flags#

Flags to set outer boundary condition.

Private Static Attributes

static const int implemented_boundary_flags = INVERT_AC_GRAD + INVERT_SET + INVERT_RHS#
struct YSlice#

Data for a single Y slice

Public Members

int yindex#
Mat MatA#

Y index.

Matrix to be inverted

Mat MatP#

Matrix for preconditioner.

KSP ksp#

Krylov Subspace solver context.