33 #ifndef __H__UG__SUBDIVISION_VOLUMES__
34 #define __H__UG__SUBDIVISION_VOLUMES__
128 std::vector<Tetrahedron*>& vTetsOut,
int bestDiag);
151 template <
class TAPosition>
168 template <
class TAPosition>
171 TAPosition& aSmoothBndPosEvenVrt,
172 TAPosition& aSmoothBndPosOddVrt,
173 AInt& aNumManifoldEdges);
188 template <
class TAPosition>
191 TAPosition& aSmoothBndPosEvenVrt,
192 TAPosition& aSmoothBndPosOddVrt,
193 AInt& aNumManifoldEdges);
207 template <
class TAPosition>
210 TAPosition& aSmoothBndPos_tri,
211 TAPosition& aSmoothBndPos_quad);
225 template <
class TAPosition>
228 TAPosition& aSmoothBndPosOddVrt,
229 AInt& aNumManifoldEdges);
283 AInt& aNumManifoldEdges,
bool bCreaseSurf);
307 const char* linearManifoldSubsets);
321 template <
class TAPosition>
335 template <
class TAPosition>
349 template <
class TAPosition>
379 template <
class TAPosition>
411 template <
class TAPosition>
417 const char* linearManifoldSubsets);
421 const char* linearManifoldSubsets);
void ApplySmoothSubdivisionVolumesToTopLevel(MultiGrid &mg, MGSubsetHandler &sh, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH, bool bConstrained)
Function to create a smooth subdivision volumes hierarchy.
Definition: subdivision_volumes.cpp:2955
void ApplySmoothManifoldPosToTopLevelLoopScheme(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH, bool bCreaseSurf)
Toplevel vertex repositioning function for subdivision surfaces refinement (by C. Loop,...
Definition: subdivision_volumes.cpp:2304
GlobalBoundaryRefinementRule GetBoundaryRefinementRule()
get procedure for boundary refinement rule variable
Definition: subdivision_volumes.cpp:51
void PrintSubdivisionVolumesRefinementMask()
Function for printing the subdivision volumes tet-oct refinement mask.
Definition: subdivision_volumes.cpp:141
void CalculateNumManifoldEdgesVertexAttachmentInParentLevel(MultiGrid &mg, MGSubsetHandler &markSH, AInt &aNumManifoldEdges, bool bCreaseSurf)
Function for calculating the number of associated manifold edges of all parent level vertices.
Definition: subdivision_volumes.cpp:2033
void CalculateSmoothVolumePosInTopLevel(MultiGrid &mg, MGSubsetHandler &markSH, APosition &aSmoothVolPos_toc, APosition &aSmoothVolPos_prism, APosition &aSmoothVolPos_hex)
Toplevel vertex smoothing function for subdivision volumes refinement.
Definition: subdivision_volumes.cpp:1638
void CheckValences(MultiGrid &mg, MGSubsetHandler &markSH, const char *filename)
Function for checking the number of associated volumes of all edges.
Definition: subdivision_volumes.cpp:58
void ApplySmoothManifoldPosToTopLevelAveragingScheme(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH)
Toplevel vertex repositioning function for subdivision surfaces refinement (Averaging scheme)
Definition: subdivision_volumes.cpp:2625
Attachment< int > AInt
Definition: common_attachments.h:55
void CalculateNumManifoldFacesVertexAttachmentInTopLevel(MultiGrid &mg, MGSubsetHandler &markSH, AInt &aNumManifoldFaces_tri, AInt &aNumManifoldFaces_quad)
Function for calculating the number of associated manifold faces of all toplevel manifold vertices.
Definition: subdivision_volumes.cpp:2122
void ApplyConstrainedSmoothSubdivisionVolumesToTopLevel(MultiGrid &mg, MGSubsetHandler &sh, MGSubsetHandler &markSH, const char *linearManifoldSubsets)
Definition: subdivision_volumes.cpp:3037
void CalculateSmoothManifoldPosInParentLevelButterflyScheme(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH, TAPosition &aSmoothBndPosOddVrt, AInt &aNumManifoldEdges)
Parent level vertex smoothing function for subdivision surfaces refinement (Butterfly scheme)
Definition: subdivision_volumes.cpp:1216
void ApplySmoothSubdivisionSurfacesToTopLevel(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &sh, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH, bool bCreaseSurf)
Function to create a smooth subdivision volumes hierarchy.
Definition: subdivision_volumes.cpp:2894
void CalculateSmoothManifoldPosInParentLevelLoopScheme(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH, TAPosition &aSmoothBndPosEvenVrt, TAPosition &aSmoothBndPosOddVrt, AInt &aNumManifoldEdges)
Parent level vertex smoothing function for subdivision surfaces refinement (by C. Loop,...
Definition: subdivision_volumes.cpp:879
void InitLinearManifoldSubsetHandler(MultiGrid &mg, MGSubsetHandler &sh, MGSubsetHandler &linearManifoldSH, const char *linearManifoldSubsets)
Procedure to initialize the linear boundary manifold subsets SubsetHandler with user-specified subset...
Definition: subdivision_volumes.cpp:2189
APosition3 APosition
Definition: common_attachments.h:76
void TetrahedralizeHybridTetOctGrid(MultiGrid &mg, int bestDiag)
Conversion function for hybrid tetra-/octahedral multigrids.
Definition: subdivision_volumes.cpp:460
void SetBoundaryRefinementRule(GlobalBoundaryRefinementRule refRule)
setting procedure for global boundary refinement rule variable
Definition: subdivision_volumes.cpp:44
void ProjectHierarchyToSubdivisionLimit(MultiGrid &mg, TAPosition &aPos)
Projection function for smooth subdivision (volumes+surface) refinement.
Definition: subdivision_volumes.cpp:516
MultiGridSubsetHandler MGSubsetHandler
Definition: subset_handler_multi_grid.h:377
void CalculateNumElemsVertexAttachmentInTopLevel(MultiGrid &mg, AInt &aNumElems_toc, AInt &aNumElems_prism, AInt &aNumElems_hex)
Function for calculating the number of associated volumes of all toplevel vertices.
Definition: subdivision_volumes.cpp:1964
void CalculateConstrainedSmoothVolumePosInTopLevel(MultiGrid &mg, MGSubsetHandler &markSH, APosition &aSmoothVolPos_toc)
Toplevel vertex smoothing function for subdivision volumes refinement.
Definition: subdivision_volumes.cpp:1803
void CalculateSmoothCreaseManifoldPosInParentLevelLoopScheme(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH, TAPosition &aSmoothBndPosEvenVrt, TAPosition &aSmoothBndPosOddVrt, AInt &aNumManifoldEdges)
Parent level vertex smoothing function for subdivision crease surfaces refinement (by C....
Definition: subdivision_volumes.cpp:587
GlobalBoundaryRefinementRule
enumeration for identification of global boundary refinement rule to be used
Definition: subdivision_volumes.h:65
@ SUBDIV_SURF_BUTTERFLY_SCHEME
Definition: subdivision_volumes.h:69
@ SUBDIV_VOL
Definition: subdivision_volumes.h:70
@ SUBDIV_SURF_AVERAGING_SCHEME
Definition: subdivision_volumes.h:68
@ LINEAR
Definition: subdivision_volumes.h:66
@ SUBDIV_SURF_LOOP_SCHEME
Definition: subdivision_volumes.h:67
void SplitOctahedronToTetrahedrons(Grid &grid, Octahedron *oct, Volume *parentVol, std::vector< Tetrahedron * > &vTetsOut, int bestDiag)
Function for splitting an octahedron to 4 sub-tetrahedrons.
Definition: subdivision_volumes.cpp:283
void CalculateSmoothManifoldPosInTopLevelAveragingScheme(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH, TAPosition &aSmoothBndPos_tri, TAPosition &aSmoothBndPos_quad)
Toplevel vertex smoothing function for subdivision surfaces refinement (Averaging scheme)
Definition: subdivision_volumes.cpp:1101
void ApplySmoothManifoldPosToTopLevelButterflyScheme(MultiGrid &mg, TAPosition &aPos, MGSubsetHandler &markSH, MGSubsetHandler &linearManifoldSH)
Toplevel vertex repositioning function for subdivision surfaces refinement (Butterfly scheme)
Definition: subdivision_volumes.cpp:2481
void ApplySmoothVolumePosToTopLevel(MultiGrid &mg, MGSubsetHandler &markSH, bool bConstrained)
Toplevel vertex repositioning function for subdivision volumes refinement.
Definition: subdivision_volumes.cpp:2752