discreteSurface Class Reference

The basis for sampling from triSurfaceMesh. It samples on the points/triangles of the triSurface. More...

Inheritance diagram for discreteSurface:
[legend]
Collaboration diagram for discreteSurface:
[legend]

Public Types

enum  samplingSource { cells, insideCells, boundaryFaces }
 Types of communications. More...
 
- Public Types inherited from MeshedSurface< Face >
typedef Face FaceType
 Face type used. More...
 

Public Member Functions

 TypeName ("discreteSurface")
 Runtime type information. More...
 
 discreteSurface (const polyMesh &mesh, const word &surfaceName, const samplingSource sampleSource, const bool allowInterpolate=true)
 Construct from components. More...
 
 discreteSurface (const polyMesh &mesh, const dictionary &dict, const bool allowInterpolate=true)
 Construct from dictionary. More...
 
 discreteSurface (const word &name, const polyMesh &mesh, const triSurface &surface, const word &sampleSourceName, const bool allowInterpolate=true)
 Construct from triSurface. More...
 
virtual ~discreteSurface ()
 Destructor. More...
 
const polyMeshmesh () const
 Access to the underlying mesh. More...
 
bool interpolate () const
 Interpolation requested for surface. More...
 
bool interpolate (bool b)
 Change interpolation request for surface. More...
 
virtual bool needsUpdate () const
 Does the surface need an update? More...
 
virtual bool expire ()
 Mark the surface as needing an update. More...
 
virtual bool update ()
 Update the surface as required. More...
 
bool update (const treeBoundBox &)
 Update the surface using a bound box to limit the searching. More...
 
virtual const labelListzoneIds () const
 Per-face zone/region information. More...
 
virtual bool hasFaceIds () const
 If element ids/order of the original surface are kept. More...
 
virtual const labelListoriginalIds () const
 List of element ids/order of the original surface,. More...
 
bool onBoundary () const
 Sampling boundary values instead of cell values. More...
 
const labelListsampleElements () const
 From local surface face to mesh cell/face. More...
 
const pointFieldsamplePoints () const
 Local points to sample per point. More...
 
virtual bool sampleAndStore (const objectRegistry &store, const word &fieldName, const word &sampleScheme) const
 Sample the volume field onto surface,. More...
 
template<class Type >
tmp< Field< Type > > sampleType (const word &fieldName, const word &sampleScheme) const
 Sample field on surface. The tmp field is 'valid' on success. More...
 
virtual void print (Ostream &os) const
 Write information. More...
 
template<class Type >
Foam::tmp< Foam::Field< Type > > sampleType (const word &fieldName, const word &sampleScheme) const
 
template<class Type >
Foam::tmp< Foam::Field< Type > > sampleOnFaces (const interpolation< Type > &sampler) const
 
template<class Type >
Foam::tmp< Foam::Field< Type > > sampleOnPoints (const interpolation< Type > &interpolator) const
 
- Public Member Functions inherited from MeshedSurface< Face >
 ClassName ("MeshedSurface")
 Runtime type information. More...
 
 MeshedSurface ()
 Construct null, an empty surface. More...
 
 MeshedSurface (const MeshedSurface &surf)
 Copy construct. More...
 
 MeshedSurface (const UnsortedMeshedSurface< Face > &surf)
 Copy construct from an UnsortedMeshedSurface. More...
 
 MeshedSurface (MeshedSurface &&surf)
 Move construct. More...
 
 MeshedSurface (UnsortedMeshedSurface< Face > &&surf)
 Move construct from an UnsortedMeshedSurface. More...
 
 MeshedSurface (const pointField &pointLst, const UList< Face > &faceLst, const UList< surfZone > &zoneLst)
 Copy construct from components (points, faces, zones). More...
 
 MeshedSurface (pointField &&pointLst, List< Face > &&faceLst, const UList< surfZone > &zoneLst)
 Move construct from components (points, faces). More...
 
 MeshedSurface (const pointField &pointLst, const UList< Face > &faceLst, const labelUList &zoneSizes=labelUList(), const UList< word > &zoneNames=UList< word >())
 Copy construct from components (points, faces). More...
 
 MeshedSurface (pointField &&pointLst, List< Face > &&faceLst, const labelUList &zoneSizes=labelUList(), const UList< word > &zoneNames=UList< word >())
 Move construct from components (points, faces). More...
 
 MeshedSurface (const polyBoundaryMesh &bMesh, const bool globalPoints=false)
 Construct from a boundary mesh with local points/faces. More...
 
 MeshedSurface (const surfMesh &mesh)
 Construct from a surfMesh. More...
 
 MeshedSurface (const fileName &name)
 Construct from file name (uses extension to determine type) More...
 
 MeshedSurface (const fileName &name, const word &ext)
 Construct from file name (uses extension to determine type) More...
 
 MeshedSurface (Istream &is)
 Construct from Istream. More...
 
 MeshedSurface (const Time &runTime, const word &surfName=word::null)
 Construct from database. More...
 
 declareRunTimeSelectionTable (autoPtr, MeshedSurface, fileExtension,(const fileName &name),(name))
 
virtual ~MeshedSurface ()
 Destructor. More...
 
 declareMemberFunctionSelectionTable (void, UnsortedMeshedSurface, write, fileExtension,(const fileName &name, const MeshedSurface< Face > &surf, const dictionary &options),(name, surf, options))
 
label size () const
 The surface size is the number of faces. More...
 
const List< Face > & surfFaces () const
 Return const access to the faces. More...
 
const surfZoneListsurfZones () const
 Const access to the surface zones. More...
 
const vectorFieldSf () const
 Face area vectors (normals) More...
 
const scalarFieldmagSf () const
 Face area magnitudes. More...
 
const vectorFieldCf () const
 Face centres. More...
 
virtual void clear ()
 Clear all storage. More...
 
virtual void addZones (const UList< surfZone > &, const bool cullEmpty=false)
 Add surface zones. More...
 
virtual void addZones (const labelUList &sizes, const UList< word > &names, const bool cullEmpty=false)
 Add surface zones. More...
 
virtual void addZones (const labelUList &sizes, const bool cullEmpty=false)
 Add surface zones. More...
 
bool addZonesToFaces ()
 Propagate zone information on face regions. More...
 
virtual void removeZones ()
 Remove surface zones. More...
 
virtual void movePoints (const pointField &newPoints)
 Move points. More...
 
virtual void scalePoints (const scalar scaleFactor)
 Scale points. A non-positive factor is ignored. More...
 
virtual void cleanup (const bool verbose)
 Remove invalid faces. More...
 
virtual bool stitchFaces (const scalar tol=SMALL, const bool verbose=false)
 
virtual bool checkFaces (const bool verbose=false)
 
virtual label nTriangles () const
 Count number of triangles. More...
 
virtual label nTriangles (List< label > &faceMap) const
 Count number of triangles, returning a face map of original ids. More...
 
virtual label triangulate ()
 Triangulate in-place, returning the number of triangles added. More...
 
virtual label triangulate (List< label > &faceMap)
 Triangulate in-place, returning the number of triangles added. More...
 
template<class BoolListType >
MeshedSurface subsetMesh (const BoolListType &include, labelList &pointMap, labelList &faceMap) const
 Return new surface. More...
 
MeshedSurface subsetMesh (const bitSet &include) const
 Return new surface. More...
 
MeshedSurface subsetMesh (const labelHashSet &include) const
 Return new surface. More...
 
void swap (MeshedSurface< Face > &surf)
 Swap contents. More...
 
void transfer (pointField &pointLst, List< Face > &faceLst)
 Transfer the components. More...
 
void transfer (MeshedSurface< Face > &surf)
 Transfer the contents of the argument and annul the argument. More...
 
void transfer (UnsortedMeshedSurface< Face > &surf)
 Transfer the contents of the argument and annul the argument. More...
 
autoPtr< MeshedSurface< Face > > releaseGeom ()
 Release (clear) geometry and return for reuse. More...
 
void swapFaces (List< Face > &faces)
 Swap the stored faces. More...
 
void swapPoints (pointField &points)
 Swap the stored points. More...
 
void swapZones (surfZoneList &zones)
 Swap the stored zones. More...
 
bool read (const fileName &name, const word &ext)
 Read from file. Chooses reader based on explicit extension. More...
 
virtual bool read (const fileName &name)
 Read from file. Chooses reader based on detected extension. More...
 
void writeStats (Ostream &os) const
 
virtual void write (const fileName &name, const dictionary &options=dictionary::null) const
 Generic write routine. Chooses writer based on extension. More...
 
void write (const Time &t, const word &surfName=word::null) const
 Write to database. More...
 
void operator= (const MeshedSurface< Face > &surf)
 Copy assignment. More...
 
void operator= (MeshedSurface< Face > &&surf)
 Move assignment. More...
 
 operator MeshedSurfaceProxy< Face > () const
 Conversion operator to MeshedSurfaceProxy. More...
 
template<class Face>
 MeshedSurface (const MeshedSurface< Face > &surf)
 
template<class Face>
 MeshedSurface (MeshedSurface< Face > &&surf)
 
template<class BoolListType >
Foam::MeshedSurface< Face > subsetMesh (const BoolListType &include, labelList &pointMap, labelList &faceMap) const
 
template<>
bool addZonesToFaces ()
 Specialization for labelledTri. More...
 
template<>
bool addZonesToFaces ()
 

Static Public Member Functions

static void setZoneMap (const surfZoneList &, labelList &zoneIds)
 Set new zoneIds list based on the surfZoneList information. More...
 
- Static Public Member Functions inherited from MeshedSurface< Face >
static bool canRead (const fileName &name, bool verbose=false)
 Can we read this file format? More...
 
static bool canReadType (const word &ext, bool verbose=false)
 Can we read this file format? More...
 
static bool canWriteType (const word &ext, bool verbose=false)
 Can we write this file format? More...
 
static wordHashSet readTypes ()
 Known readable file-types. More...
 
static wordHashSet writeTypes ()
 Known writable file-types. More...
 
static autoPtr< MeshedSurfaceNew (const fileName &name, const word &ext)
 Select constructed from filename (explicit extension) More...
 
static autoPtr< MeshedSurfaceNew (const fileName &name)
 Select constructed from filename (implicit extension) More...
 
static void write (const fileName &name, const MeshedSurface< Face > &surf, const dictionary &options=dictionary::null)
 Write to file, selecting writer based on its extension. More...
 
static void write (const fileName &name, const word &ext, const MeshedSurface< Face > &surf, const dictionary &options=dictionary::null)
 Write to file, selecting writer based on the given extension. More...
 

Protected Member Functions

template<class Type >
bool sampleType (const objectRegistry &store, const word &fieldName, const word &sampleScheme) const
 Sample the volume field onto surface,. More...
 
template<class Type >
tmp< Field< Type > > sampleOnFaces (const interpolation< Type > &sampler) const
 Sample field on surface faces. More...
 
template<class Type >
tmp< Field< Type > > sampleOnPoints (const interpolation< Type > &interpolator) const
 Sample field on surface points. More...
 
- Protected Member Functions inherited from MeshedSurface< Face >
void transcribe (MeshedSurface< face > &surf)
 Transfer points/zones from 'face' to other other shapes. More...
 
void checkZones ()
 Basic sanity check on zones. More...
 
pointFieldstoredPoints ()
 Non-const access to global points. More...
 
List< Face > & storedFaces ()
 Non-const access to the faces. More...
 
surfZoneListstoredZones ()
 Non-const access to the zones. More...
 
void sortFacesAndStore (DynamicList< Face > &unsortedFaces, DynamicList< label > &zoneIds, const bool sorted)
 Sort faces by zones and store sorted faces. More...
 
virtual void remapFaces (const labelUList &faceMap)
 Set new zones from faceMap. More...
 
template<>
void transcribe (MeshedSurface< face > &surf)
 
template<>
void transcribe (MeshedSurface< face > &surf)
 
template<>
void transcribe (MeshedSurface< face > &surf)
 

Detailed Description

The basis for sampling from triSurfaceMesh. It samples on the points/triangles of the triSurface.

- it either samples cells or (non-coupled) boundary faces

  • 6 different modes:
    • source=cells, interpolate=false: finds per triangle centre the nearest cell centre and uses its value
    • source=cells, interpolate=true finds per triangle centre the nearest cell centre. Per surface point checks if this nearest cell is the one containing point; otherwise projects the point onto the nearest point on the boundary of the cell (to make sure interpolateCellPoint gets a valid location)
    • source=insideCells, interpolate=false: finds per triangle centre the cell containing it and uses its value. Trims triangles outside mesh.
    • source=insideCells, interpolate=true Per surface point interpolate cell containing it.
    • source=boundaryFaces, interpolate=false: finds per triangle centre the nearest point on the boundary (uncoupled faces only) and uses the value (or 0 if the nearest is on an empty boundary)
    • source=boundaryFaces, interpolate=true: finds per triangle centre the nearest point on the boundary (uncoupled faces only). Per surface point projects the point onto this boundary face (to make sure interpolateCellPoint gets a valid location)
  • since it finds a nearest per triangle each triangle is guaranteed to be on one processor only. So after stitching (by sampledSurfaces) the original surface should be complete.
Source files

Definition at line 91 of file discreteSurface.H.

Member Enumeration Documentation

◆ samplingSource

Types of communications.

Enumerator
cells 
insideCells 
boundaryFaces 

Definition at line 97 of file discreteSurface.H.

Constructor & Destructor Documentation

◆ discreteSurface() [1/3]

discreteSurface ( const polyMesh mesh,
const word surfaceName,
const samplingSource  sampleSource,
const bool  allowInterpolate = true 
)

Construct from components.

Definition at line 628 of file discreteSurface.C.

◆ discreteSurface() [2/3]

discreteSurface ( const polyMesh mesh,
const dictionary dict,
const bool  allowInterpolate = true 
)

Construct from dictionary.

Definition at line 663 of file discreteSurface.C.

◆ discreteSurface() [3/3]

discreteSurface ( const word name,
const polyMesh mesh,
const triSurface surface,
const word sampleSourceName,
const bool  allowInterpolate = true 
)

Construct from triSurface.

Definition at line 701 of file discreteSurface.C.

◆ ~discreteSurface()

~discreteSurface ( )
virtual

Destructor.

Definition at line 739 of file discreteSurface.C.

Member Function Documentation

◆ sampleType() [1/3]

bool sampleType ( const objectRegistry store,
const word fieldName,
const word sampleScheme 
) const
protected

Sample the volume field onto surface,.

store it (temporarily) onto the given registry

Definition at line 35 of file discreteSurfaceTemplates.C.

References objectRegistry::getObjectPtr(), mesh, Foam::New(), regIOobject::store(), objectRegistry::time(), Time::timeName(), and Foam::Zero.

Here is the call graph for this function:

◆ sampleOnFaces() [1/2]

tmp<Field<Type> > sampleOnFaces ( const interpolation< Type > &  sampler) const
protected

Sample field on surface faces.

◆ sampleOnPoints() [1/2]

tmp<Field<Type> > sampleOnPoints ( const interpolation< Type > &  interpolator) const
protected

Sample field on surface points.

◆ TypeName()

TypeName ( "discreteSurface"  )

Runtime type information.

◆ setZoneMap()

void setZoneMap ( const surfZoneList zoneLst,
labelList zoneIds 
)
static

Set new zoneIds list based on the surfZoneList information.

Definition at line 81 of file discreteSurface.C.

References forAll, List< T >::setSize(), surfZone::size(), and surfZone::start().

Here is the call graph for this function:

◆ mesh()

const polyMesh& mesh ( ) const
inline

Access to the underlying mesh.

Definition at line 241 of file discreteSurface.H.

◆ interpolate() [1/2]

bool interpolate ( ) const

Interpolation requested for surface.

Definition at line 745 of file discreteSurface.C.

◆ interpolate() [2/2]

bool interpolate ( bool  b)

Change interpolation request for surface.

Return false if the value did not change. Use with caution.

Definition at line 751 of file discreteSurface.C.

References Foam::constant::physicoChemical::b.

◆ needsUpdate()

bool needsUpdate ( ) const
virtual

Does the surface need an update?

Reimplemented in sampledDiscreteSurface.

Definition at line 771 of file discreteSurface.C.

◆ expire()

bool expire ( )
virtual

Mark the surface as needing an update.

May also free up unneeded data. Return false if surface was already marked as expired.

Reimplemented in sampledDiscreteSurface.

Definition at line 777 of file discreteSurface.C.

References clear().

Here is the call graph for this function:

◆ update() [1/2]

bool update ( )
virtual

Update the surface as required.

Do nothing (and return false) if no update was needed

Reimplemented in sampledDiscreteSurface.

Definition at line 798 of file discreteSurface.C.

References polyMesh::bounds(), Foam::constant::electromagnetic::e, polyMesh::FACE_PLANES, VectorSpace< Form, Cmpt, Ncmpts >::max, boundBox::max(), Foam::max(), mesh, VectorSpace< Form, Cmpt, Ncmpts >::min, boundBox::min(), Foam::min(), and update().

Here is the call graph for this function:

◆ update() [2/2]

bool update ( const treeBoundBox bb)

Update the surface using a bound box to limit the searching.

For direct use, i.e. not through sample. Do nothing (and return false) if no update was needed

Definition at line 829 of file discreteSurface.C.

References polyMesh::FACE_PLANES, mesh, and update().

Here is the call graph for this function:

◆ zoneIds()

virtual const labelList& zoneIds ( ) const
inlinevirtual

Per-face zone/region information.

Reimplemented in sampledDiscreteSurface.

Definition at line 274 of file discreteSurface.H.

Referenced by sampledDiscreteSurface::zoneIds().

Here is the caller graph for this function:

◆ hasFaceIds()

virtual bool hasFaceIds ( ) const
inlinevirtual

If element ids/order of the original surface are kept.

Reimplemented in sampledDiscreteSurface.

Definition at line 280 of file discreteSurface.H.

Referenced by sampledDiscreteSurface::hasFaceIds().

Here is the caller graph for this function:

◆ originalIds()

virtual const labelList& originalIds ( ) const
inlinevirtual

List of element ids/order of the original surface,.

when keepIds is active.

Reimplemented in sampledDiscreteSurface.

Definition at line 287 of file discreteSurface.H.

◆ onBoundary()

bool onBoundary ( ) const
inline

Sampling boundary values instead of cell values.

Definition at line 293 of file discreteSurface.H.

References discreteSurface::boundaryFaces.

◆ sampleElements()

const labelList& sampleElements ( ) const
inline

From local surface face to mesh cell/face.

Definition at line 299 of file discreteSurface.H.

◆ samplePoints()

const pointField& samplePoints ( ) const
inline

Local points to sample per point.

Definition at line 305 of file discreteSurface.H.

◆ sampleAndStore()

bool sampleAndStore ( const objectRegistry store,
const word fieldName,
const word sampleScheme 
) const
virtual

Sample the volume field onto surface,.

store it (temporarily) onto the given registry

Definition at line 844 of file discreteSurface.C.

◆ sampleType() [2/3]

tmp<Field<Type> > sampleType ( const word fieldName,
const word sampleScheme 
) const

Sample field on surface. The tmp field is 'valid' on success.

◆ print()

void print ( Ostream os) const
virtual

Write information.

Reimplemented in sampledDiscreteSurface.

Definition at line 861 of file discreteSurface.C.

References points.

◆ sampleType() [3/3]

Foam::tmp<Foam::Field<Type> > sampleType ( const word fieldName,
const word sampleScheme 
) const

Definition at line 119 of file discreteSurfaceTemplates.C.

References mesh, and Foam::New().

Here is the call graph for this function:

◆ sampleOnFaces() [2/2]

Foam::tmp<Foam::Field<Type> > sampleOnFaces ( const interpolation< Type > &  sampler) const

Definition at line 141 of file discreteSurfaceTemplates.C.

References forAll, interpolation< Type >::interpolate(), mesh, Foam::New(), points, interpolation< Type >::psi(), polyBoundaryMesh::start(), Foam::HashTableOps::values(), and Foam::Zero.

Here is the call graph for this function:

◆ sampleOnPoints() [2/2]

Foam::tmp<Foam::Field<Type> > sampleOnPoints ( const interpolation< Type > &  interpolator) const

Definition at line 210 of file discreteSurfaceTemplates.C.

References forAll, interpolation< Type >::interpolate(), mesh, Foam::New(), and Foam::HashTableOps::values().

Here is the call graph for this function:

The documentation for this class was generated from the following files: