File iterative_parallel_tri.hxx¶
-
class LaplaceIPT : public Laplacian¶
Public Functions
-
LaplaceIPT(Options *opt = nullptr, const CELL_LOC loc = CELL_CENTRE, Mesh *mesh_in = nullptr, Solver *solver = nullptr, Datafile *dump = nullptr)¶
-
~LaplaceIPT() = default¶
-
inline virtual void setCoefA(const Field2D &val) override¶
Set coefficients for inversion. Re-builds matrices if necessary.
-
inline void resetMeanIterations()¶
-
void resetSolver()¶
Private Functions
-
inline bool isGlobalFlagSet(int flag) const¶
-
inline bool isInnerBoundaryFlagSet(int flag) const¶
-
inline bool isOuterBoundaryFlagSet(int flag) const¶
Private Members
-
int maxits¶
Maximum number of iterations.
-
int max_level¶
Maximum number of coarse grids.
-
int max_cycle¶
Maximum number of iterations per grid.
-
bool predict_exit¶
Predict when convergence will be reached, and skip expensive convergence checks at earlier iterations.
-
int nmode¶
Number of unfiltered Fourier modes.
-
int ncx¶
Number of local x, y points.
-
int ny¶
-
int jy¶
Current y index.
-
Tensor<dcomplex> upperGuardVector¶
Coefficients for recovering the full global solution from guard cells
-
Array<bool> first_call¶
Flag to state whether this is the first time the solver is called on the point (jy,kz).
-
int ncalls = {0}¶
Counter for the number of times the solver has been called.
-
int proc_in¶
Neighbouring processors in the in and out directions.
-
int proc_out¶
-
int myproc¶
This processor’s unique ID.
-
int nproc¶
Shorthand for localmesh->NXPE.
-
int xs¶
First and last interior points xstart, xend.
-
int xe¶
Friends
- friend class Level
-
class Level¶
Public Functions
-
Level(LaplaceIPT &lap)¶
-
Level(const LaplaceIPT &lap, const Level &lup, std::size_t current_level)¶
-
void calculate_residual(const LaplaceIPT &lap)¶
-
void calculate_total_residual(const LaplaceIPT &lap, Array<BoutReal> &error, Array<bool> &converged)¶
-
void coarsen(const LaplaceIPT &lap, const Matrix<dcomplex> &fine_residual)¶
-
void gauss_seidel_red_black(const LaplaceIPT &lap)¶
-
void init_rhs(LaplaceIPT &lap, const Matrix<dcomplex> &bcmplx)¶
-
bool is_diagonally_dominant(const LaplaceIPT &lap) const¶
-
void reconstruct_full_solution(const LaplaceIPT &lap, Matrix<dcomplex> &xk1d) const¶
-
void refine(const LaplaceIPT &lap, Matrix<dcomplex> &fine_error)¶
-
void synchronize_reduced_field(const LaplaceIPT &lap, Matrix<dcomplex> &field)¶
-
void update_solution(const LaplaceIPT &lap)¶
Public Members
-
int myproc¶
Unique ID.
-
int proc_in¶
In-neighbour.
-
int proc_out¶
Out-neighbour.
-
bool included¶
Whether this processor is included in this grid level’s calculation.
-
bool red¶
Colouring of processor for Gauss-Seidel.
-
bool black¶
-
int index_start¶
-
int index_end¶
-
bool included_up¶
Whether this processor is involved in the calculation on the grid one level more refined
-
int proc_in_up¶
This processor’s neighbours on the level above.
-
int proc_out_up¶
-
Level(LaplaceIPT &lap)¶
-
LaplaceIPT(Options *opt = nullptr, const CELL_LOC loc = CELL_CENTRE, Mesh *mesh_in = nullptr, Solver *solver = nullptr, Datafile *dump = nullptr)¶