11 #ifndef __CE_Multigrid__
12 #define __CE_Multigrid__
55 void updateBoundaryConditions(
bool struts =
false)
const;
59 int getMaxCoarse(
int min_per_axis)
const;
68 for (
int i = 0; i < 3; i++)
90 void smoothLaplacianGaussSeidel(
CE_Multigrid &
x,
int iterations = 1,
91 bool use_small=
true)
const;
97 int iterations = 1)
const;
107 void coarsenAlongAxis(
CE_Multigrid& uh,
int axis)
const;
115 void interpolateAlongAxis(
CE_Multigrid& u,
int axis)
const;
123 void interpolate(
const UT_Vector3I &interpolate_axis,
137 void vcycle(
int min_per_axis,
int n_smooth_down,
int n_smooth_up,
144 void fullMultigrid(
int min_per_axis,
int n_smooth_down,
156 int solvePoisson(
fpreal64 abstol,
fpreal64 reltol,
int miniter,
int maxiter,
160 bool finish_between_iters =
false,
161 bool start_fmg =
true)
const;
169 void interpolateByAxis(
const UT_Vector3I &interpolate_axis,
174 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