OpenFOAM logo
The Open Source CFD Toolbox
  Source Guide OpenCFD Solutions Contact OpenFOAM

distributedTriSurfaceMesh Class Reference

IOoject and searching on distributed triSurface. All processor hold (possibly overlapping) part of the overall surface. All queries are distributed to the processor that can answer it and the result sent back. More...

Inheritance diagram for distributedTriSurfaceMesh:
Collaboration diagram for distributedTriSurfaceMesh:

List of all members.


Public Types

enum  distributionType { FOLLOW = 0, INDEPENDENT = 1, FROZEN = 2 }

Public Member Functions

 TypeName ("distributedTriSurfaceMesh")
 Runtime type information.
 distributedTriSurfaceMesh (const IOobject &, const triSurface &, const dictionary &dict)
 Construct from triSurface.
 distributedTriSurfaceMesh (const IOobject &io)
 Construct read. Does findInstance to find io.local().
 distributedTriSurfaceMesh (const IOobject &io, const dictionary &dict)
 Construct from dictionary (used by searchableSurface).
virtual ~distributedTriSurfaceMesh ()
void clearOut ()
 Clear storage.
const globalIndexglobalTris () const
 Triangle indexing (demand driven).
virtual bool hasVolumeType () const
 Whether supports volume type below. I.e. whether is closed.
virtual label globalSize () const
 Range of global indices that can be returned.
virtual void findNearest (const pointField &sample, const scalarField &nearestDistSqr, List< pointIndexHit > &) const
virtual void findLine (const pointField &start, const pointField &end, List< pointIndexHit > &) const
 Find first intersection on segment from start to end.
virtual void findLineAny (const pointField &start, const pointField &end, List< pointIndexHit > &) const
 Return any intersection on segment from start to end.
virtual void findLineAll (const pointField &start, const pointField &end, List< List< pointIndexHit > > &) const
 Get all intersections in order from start to end.
virtual void getRegion (const List< pointIndexHit > &, labelList &region) const
 From a set of points and indices get the region.
virtual void getNormal (const List< pointIndexHit > &, vectorField &normal) const
 From a set of points and indices get the normal.
virtual void getVolumeType (const pointField &, List< volumeType > &) const
 Determine type (inside/outside/mixed) for point. unknown if.
virtual void distribute (const List< treeBoundBox > &, const bool keepNonLocal, autoPtr< mapDistribute > &faceMap, autoPtr< mapDistribute > &pointMap)
 Set bounds of surface. Bounds currently set as list of.
virtual void getField (const word &fieldName, const List< pointIndexHit > &, labelList &values) const
 Specific to triSurfaceMesh: from a set of hits (points and.
void writeStats (Ostream &os) const
 Print some stats. Parallel aware version of.
virtual bool writeObject (IOstream::streamFormat fmt, IOstream::versionNumber ver, IOstream::compressionType cmp) const
 Write using given format, version and compression.

Static Public Member Functions

static triSurface overlappingSurface (const triSurface &, const List< treeBoundBox > &, labelList &subPointMap, labelList &subFaceMap)
 Subset the part of surface that is overlapping bounds.

Static Public Attributes

static const NamedEnum
< distributionType, 3 > 
distributionTypeNames_

Detailed Description

IOoject and searching on distributed triSurface. All processor hold (possibly overlapping) part of the overall surface. All queries are distributed to the processor that can answer it and the result sent back.

Can work in three modes:

  • follow : makes sure each processor has all the triangles inside the externally provided bounding box (usually the mesh bounding box). Guarantees minimum amount of communication since mesh-local queries should be answerable without any comms.
  • independent : surface is decomposed according to the triangle centres so the decomposition might be radically different from the mesh decomposition. Guarantees best memory balance but at the expense of more communication.
  • frozen : no change

Source files

Definition at line 69 of file distributedTriSurfaceMesh.H.


Member Enumeration Documentation

Enumerator:
FOLLOW 
INDEPENDENT 
FROZEN 

Definition at line 77 of file distributedTriSurfaceMesh.H.


Constructor & Destructor Documentation

distributedTriSurfaceMesh ( const IOobject io,
const triSurface s,
const dictionary dict 
)

Construct from triSurface.

Definition at line 1323 of file distributedTriSurfaceMesh.C.

distributedTriSurfaceMesh ( const IOobject io  ) 

Construct read. Does findInstance to find io.local().

Definition at line 1355 of file distributedTriSurfaceMesh.C.

References Foam::Info.

distributedTriSurfaceMesh ( const IOobject io,
const dictionary dict 
)

Construct from dictionary (used by searchableSurface).

Does read. Does findInstance to find io.local().

Definition at line 1410 of file distributedTriSurfaceMesh.C.

~distributedTriSurfaceMesh (  )  [virtual]

Definition at line 1470 of file distributedTriSurfaceMesh.C.


Member Function Documentation

TypeName ( "distributedTriSurfaceMesh"   ) 

Runtime type information.

void clearOut (  ) 

Clear storage.

Reimplemented from triSurfaceMesh.

Definition at line 1476 of file distributedTriSurfaceMesh.C.

Referenced by distributedTriSurfaceMesh::globalTris().

Here is the caller graph for this function:

const Foam::globalIndex & globalTris (  )  const

Triangle indexing (demand driven).

Definition at line 1485 of file distributedTriSurfaceMesh.C.

References autoPtr< T >::clear(), and distributedTriSurfaceMesh::clearOut().

Referenced by distributedTriSurfaceMesh::hasVolumeType().

Here is the call graph for this function:

Here is the caller graph for this function:

virtual bool hasVolumeType (  )  const [inline, virtual]

Whether supports volume type below. I.e. whether is closed.

Not supported.

Reimplemented from triSurfaceMesh.

Definition at line 355 of file distributedTriSurfaceMesh.H.

References distributedTriSurfaceMesh::globalTris(), and globalIndex::size().

Here is the call graph for this function:

virtual label globalSize (  )  const [inline, virtual]

Range of global indices that can be returned.

Reimplemented from searchableSurface.

Definition at line 361 of file distributedTriSurfaceMesh.H.

void findNearest ( const pointField sample,
const scalarField nearestDistSqr,
List< pointIndexHit > &  info 
) const [virtual]

Reimplemented from triSurfaceMesh.

Definition at line 1496 of file distributedTriSurfaceMesh.C.

References autoPtr< T >::reset(), and List< labelledTri >::size().

Here is the call graph for this function:

void findLine ( const pointField start,
const pointField end,
List< pointIndexHit > &   
) const [virtual]

Find first intersection on segment from start to end.

Note: searchableSurfacesQueries expects no intersection to be found if start==end. Is problem?

Reimplemented from triSurfaceMesh.

Definition at line 1687 of file distributedTriSurfaceMesh.C.

void findLineAny ( const pointField start,
const pointField end,
List< pointIndexHit > &   
) const [virtual]

Return any intersection on segment from start to end.

Reimplemented from triSurfaceMesh.

Definition at line 1704 of file distributedTriSurfaceMesh.C.

void findLineAll ( const pointField start,
const pointField end,
List< List< pointIndexHit > > &  info 
) const [virtual]

Get all intersections in order from start to end.

Reimplemented from triSurfaceMesh.

Definition at line 1721 of file distributedTriSurfaceMesh.C.

void getRegion ( const List< pointIndexHit > &  info,
labelList region 
) const [virtual]

From a set of points and indices get the region.

Reimplemented from triSurfaceMesh.

Definition at line 1835 of file distributedTriSurfaceMesh.C.

void getNormal ( const List< pointIndexHit > &  info,
vectorField normal 
) const [virtual]

From a set of points and indices get the normal.

Reimplemented from triSurfaceMesh.

Definition at line 1909 of file distributedTriSurfaceMesh.C.

void getVolumeType ( const pointField points,
List< volumeType > &  volType 
) const [virtual]

Determine type (inside/outside/mixed) for point. unknown if.

cannot be determined (e.g. non-manifold surface)

Reimplemented from triSurfaceMesh.

Definition at line 2055 of file distributedTriSurfaceMesh.C.

void distribute ( const List< treeBoundBox > &  bbs,
const bool  keepNonLocal,
autoPtr< mapDistribute > &  faceMap,
autoPtr< mapDistribute > &  pointMap 
) [virtual]

Set bounds of surface. Bounds currently set as list of.

bounding boxes. Will do redistribution of surface to locally have all triangles overlapping bounds. Larger bounds: more triangles (memory), more fully local tests (quick). keepNonLocal = true : keep triangles that do not overlap any processor bounds. Should really be split into a routine to determine decomposition and one that does actual distribution but determining decomposition with duplicate triangle merging requires same amoun as work as actual distribution.

Reimplemented from triSurfaceMesh.

Definition at line 2112 of file distributedTriSurfaceMesh.C.

void getField ( const word fieldName,
const List< pointIndexHit > &  info,
labelList values 
) const [virtual]

Specific to triSurfaceMesh: from a set of hits (points and.

indices) get the specified field. Misses do not get set.

Reimplemented from triSurfaceMesh.

Definition at line 1986 of file distributedTriSurfaceMesh.C.

Foam::triSurface overlappingSurface ( const triSurface s,
const List< treeBoundBox > &  bbs,
labelList subPointMap,
labelList subFaceMap 
) [static]

Subset the part of surface that is overlapping bounds.

Definition at line 2071 of file distributedTriSurfaceMesh.C.

void writeStats ( Ostream os  )  const

Print some stats. Parallel aware version of.

triSurface::writeStats.

Reimplemented from triSurface.

Definition at line 2462 of file distributedTriSurfaceMesh.C.

bool writeObject ( IOstream::streamFormat  fmt,
IOstream::versionNumber  ver,
IOstream::compressionType  cmp 
) const [virtual]

Write using given format, version and compression.

Reimplemented from triSurfaceMesh.

Definition at line 2446 of file distributedTriSurfaceMesh.C.


Member Data Documentation


The documentation for this class was generated from the following files:
Copyright © 2000-2009 OpenCFD Ltd