38 #ifndef advancingFrontAMI_H 39 #define advancingFrontAMI_H 82 label calcOverlappingProcs
89 void distributePatches
99 void distributeAndMergePatches
173 bool isCandidate(
const label srcFacei,
const label tgtFacei)
const;
204 const label srcFacei,
206 const label srcFacePti = -1
areaNormalisationMode
Area normalisation mode.
label findTargetFace(const label srcFacei, const UList< label > &excludeFaces=UList< label >::null(), const label srcFacePti=-1) const
pointField extendedTgtPoints_
Extended patch points.
const faceAreaIntersect::triangulationMode triMode_
Face triangulation mode.
void writeIntersectionOBJ(const scalar area, const face &f1, const face &f2, const pointField &f1Points, const pointField &f2Points) const
Write triangle intersection to OBJ file.
autoPtr< mapDistribute > extendedTgtMapPtr_
Extended patch map.
A face is a list of labels corresponding to mesh vertices.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
const scalar maxDistance2_
Maximum squared distance.
virtual ~advancingFrontAMI()=default
Destructor.
static const Enum< areaNormalisationMode > areaNormalisationModeNames_
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
areaNormalisationMode areaNormalisationMode_
Area normalisation mode; default = project.
bool requireMatch() const noexcept
Return the requireMatch flag.
bool initialiseWalk(label &srcFacei, label &tgtFacei)
Initialise walk and return true if all ok.
TypeName("advancingFrontAMI")
Runtime type information.
void createExtendedTgtPatch()
Create a map that extends tgtPatch so that it covers srcPatch.
const scalar minCosAngle_
Minimum (cos of) angle. 1 for perfectly matching.
virtual void write(Ostream &os) const
Write.
const primitivePatch & tgtPatch() const
Return const access to the target patch.
A list of faces which address into the list of points.
Calculates a unique integer (label so might not have enough room - 2G max) for processor + local inde...
const wordList area
Standard area field types (scalar, vector, tensor, etc)
const labelList & srcNonOverlap() const
Labels of faces that are not overlapped by any target faces.
List< DynamicList< face > > tgtTris_
Storage for tgt-side triangle decomposition.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
labelList extendedTgtFaceIDs_
Extended patch face IDs.
bool isCandidate(const label srcFacei, const label tgtFacei) const
Is source/target a valid pair (i.e. not too far/different.
OBJstream os(runTime.globalPath()/outputName)
faceList extendedTgtFaces_
Extended patch faces.
List< DynamicList< face > > srcTris_
Storage for src-side triangle decomposition.
autoPtr< indexedOctree< treeType > > treePtr_
Octree used to find face seeds.
bool reverseTarget() const noexcept
Access to the reverseTarget flag.
void checkPatches() const
Check AMI patch coupling.
void appendNbrFaces(const label facei, const primitivePatch &patch, const DynamicList< label > &visitedFaces, DynamicList< label > &faceIDs) const
Add faces neighbouring facei to the ID list.
virtual void nonConformalCorrection()
Correction for non-conformal interpolations, e.g. for ACMI.
virtual bool calculate(const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const autoPtr< searchableSurface > &surfPtr=nullptr)
Update addressing, weights and (optional) centroids.
Class containing processor-to-processor mapping information.
virtual autoPtr< AMIInterpolation > clone() const
Construct and return a clone.
void triangulatePatch(const primitivePatch &patch, List< DynamicList< face >> &tris, List< scalar > &magSf) const
Helper function to decompose a patch.
Base class for Arbitrary Mesh Interface (AMI) methods.
Macro definitions for declaring ClassName(), NamespaceName(), etc.
Interpolation class dealing with transfer of data between two primitive patches with an arbitrary mes...
const std::string patch
OpenFOAM patch number as a std::string.
Standard boundBox with extra functionality for use in octree.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
scalar lowWeightCorrection() const
Threshold weight below which interpolation is deactivated.
labelList srcNonOverlap_
Labels of faces that are not overlapped by any target faces (should be empty for correct functioning ...
autoPtr< primitivePatch > extendedTgtPatchPtr_
Demand-driven extended target mesh (distributed parallel usage)
const primitivePatch & srcPatch() const
Return const access to the source patch.
uindirectPrimitivePatch pp(UIndirectList< face >(mesh.faces(), faceLabels), mesh.points())
advancingFrontAMI(const dictionary &dict, const bool reverseTarget)
Construct from components.