Go to the documentation of this file.
54 #ifndef triSurfaceMesh_H
55 #define triSurfaceMesh_H
79 public searchableSurface,
80 public objectRegistry,
82 public triSurfaceRegionSearch
96 mutable autoPtr<indexedOctree<treeDataEdge>>
edgeTree_;
214 virtual label
size()
const
216 return triSurface::size();
323 virtual bool global()
const
Defines the attributes of an object for which implicit objectRegistry management is supported,...
void operator=(const triSurfaceMesh &)=delete
No copy assignment.
A class for handling words, derived from Foam::string.
A class for handling file names.
A class for managing temporary objects.
scalar minQuality_
Optional min triangle quality. Triangles below this get.
autoPtr< indexedOctree< treeDataEdge > > edgeTree_
Search tree for boundary edges.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects.
virtual void getNormal(const List< pointIndexHit > &, vectorField &normal) const
From a set of points and indices get the normal.
List< T > values(const HashTable< T, Key, Hash > &tbl, const bool doSort=false)
List of values from HashTable, optionally sorted.
virtual void getRegion(const List< pointIndexHit > &, labelList ®ion) const
From a set of points and indices get the region.
iterator end() noexcept
iterator to signal the end (for any HashTable)
const indexedOctree< treeDataEdge > & edgeTree() const
Demand driven construction of octree for boundary edges.
TypeName("triSurfaceMesh")
Runtime type information.
An edge is a list of two point labels. The functionality it provides supports the discretisation on a...
bool typeGlobal< triSurfaceMesh >()
Template function for obtaining global status.
IOoject and searching on triSurface.
Helper class to search on triSurface. Creates an octree for each region of the surface and only searc...
virtual label size() const
Range of local indices that can be returned.
label surfaceClosed_
Is surface closed.
virtual volumeType outsideVolumeType() const
If surface is closed, what is type of points outside bounds.
virtual void findLineAny(const pointField &start, const pointField &end, List< pointIndexHit > &) const
Return any intersection on segment from start to end.
triSurfaceMesh(const triSurfaceMesh &)=delete
No copy construct.
virtual void movePoints(const pointField &)
Move points.
List< word > wordList
A List of words.
Registry of regIOobjects.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
An enumeration wrapper for classification of a location as being inside/outside of a volume.
Triangulated surface description with patch information.
fileName fName_
Supplied fileName override.
Base class of (analytical or triangulated) surface. Encapsulates all the search routines....
The IOstreamOption is a simple container for options an IOstream can normally have.
virtual void findLine(const pointField &start, const pointField &end, List< pointIndexHit > &) const
Find first intersection on segment from start to end.
Non-pointer based hierarchical recursive searching.
virtual void getField(const List< pointIndexHit > &, labelList &) const
WIP. From a set of hits (points and.
virtual const wordList & regions() const
Names of regions.
wordList regions_
Names of regions.
bool writeData(Ostream &) const
writeData function required by regIOobject but not used.
virtual void boundingSpheres(pointField ¢res, scalarField &radiusSqr) const
Get bounding spheres (centre and radius squared). Any point.
void clearOut()
Clear storage.
virtual fileName filePath() const
Return complete path + object name if the file exists.
fileName globalFilePath(const word &typeName, const bool search=true) const
Helper for filePath that searches up if in parallel.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
virtual tmp< pointField > points() const
Get the points that define the surface.
virtual tmp< pointField > coordinates() const
Get representative set of element coordinates.
virtual bool writeObject(IOstreamOption streamOpt, const bool valid) const
Write using stream options.
static void getNextIntersections(const indexedOctree< treeDataTriSurface > &octree, const point &start, const point &end, const vector &smallVec, DynamicList< pointIndexHit > &hits)
Steps to next intersection. Adds smallVec and starts tracking.
virtual void setField(const labelList &values)
WIP. Store element-wise field.
Pointer management similar to std::unique_ptr, with some additional methods and type checking.
virtual ~triSurfaceMesh()
Destructor.
virtual void findNearest(const pointField &sample, const scalarField &nearestDistSqr, List< pointIndexHit > &) const
static bool addFaceToEdge(const edge &, EdgeMap< label > &)
Helper function for isSurfaceClosed.
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
static word meshSubDir
Return the mesh sub-directory name (usually "triSurface")
virtual bool overlaps(const boundBox &bb) const
Does any part of the surface overlap the supplied bound box?
bool isSurfaceClosed() const
Check whether surface is closed without calculating any permanent.
A bounding box defined in terms of min/max extrema points.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
virtual void getVolumeType(const pointField &points, List< volumeType > &volType) const
Determine type (inside/outside/mixed) for point.
virtual bool hasVolumeType() const
Whether supports volume type (below) - i.e. whether is closed.
virtual bool global() const
Is object global.
virtual void findLineAll(const pointField &start, const pointField &end, List< List< pointIndexHit >> &) const
Get all intersections in order from start to end.
volumeType outsideVolType_
If surface is closed, what is type of outside points.
Minimal example by using system/controlDict.functions: