11 #ifndef __CE_Multigrid__
12 #define __CE_Multigrid__
57 void updateBoundaryConditions(
bool struts =
false)
const;
61 int getMaxCoarse(
int minPerAxis)
const;
70 for (
int i = 0; i < 3; i++)
92 void smoothLaplacianGaussSeidel(
CE_Multigrid &
x,
int iterations = 1,
93 bool useSmall=
true)
const;
99 int iterations = 1)
const;
109 void coarsenAlongAxis(
CE_Multigrid& uh,
int axis)
const;
117 void interpolateAlongAxis(
CE_Multigrid& u,
int axis)
const;
138 void vcycle(
int minPerAxis,
int nSmoothDown,
int nSmoothUp,
144 void fullMultigrid(
int minPerAxis,
int nSmoothDown,
156 int solvePoisson(
fpreal64 abstol,
fpreal64 reltol,
int miniter,
int maxiter,
160 bool finishBetweenIters =
false,
161 bool startFMG =
true)
const;
173 void initLaplacian();
void match(const CE_Grid &src)
Match the src CE_Grid in terms of size and border conditions.
UT_Vector3I getParity() const
Returns a vector containing the odd/even parity for each axis.
UT_Vector3T< int64 > UT_Vector3I
int getLevel() const
Returns a grid's level within the multigrid hierarchy.
UT_Vector3I myOddCoarsenings
CE_Grid & operator=(const CE_Grid &src)
Assign to this, equivalent to match(src), followed by copyData(src).
UT_Vector3I myBoundariesPos
UT_Vector3 myBoundAdjModPos
void initFromVoxels(const UT_VoxelArrayF &src, int xghost=1, int yghost=1, int zghost=1, int xpad=1, int ypad=1, int zpad=1)
UT_Vector3I getRes() const