13 #ifndef __UT_MGOperator__
14 #define __UT_MGOperator__
23 template<
typename S>
UT_API
35 myAmplificationFactor(1.8),
36 myJacobiOmega(2.0 / 3),
92 bool startFMG =
true);
121 template<
bool ZERO_GUESS = false>
124 bool redFirst)
const;
139 int getNumTiles(
int level)
const;
141 int getNumLevels()
const;
157 void addTileMapLevel();
161 void factorFinalLevel();
171 inline T getEdgeWeight(
int x,
int y,
int z,
int level,
int axis)
const;
173 inline T getDiagonalWeight(
int x,
int y,
int z,
int level)
const;
179 template<
bool RESTRICT,
int LEVEL>
185 template<
bool RESTRICT>
192 template<
int LEVEL,
bool SUBTRACT>
197 template<
bool SUBTRACT>
211 template<
int LEVEL,
bool ZERO_GUESS,
bool FIRST_PASS>
213 T omega,
int parity)
const;
217 template<
bool ZERO_GUESS,
bool FIRST_PASS>
219 T omega,
int parity)
const;
223 template<
bool ZERO_GUESS,
bool FIRST_PASS>
225 T omega,
int parity)
const;
229 template<
int LEVEL,
bool ZERO_GUESS,
bool FIRST_PASS>
231 T omega,
int parity)
const;
240 template<
int LEVEL,
bool HOMOGENEOUS>
245 template<
bool HOMOGENEOUS>
251 template<
int LEVEL,
bool HOMOGENEOUS>
259 template<
bool HOMOGENEOUS,
bool ZERO_GUESS>
UT_MGOperatorT(int threshold=100)
UT_FixedVector< T, 7 > coeff
UT_Array< utMGTileMap > myAtlas
Array of tile map levels.
GLdouble GLdouble GLdouble z
UT_Vector3I myBoundariesPos
Conditions at the upper/right/front boundaries of the map.
UT_API bool ut_tileHasActiveVoxel(const UT_VoxelTile< S > *tile)
int mySmoothingPasses
Number of pre- and post-smoothing passes to perform in a V-cycle.
UT_MGOperatorT< fpreal32 > UT_MGOperatorF
UT_VectorT< T > myCoarseCholeskyD
UT_VoxelArray< int > tileMap
const int myVoxelCountThreshold
T myAmplificationFactor
Amplification factor after prolongation (for V- and full multigrid cycles).
UT_Vector4T< T > myInternalCoeff
GLboolean GLboolean GLboolean b
UT_MatrixT< T > myCoarseCholeskyL
UT_Vector3I myBoundariesNeg
Conditions at the lower/left/back boundaries of the map.
UT_Array< utMGCoordAndCoeff > invTileMapMat
UT_EXTERN_TEMPLATE(UT_MGOperatorT< fpreal32 >)
GLint GLint GLsizei GLint border
UT_Array< UT_VectorT< T > > myScratchpad
UT_MGOperatorT< fpreal64 > UT_MGOperatorD
T myGSOmega
Overrelaxation parameter for Gauss-Seidel smoothing passes.
GLint GLfloat GLint stencil
#define THREADED_METHOD3_CONST(CLASSNAME, DOMULTI, METHOD, PARMTYPE1, PARMNAME1, PARMTYPE2, PARMNAME2, PARMTYPE3, PARMNAME3)
UT_MGOperatorT< fpreal > UT_MGOperatorR
T myJacobiOmega
Damping parameter for Jacobi smoothing passes.