Base class for Arbitrary Mesh Interface (AMI) methods. More...
Public Member Functions | |
TypeName ("AMIMethod") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, AMIMethod, components,(const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const faceAreaIntersect::triangulationMode &triMode, const bool reverseTarget, const bool requireMatch),(srcPatch, tgtPatch, triMode, reverseTarget, requireMatch)) | |
Declare runtime constructor selection table. More... | |
AMIMethod (const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const faceAreaIntersect::triangulationMode &triMode, const bool reverseTarget, const bool requireMatch) | |
Construct from components. More... | |
virtual | ~AMIMethod ()=default |
Destructor. More... | |
const labelList & | srcNonOverlap () const |
Labels of faces that are not overlapped by any target faces. More... | |
virtual bool | conformal () const |
Flag to indicate that interpolation patches are conformal. More... | |
const List< scalar > & | srcMagSf () const |
Return const access to source patch face areas. More... | |
List< scalar > & | srcMagSf () |
Return access to source patch face areas. More... | |
const List< scalar > & | tgtMagSf () const |
Return const access to target patch face areas. More... | |
List< scalar > & | tgtMagSf () |
Return access to target patch face areas. More... | |
virtual void | calculate (labelListList &srcAddress, scalarListList &srcWeights, labelListList &tgtAddress, scalarListList &tgtWeights, label srcFacei=-1, label tgtFacei=-1)=0 |
Update addressing and weights. More... | |
virtual void | setMagSf (const TargetPatch &tgtPatch, const mapDistribute &map, scalarList &srcMagSf, scalarList &tgtMagSf) const =0 |
Set the face areas for parallel runs. More... | |
virtual void | normaliseWeights (const bool verbose, AMIInterpolation< SourcePatch, TargetPatch > &inter)=0 |
Static Public Member Functions | |
static autoPtr< AMIMethod > | New (const word &methodName, const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const faceAreaIntersect::triangulationMode &triMode, const bool reverseTarget, const bool requireMatch) |
Selector. More... | |
Protected Types | |
typedef treeDataPrimitivePatch< TargetPatch > | treeType |
Local typedef to octree tree-type. More... | |
Protected Member Functions | |
void | checkPatches () const |
Check AMI patch coupling. More... | |
bool | initialise (labelListList &srcAddress, scalarListList &srcWeights, labelListList &tgtAddress, scalarListList &tgtWeights, label &srcFacei, label &tgtFacei) |
Initialise and return true if all ok. More... | |
void | writeIntersectionOBJ (const scalar area, const face &f1, const face &f2, const pointField &f1Points, const pointField &f2Points) const |
Write triangle intersection to OBJ file. More... | |
void | resetTree () |
Reset the octree for the target patch face search. More... | |
label | findTargetFace (const label srcFacei) const |
Find face on target patch that overlaps source face. More... | |
void | appendNbrFaces (const label facei, const TargetPatch &patch, const DynamicList< label > &visitedFaces, DynamicList< label > &faceIDs) const |
Add faces neighbouring facei to the ID list. More... | |
template<class PatchType > | |
void | triangulatePatch (const PatchType &patch, List< DynamicList< face >> &tris, List< scalar > &magSf) const |
Helper function to decompose a patch. More... | |
Protected Attributes | |
const SourcePatch & | srcPatch_ |
Reference to source patch. More... | |
const TargetPatch & | tgtPatch_ |
Reference to target patch. More... | |
const bool | reverseTarget_ |
const bool | requireMatch_ |
List< scalar > | srcMagSf_ |
Source face areas. More... | |
List< scalar > | tgtMagSf_ |
Target face areas. More... | |
labelList | srcNonOverlap_ |
autoPtr< indexedOctree< treeType > > | treePtr_ |
Octree used to find face seeds. More... | |
const faceAreaIntersect::triangulationMode | triMode_ |
Face triangulation mode. More... | |
Base class for Arbitrary Mesh Interface (AMI) methods.
Definition at line 60 of file AMIMethod.H.
|
protected |
Local typedef to octree tree-type.
Definition at line 77 of file AMIMethod.H.
AMIMethod | ( | const SourcePatch & | srcPatch, |
const TargetPatch & | tgtPatch, | ||
const faceAreaIntersect::triangulationMode & | triMode, | ||
const bool | reverseTarget, | ||
const bool | requireMatch | ||
) |
Construct from components.
Definition at line 367 of file AMIMethod.C.
|
virtualdefault |
Destructor.
|
protected |
Check AMI patch coupling.
Definition at line 37 of file AMIMethod.C.
References Foam::expressions::patchExpr::debug, Foam::endl(), Foam::nl, Foam::Pout, and WarningInFunction.
|
protected |
Initialise and return true if all ok.
Definition at line 75 of file AMIMethod.C.
References Foam::abort(), Foam::expressions::patchExpr::debug, Foam::endl(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::Pout, List< T >::setSize(), and WarningInFunction.
|
protected |
Write triangle intersection to OBJ file.
Definition at line 150 of file AMIMethod.C.
References Foam::fieldTypes::area, Foam::BitOps::count(), Foam::endl(), forAll, n, Foam::name(), Foam::nl, face::points(), Foam::Pout, and Foam::meshTools::writeOBJ().
|
protected |
Reset the octree for the target patch face search.
Definition at line 201 of file AMIMethod.C.
References boundBox::inflate().
|
protected |
Find face on target patch that overlaps source face.
Definition at line 233 of file AMIMethod.C.
References face::centre(), Foam::expressions::patchExpr::debug, Foam::endl(), PointIndexHit< Point >::hit(), PointIndexHit< Point >::hitPoint(), PointIndexHit< Point >::index(), and Foam::Pout.
|
protected |
Add faces neighbouring facei to the ID list.
Definition at line 264 of file AMIMethod.C.
References DynamicList< T, SizeMin >::append(), Foam::cos(), Foam::degToRad(), and Foam::foamVersion::patch.
|
protected |
Helper function to decompose a patch.
Definition at line 320 of file AMIMethod.C.
References f(), forAll, Foam::foamVersion::patch, points, and List< T >::setSize().
TypeName | ( | "AMIMethod< SourcePatch, TargetPatch >" | ) |
Runtime type information.
declareRunTimeSelectionTable | ( | autoPtr | , |
AMIMethod< SourcePatch, TargetPatch > | , | ||
components | , | ||
(const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const faceAreaIntersect::triangulationMode &triMode, const bool reverseTarget, const bool requireMatch) | , | ||
(srcPatch, tgtPatch, triMode, reverseTarget, requireMatch) | |||
) |
Declare runtime constructor selection table.
|
static |
Selector.
Definition at line 34 of file AMIMethodNew.C.
References DebugInfo, Foam::endl(), Foam::exit(), Foam::FatalError, and FatalErrorInLookup.
|
inline |
Labels of faces that are not overlapped by any target faces.
Note: this should be empty for correct functioning
Definition at line 62 of file AMIMethodI.H.
|
virtual |
Flag to indicate that interpolation patches are conformal.
Reimplemented in partialFaceAreaWeightAMI< SourcePatch, TargetPatch >.
Definition at line 392 of file AMIMethod.C.
|
inline |
Return const access to source patch face areas.
Definition at line 30 of file AMIMethodI.H.
|
inline |
Return access to source patch face areas.
Definition at line 38 of file AMIMethodI.H.
|
inline |
Return const access to target patch face areas.
Definition at line 46 of file AMIMethodI.H.
|
inline |
Return access to target patch face areas.
Definition at line 54 of file AMIMethodI.H.
|
pure virtual |
Update addressing and weights.
Implemented in faceAreaWeightAMI< SourcePatch, TargetPatch >, mapNearestAMI< SourcePatch, TargetPatch >, directAMI< SourcePatch, TargetPatch >, and partialFaceAreaWeightAMI< SourcePatch, TargetPatch >.
|
pure virtual |
Set the face areas for parallel runs.
Implemented in faceAreaWeightAMI< SourcePatch, TargetPatch >, mapNearestAMI< SourcePatch, TargetPatch >, directAMI< SourcePatch, TargetPatch >, and partialFaceAreaWeightAMI< SourcePatch, TargetPatch >.
|
pure virtual |
Normalise the weight. Can optionally subset addressing (e.g. for mapNearest)
Implemented in faceAreaWeightAMI< SourcePatch, TargetPatch >, mapNearestAMI< SourcePatch, TargetPatch >, and directAMI< SourcePatch, TargetPatch >.
|
protected |
Reference to source patch.
Definition at line 83 of file AMIMethod.H.
|
protected |
Reference to target patch.
Definition at line 86 of file AMIMethod.H.
|
protected |
Flag to indicate that the two patches are co-directional and that the orientation of the target patch should be reversed
Definition at line 90 of file AMIMethod.H.
|
protected |
Flag to indicate that the two patches must be matched/an overlap exists between them
Definition at line 94 of file AMIMethod.H.
|
protected |
Source face areas.
Definition at line 97 of file AMIMethod.H.
|
protected |
Target face areas.
Definition at line 100 of file AMIMethod.H.
|
protected |
Labels of faces that are not overlapped by any target faces (should be empty for correct functioning)
Definition at line 104 of file AMIMethod.H.
|
protected |
Octree used to find face seeds.
Definition at line 107 of file AMIMethod.H.
|
protected |
Face triangulation mode.
Definition at line 110 of file AMIMethod.H.