mappedPatchBase Class Reference

Determines a mapping between patch face centres and mesh cell or face centres and processors they're on. More...

Inheritance diagram for mappedPatchBase:
Collaboration diagram for mappedPatchBase:

Classes

class  maxProcEqOp
 
class  nearestEqOp
 

Public Types

enum  sampleMode {
  NEARESTCELL, NEARESTPATCHFACE, NEARESTPATCHFACEAMI, NEARESTPATCHPOINT,
  NEARESTFACE, NEARESTONLYCELL
}
 Mesh items to sample. More...
 
enum  offsetMode { UNIFORM, NONUNIFORM, NORMAL }
 How to project face centres. More...
 
typedef Tuple2< pointIndexHit, Tuple2< scalar, label > > nearInfo
 Helper class for finding nearest. More...
 

Public Member Functions

 TypeName ("mappedPatchBase")
 Runtime type information. More...
 
 mappedPatchBase (const polyPatch &)
 Construct from patch. More...
 
 mappedPatchBase (const polyPatch &pp, const word &sampleRegion, const sampleMode sampleMode, const word &samplePatch, const vectorField &offsets)
 Construct with offsetMode=non-uniform. More...
 
 mappedPatchBase (const polyPatch &pp, const word &sampleRegion, const sampleMode sampleMode, const word &samplePatch, const vector &offset)
 Construct from offsetMode=uniform. More...
 
 mappedPatchBase (const polyPatch &pp, const word &sampleRegion, const sampleMode sampleMode, const word &samplePatch, const scalar distance)
 Construct from offsetMode=normal and distance. More...
 
 mappedPatchBase (const polyPatch &, const dictionary &)
 Construct from dictionary. More...
 
 mappedPatchBase (const polyPatch &, const sampleMode, const dictionary &)
 Construct from dictionary and (collocated) sample mode. More...
 
 mappedPatchBase (const polyPatch &, const mappedPatchBase &)
 Construct as copy, resetting patch. More...
 
 mappedPatchBase (const polyPatch &, const mappedPatchBase &, const labelUList &mapAddressing)
 Construct as copy, resetting patch, map original data. More...
 
virtual ~mappedPatchBase ()
 Destructor. More...
 
void clearOut ()
 
const sampleModemode () const
 What to sample. More...
 
const wordsampleRegion () const
 Region to sample. More...
 
const wordsamplePatch () const
 Patch (only if NEARESTPATCHFACE) More...
 
const wordcoupleGroup () const
 PatchGroup (only if NEARESTPATCHFACE) More...
 
label sampleSize () const
 Return size of mapped mesh/patch/boundary. More...
 
const vectoroffset () const
 Offset vector (from patch faces to destination mesh objects) More...
 
const vectorFieldoffsets () const
 Offset vector (from patch faces to destination mesh objects) More...
 
bool sameRegion () const
 Cached sampleRegion != mesh.name() More...
 
const distributionMapmap () const
 Return reference to the parallel distribution map. More...
 
const AMIInterpolationAMI (const bool forceUpdate=false) const
 Return reference to the AMI interpolator. More...
 
const autoPtr< Foam::searchableSurface > & surfPtr () const
 Return a pointer to the AMI projection surface. More...
 
const polyMeshsampleMesh () const
 Get the region mesh. More...
 
const polyPatchsamplePolyPatch () const
 Get the patch on the region. More...
 
tmp< pointFieldsamplePoints () const
 Get the sample points. More...
 
template<class Type >
void distribute (List< Type > &lst) const
 Wrapper around map/interpolate data distribution. More...
 
template<class Type , class CombineOp >
void distribute (List< Type > &lst, const CombineOp &cop) const
 Wrapper around map/interpolate data distribution with operation. More...
 
template<class Type >
void reverseDistribute (List< Type > &lst) const
 Wrapper around map/interpolate data distribution. More...
 
template<class Type , class CombineOp >
void reverseDistribute (List< Type > &lst, const CombineOp &cop) const
 Wrapper around map/interpolate data distribution with operation. More...
 
virtual void write (Ostream &) const
 Write as a dictionary. More...
 

Static Public Member Functions

static pointIndexHit facePoint (const polyMesh &, const label facei, const polyMesh::cellDecomposition)
 Get a point on the face given a face decomposition method: More...
 

Static Public Attributes

static const NamedEnum< sampleMode, 6 > sampleModeNames_
 
static const NamedEnum< offsetMode, 3 > offsetModeNames_
 

Protected Member Functions

tmp< pointFieldfacePoints (const polyPatch &) const
 Get the points from face-centre-decomposition face centres. More...
 
void collectSamples (const pointField &facePoints, pointField &, labelList &patchFaceProcs, labelList &patchFaces, pointField &patchFc) const
 Collect single list of samples and originating processor+face. More...
 
void findSamples (const sampleMode mode, const pointField &, labelList &sampleProcs, labelList &sampleIndices, pointField &sampleLocations) const
 Find cells/faces containing samples. More...
 
tmp< pointFieldsamplePoints (const pointField &) const
 Get the sample points given the face points. More...
 
void calcMapping () const
 Calculate mapping. More...
 
void calcAMI () const
 Calculate AMI interpolator. More...
 

Static Protected Member Functions

static tmp< pointFieldreadListOrField (const word &keyword, const dictionary &dict, const label size)
 Helper to read field or non-uniform list from dictionary. More...
 

Protected Attributes

const polyPatchpatch_
 Patch to sample. More...
 
word sampleRegion_
 Region to sample. More...
 
const sampleMode mode_
 What to sample. More...
 
word samplePatch_
 Patch (if in sampleMode NEARESTPATCH*) More...
 
const coupleGroupIdentifier coupleGroup_
 PatchGroup (if in sampleMode NEARESTPATCH*) More...
 
offsetMode offsetMode_
 How to obtain samples. More...
 
vector offset_
 Offset vector (uniform) More...
 
vectorField offsets_
 Offset vector (nonuniform) More...
 
scalar distance_
 Offset distance (normal) More...
 
bool sameRegion_
 Same region. More...
 
autoPtr< distributionMapmapPtr_
 Communication schedule: More...
 
autoPtr< AMIInterpolationAMIPtr_
 Pointer to AMI interpolator. More...
 
const bool AMIReverse_
 Flag to indicate that slave patch should be reversed for AMI. More...
 
autoPtr< searchableSurfacesurfPtr_
 Pointer to projection surface employed by AMI interpolator. More...
 
dictionary surfDict_
 Dictionary storing projection surface description. More...
 

Detailed Description

Determines a mapping between patch face centres and mesh cell or face centres and processors they're on.

If constructed from dictionary:

    // Region to sample (default is region0)
    sampleRegion region0;

    // What to sample:
    // - nearestCell         : sample cell containing point
    // - nearestOnlyCell     : nearest sample cell (even if not containing
    //                         point)
    // - nearestPatchFace    : nearest face on selected patch
    // - nearestPatchFaceAMI : nearest face on selected patch
                               - patches need not conform
                               - uses AMI interpolation
    // - nearestFace         : nearest boundary face on any patch
    // - nearestPatchPoint   : nearest patch point (for coupled points
    //                         this might be any of the points so you have
    //                         to guarantee the point data is synchronised
    //                         beforehand)
    sampleMode nearestCell;

    // If sampleMode is nearestPatchFace : patch to find faces of
    samplePatch movingWall;

    // If sampleMode is nearestPatchFace : specify patchgroup to find
    // samplePatch and sampleRegion (if not provided)
    coupleGroup baffleGroup;

    // How to supply offset (w.r.t. my patch face centres):
    // - uniform : single offset vector
    // - nonuniform : per-face offset vector
    // - normal : using supplied distance and face normal
    offsetMode uniform;

    // According to offsetMode (see above) supply one of
    // offset, offsets or distance
    offset  (1 0 0);

Note: if offsetMode is normal it uses outwards pointing normals. So supply a negative distance if sampling inside the domain.

Note: Storage is not optimal. It temporary collects all (patch)face centres on all processors to keep the addressing calculation simple.

Source files

Definition at line 102 of file mappedPatchBase.H.

Member Typedef Documentation

◆ nearInfo

typedef Tuple2<pointIndexHit, Tuple2<scalar, label> > nearInfo

Helper class for finding nearest.

Nearest:

  • point+local index
  • sqr(distance)
  • processor

Definition at line 138 of file mappedPatchBase.H.

Member Enumeration Documentation

◆ sampleMode

enum sampleMode

Mesh items to sample.

Enumerator
NEARESTCELL 
NEARESTPATCHFACE 
NEARESTPATCHFACEAMI 
NEARESTPATCHPOINT 
NEARESTFACE 
NEARESTONLYCELL 

Definition at line 110 of file mappedPatchBase.H.

◆ offsetMode

enum offsetMode

How to project face centres.

Enumerator
UNIFORM 
NONUNIFORM 
NORMAL 

Definition at line 121 of file mappedPatchBase.H.

Constructor & Destructor Documentation

◆ mappedPatchBase() [1/8]

mappedPatchBase ( const polyPatch pp)

Construct from patch.

Definition at line 937 of file mappedPatchBase.C.

Referenced by mappedPatchBase::mappedPatchBase(), and mappedPatchBase::readListOrField().

Here is the caller graph for this function:

◆ mappedPatchBase() [2/8]

mappedPatchBase ( const polyPatch pp,
const word sampleRegion,
const sampleMode  sampleMode,
const word samplePatch,
const vectorField offsets 
)

Construct with offsetMode=non-uniform.

Definition at line 960 of file mappedPatchBase.C.

References mappedPatchBase::mappedPatchBase().

Here is the call graph for this function:

◆ mappedPatchBase() [3/8]

mappedPatchBase ( const polyPatch pp,
const word sampleRegion,
const sampleMode  sampleMode,
const word samplePatch,
const vector offset 
)

Construct from offsetMode=uniform.

Definition at line 987 of file mappedPatchBase.C.

References mappedPatchBase::mappedPatchBase().

Here is the call graph for this function:

◆ mappedPatchBase() [4/8]

mappedPatchBase ( const polyPatch pp,
const word sampleRegion,
const sampleMode  sampleMode,
const word samplePatch,
const scalar  distance 
)

Construct from offsetMode=normal and distance.

Definition at line 1014 of file mappedPatchBase.C.

References mappedPatchBase::mappedPatchBase().

Here is the call graph for this function:

◆ mappedPatchBase() [5/8]

mappedPatchBase ( const polyPatch pp,
const dictionary dict 
)

Construct from dictionary.

Definition at line 1041 of file mappedPatchBase.C.

References Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, dictionary::found(), dictionary::lookup(), mappedPatchBase::mappedPatchBase(), and NamedEnum< Enum, nEnum >::words().

Here is the call graph for this function:

◆ mappedPatchBase() [6/8]

mappedPatchBase ( const polyPatch pp,
const sampleMode  mode,
const dictionary dict 
)

Construct from dictionary and (collocated) sample mode.

(only for nearestPatchFace, nearestPatchFaceAMI, nearestPatchPoint) Assumes zero offset.

Definition at line 1118 of file mappedPatchBase.C.

References Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, and mappedPatchBase::mappedPatchBase().

Here is the call graph for this function:

◆ mappedPatchBase() [7/8]

mappedPatchBase ( const polyPatch pp,
const mappedPatchBase mpb 
)

Construct as copy, resetting patch.

Definition at line 1163 of file mappedPatchBase.C.

References mappedPatchBase::mappedPatchBase().

Here is the call graph for this function:

◆ mappedPatchBase() [8/8]

mappedPatchBase ( const polyPatch pp,
const mappedPatchBase mpb,
const labelUList mapAddressing 
)

Construct as copy, resetting patch, map original data.

Definition at line 1187 of file mappedPatchBase.C.

◆ ~mappedPatchBase()

~mappedPatchBase ( )
virtual

Destructor.

Definition at line 1218 of file mappedPatchBase.C.

Member Function Documentation

◆ facePoints()

Foam::tmp< Foam::pointField > facePoints ( const polyPatch pp) const
protected

Get the points from face-centre-decomposition face centres.

and project them onto the face-diagonal-decomposition triangles.

Definition at line 91 of file mappedPatchBase.C.

References polyPatch::boundaryMesh(), mappedPatchBase::collectSamples(), polyMesh::FACE_DIAG_TRIS, Foam::facePoint(), forAll, mesh, polyBoundaryMesh::mesh(), tmp< T >::ref(), polyPatch::start(), and polyMesh::tetBasePtIs().

Referenced by NamedEnum< compressibleField, 8 >::names().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ collectSamples()

void collectSamples ( const pointField facePoints,
pointField samples,
labelList patchFaceProcs,
labelList patchFaces,
pointField patchFc 
) const
protected

Collect single list of samples and originating processor+face.

Definition at line 119 of file mappedPatchBase.C.

References mappedPatchBase::findSamples(), forAll, Pstream::gatherList(), Foam::identity(), UPstream::myProcNo(), UPstream::nProcs(), Pstream::scatterList(), List< T >::setSize(), and List< T >::size().

Referenced by mappedPatchBase::facePoints().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ findSamples()

◆ samplePoints() [1/2]

Foam::tmp< Foam::pointField > samplePoints ( const pointField fc) const
protected

Get the sample points given the face points.

Definition at line 1263 of file mappedPatchBase.C.

References fld(), Foam::mag(), n, and tmp< T >::ref().

Here is the call graph for this function:

◆ calcMapping()

◆ calcAMI()

void calcAMI ( ) const
protected

Calculate AMI interpolator.

Definition at line 809 of file mappedPatchBase.C.

References Foam::exit(), Foam::FatalError, FatalErrorInFunction, PrimitivePatch< FaceList, PointField >::localFaces(), PrimitivePatch< FaceList, PointField >::localPoints(), mappedPatchBase::readListOrField(), faceAreaIntersect::tmMesh, and Foam::meshTools::writeOBJ().

Referenced by mappedPatchBase::AMI().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ readListOrField()

Foam::tmp< Foam::pointField > readListOrField ( const word keyword,
const dictionary dict,
const label  size 
)
staticprotected

Helper to read field or non-uniform list from dictionary.

Definition at line 868 of file mappedPatchBase.C.

References Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, fld(), IOWarningInFunction, token::isWord(), dictionary::lookup(), mappedPatchBase::mappedPatchBase(), Istream::putBack(), tmp< T >::ref(), List< T >::setSize(), List< T >::size(), IOstream::version(), and token::wordToken().

Referenced by mappedPatchBase::calcAMI().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TypeName()

TypeName ( "mappedPatchBase"  )

Runtime type information.

◆ clearOut()

◆ mode()

◆ sampleRegion()

◆ samplePatch()

◆ coupleGroup()

const Foam::word & coupleGroup ( ) const
inline

PatchGroup (only if NEARESTPATCHFACE)

Definition at line 85 of file mappedPatchBaseI.H.

References mappedPatchBase::coupleGroup_, and coupleGroupIdentifier::name().

Here is the call graph for this function:

◆ sampleSize()

◆ offset()

const Foam::vector & offset ( ) const
inline

Offset vector (from patch faces to destination mesh objects)

Definition at line 126 of file mappedPatchBaseI.H.

References mappedPatchBase::offset_.

◆ offsets()

const Foam::vectorField & offsets ( ) const
inline

Offset vector (from patch faces to destination mesh objects)

Definition at line 132 of file mappedPatchBaseI.H.

References mappedPatchBase::offsets_.

◆ sameRegion()

bool sameRegion ( ) const
inline

Cached sampleRegion != mesh.name()

Definition at line 138 of file mappedPatchBaseI.H.

References mappedPatchBase::sameRegion_.

Referenced by thermalBaffle1DFvPatchScalarField< solidType >::thermalBaffle1DFvPatchScalarField().

Here is the caller graph for this function:

◆ map()

const Foam::distributionMap & map ( ) const
inline

Return reference to the parallel distribution map.

Definition at line 144 of file mappedPatchBaseI.H.

References mappedPatchBase::AMI(), mappedPatchBase::calcMapping(), and mappedPatchBase::mapPtr_.

Referenced by mappedPatchBase::distribute(), and mappedPatchBase::reverseDistribute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AMI()

const Foam::AMIInterpolation & AMI ( const bool  forceUpdate = false) const
inline

Return reference to the AMI interpolator.

Definition at line 156 of file mappedPatchBaseI.H.

References mappedPatchBase::AMIPtr_, and mappedPatchBase::calcAMI().

Referenced by mappedPatchBase::distribute(), mappedPatchBase::map(), and mappedPatchBase::reverseDistribute().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ surfPtr()

const Foam::autoPtr< Foam::searchableSurface > & surfPtr ( ) const

Return a pointer to the AMI projection surface.

Definition at line 777 of file mappedPatchBase.C.

References polyMesh::boundaryMesh(), TimePaths::constant(), searchableSurface::geometryDir(), mesh, polyBoundaryMesh::mesh(), IOobject::MUST_READ, searchableSurface::New(), IOobject::NO_WRITE, and objectRegistry::time().

Here is the call graph for this function:

◆ sampleMesh()

◆ samplePolyPatch()

◆ samplePoints() [2/2]

Foam::tmp< Foam::pointField > samplePoints ( ) const

Get the sample points.

Definition at line 1297 of file mappedPatchBase.C.

References mappedPatchBase::facePoint().

Referenced by mappedPatchBase::samplePolyPatch().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ facePoint()

Foam::pointIndexHit facePoint ( const polyMesh mesh,
const label  facei,
const polyMesh::cellDecomposition  decompMode 
)
static

Get a point on the face given a face decomposition method:

face-centre-tet : face centre. Returns index of face. face-planes : face centre. Returns index of face. face-diagonal : intersection of ray from cellcentre to facecentre with any of the triangles. Returns index (0..size-2) of triangle.

Definition at line 1304 of file mappedPatchBase.C.

References Foam::abort(), polyMesh::CELL_TETS, primitiveMesh::cellCentres(), PointHit< Point >::distance(), f(), polyMesh::FACE_CENTRE_TRIS, polyMesh::FACE_DIAG_TRIS, polyMesh::FACE_PLANES, primitiveMesh::faceCentres(), polyMesh::faceOwner(), polyMesh::faces(), Foam::FatalError, FatalErrorInFunction, intersection::halfRay, PointHit< Point >::hit(), PointHit< Point >::hitPoint(), triangle< Point, PointRef >::intersection(), p, polyMesh::points(), List< T >::size(), and polyMesh::tetBasePtIs().

Referenced by mappedPatchBase::samplePoints().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ distribute() [1/2]

◆ distribute() [2/2]

void distribute ( List< Type > &  lst,
const CombineOp &  cop 
) const

Wrapper around map/interpolate data distribution with operation.

Definition at line 46 of file mappedPatchBaseTemplates.C.

References mappedPatchBase::AMI(), UPstream::defaultCommsType, distributionMapBase::distribute(), AMIInterpolation::interpolateToSource(), mappedPatchBase::map(), mappedPatchBase::mode_, mappedPatchBase::NEARESTPATCHFACEAMI, and Foam::Zero.

Here is the call graph for this function:

◆ reverseDistribute() [1/2]

void reverseDistribute ( List< Type > &  lst) const

Wrapper around map/interpolate data distribution.

Definition at line 84 of file mappedPatchBaseTemplates.C.

References mappedPatchBase::AMI(), AMIInterpolation::interpolateToTarget(), mappedPatchBase::map(), mappedPatchBase::mode_, mappedPatchBase::NEARESTPATCHFACEAMI, distributionMap::reverseDistribute(), and mappedPatchBase::sampleSize().

Referenced by regionModel::toPrimary().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ reverseDistribute() [2/2]

void reverseDistribute ( List< Type > &  lst,
const CombineOp &  cop 
) const

◆ write()

void write ( Ostream os) const
virtual

Write as a dictionary.

Reimplemented in mappedWallPolyPatch, mappedVariableThicknessWallPolyPatch, mappedPolyPatch, and mappedFieldFvPatchField< Type >.

Definition at line 1384 of file mappedPatchBase.C.

References Foam::writeEntry(), Foam::writeKeyword(), and VectorSpace< Vector< scalar >, scalar, 3 >::zero.

Referenced by mappedPolyPatch::write(), and mappedWallPolyPatch::write().

Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ sampleModeNames_

const Foam::NamedEnum< Foam::mappedPatchBase::sampleMode, 6 > sampleModeNames_
static

Definition at line 128 of file mappedPatchBase.H.

Referenced by NamedEnum< compressibleField, 8 >::names().

◆ offsetModeNames_

◆ patch_

const polyPatch& patch_
protected

Patch to sample.

Definition at line 188 of file mappedPatchBase.H.

Referenced by mappedPatchBase::samplePatch(), and mappedPatchBase::sampleRegion().

◆ sampleRegion_

word sampleRegion_
mutableprotected

Region to sample.

Definition at line 191 of file mappedPatchBase.H.

Referenced by mappedPatchBase::samplePatch(), and mappedPatchBase::sampleRegion().

◆ mode_

◆ samplePatch_

word samplePatch_
mutableprotected

Patch (if in sampleMode NEARESTPATCH*)

Definition at line 197 of file mappedPatchBase.H.

Referenced by mappedPatchBase::samplePatch(), and mappedPatchBase::sampleRegion().

◆ coupleGroup_

const coupleGroupIdentifier coupleGroup_
protected

PatchGroup (if in sampleMode NEARESTPATCH*)

Definition at line 200 of file mappedPatchBase.H.

Referenced by mappedPatchBase::coupleGroup(), mappedPatchBase::samplePatch(), and mappedPatchBase::sampleRegion().

◆ offsetMode_

offsetMode offsetMode_
protected

How to obtain samples.

Definition at line 203 of file mappedPatchBase.H.

◆ offset_

vector offset_
protected

Offset vector (uniform)

Definition at line 206 of file mappedPatchBase.H.

Referenced by mappedPatchBase::offset().

◆ offsets_

vectorField offsets_
protected

Offset vector (nonuniform)

Definition at line 209 of file mappedPatchBase.H.

Referenced by mappedPatchBase::offsets().

◆ distance_

scalar distance_
protected

Offset distance (normal)

Definition at line 212 of file mappedPatchBase.H.

◆ sameRegion_

bool sameRegion_
mutableprotected

Same region.

Definition at line 215 of file mappedPatchBase.H.

Referenced by mappedPatchBase::sameRegion().

◆ mapPtr_

autoPtr<distributionMap> mapPtr_
mutableprotected

Communication schedule:

  • Cells/faces to sample per processor
  • Patch faces to receive per processor
  • schedule

Definition at line 225 of file mappedPatchBase.H.

Referenced by mappedPatchBase::map().

◆ AMIPtr_

autoPtr<AMIInterpolation> AMIPtr_
mutableprotected

Pointer to AMI interpolator.

Definition at line 231 of file mappedPatchBase.H.

Referenced by mappedPatchBase::AMI().

◆ AMIReverse_

const bool AMIReverse_
protected

Flag to indicate that slave patch should be reversed for AMI.

Definition at line 234 of file mappedPatchBase.H.

◆ surfPtr_

autoPtr<searchableSurface> surfPtr_
mutableprotected

Pointer to projection surface employed by AMI interpolator.

Definition at line 237 of file mappedPatchBase.H.

◆ surfDict_

dictionary surfDict_
protected

Dictionary storing projection surface description.

Definition at line 240 of file mappedPatchBase.H.


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