36 #ifndef NEKTAR_MESHUTILS_OCTREE_OCTREE
37 #define NEKTAR_MESHUTILS_OCTREE_OCTREE
39 #include <boost/shared_ptr.hpp>
51 namespace NekMeshUtils
76 const std::string uds)
NekDouble ddx(OctantSharedPtr i, OctantSharedPtr j)
Calculates the difference in delta divided by the difference in location between two octants i and j...
CADSystemSharedPtr m_cad
cad object
General purpose memory allocation routines with the ability to allocate from thread specific memory p...
void SubDivide()
Function which initiates and controls the subdivision process.
std::vector< OctantSharedPtr > m_octants
list of leaf octants
NekDouble GetMinDelta()
returns the miminum spacing in the octree (for meshing purposes)
NekDouble m_minDelta
minimum delta in the octree
Octree(CADSystemSharedPtr cad, const bool ver, const NekDouble min, const NekDouble max, const NekDouble eps, const std::string uds)
Defualt constructor.
bool m_verbose
verbose output
bool VerifyNeigbours()
Looks over all leaf octants and checks that their neigbour assigments are valid.
OctantSharedPtr m_masteroct
master octant for searching
void GetOctreeMesh(MeshSharedPtr m)
populates the mesh m with a invalid hexahedral mesh based on the octree, used for visualisation ...
void CompileCuravturePointList()
gets an optimum number of curvature sampling points and calculates the curavture at these points ...
void PropagateDomain()
takes the mesh specification from surface octants and progates that through the domain so all octants...
int CountElemt()
estimates the number of elements to be created in the mesh
int m_numoct
number of octants made, used for id index
boost::shared_ptr< Octree > OctreeSharedPtr
boost::shared_ptr< Octant > OctantSharedPtr
void Build()
executes octree building routines
NekDouble m_eps
curavture sensivity paramter
boost::shared_ptr< Mesh > MeshSharedPtr
Shared pointer to a mesh.
NekDouble m_dim
physical size of the octree
boost::shared_ptr< CADSystem > CADSystemSharedPtr
Array< OneD, NekDouble > m_centroid
x,y,z location of the center of the octree
NekDouble Query(Array< OneD, NekDouble > loc)
once constructed queryies the octree based on x,y,z location to get a mesh spacing ...
std::vector< CurvaturePointSharedPtr > m_cpList
list of curvature sample points
void SmoothSurfaceOctants()
Smooths specification over the surface encompasing octants to a gradation criteria.
NekDouble m_maxDelta
maximum delta in the octree
void SmoothAllOctants()
Smooths specification over all octants to a gradation criteria.