Face area weighted Arbitrary Mesh Interface (AMI) method that performs the intersection of src and tgt face area in 2D. More...
Public Member Functions | |
TypeName ("faceAreaWeightAMI2D") | |
Runtime type information. More... | |
faceAreaWeightAMI2D (const dictionary &dict, const bool reverseTarget=false) | |
Construct from dictionary. More... | |
faceAreaWeightAMI2D (const bool requireMatch, const bool reverseTarget=false, const scalar lowWeightCorrection=-1, const faceAreaIntersect::triangulationMode triMode=faceAreaIntersect::tmMesh, const bool restartUncoveredSourceFace=true) | |
Construct from components. More... | |
faceAreaWeightAMI2D (const faceAreaWeightAMI2D &ami) | |
Construct as copy. More... | |
virtual autoPtr< AMIInterpolation > | clone () const |
Construct and return a clone. More... | |
virtual | ~faceAreaWeightAMI2D ()=default |
Destructor. More... | |
virtual bool | calculate (const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const autoPtr< searchableSurface > &surfPtr=nullptr) |
Update addressing, weights and (optional) centroids. More... | |
virtual void | write (Ostream &os) const |
Write. More... | |
Public Member Functions inherited from advancingFrontAMI | |
TypeName ("advancingFrontAMI") | |
Runtime type information. More... | |
advancingFrontAMI (const dictionary &dict, const bool reverseTarget) | |
Construct from components. More... | |
advancingFrontAMI (const bool requireMatch=true, const bool reverseTarget=false, const scalar lowWeightCorrection=-1, const faceAreaIntersect::triangulationMode triMode=faceAreaIntersect::tmMesh) | |
Construct from components. More... | |
advancingFrontAMI (const advancingFrontAMI &ami) | |
Construct as copy. More... | |
virtual | ~advancingFrontAMI ()=default |
Destructor. More... | |
const primitivePatch & | srcPatch () const |
Return const access to the source patch. More... | |
const primitivePatch & | tgtPatch () const |
Return const access to the target patch. More... | |
const labelList & | srcNonOverlap () const |
Labels of faces that are not overlapped by any target faces. More... | |
Public Member Functions inherited from AMIInterpolation | |
TypeName ("AMIInterpolation") | |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, AMIInterpolation, dict,(const dictionary &dict, const bool reverseTarget),(dict, reverseTarget)) | |
Selection table for dictionary construction. More... | |
declareRunTimeSelectionTable (autoPtr, AMIInterpolation, component,(const bool requireMatch, const bool reverseTarget, const scalar lowWeightCorrection),(requireMatch, reverseTarget, lowWeightCorrection)) | |
Selection table for component-wise construction. More... | |
AMIInterpolation (const dictionary &dict, const bool reverseTarget=false) | |
Construct from dictionary. More... | |
AMIInterpolation (const bool requireMatch=true, const bool reverseTarget=false, const scalar lowWeightCorrection=-1) | |
Construct from components. More... | |
AMIInterpolation (const AMIInterpolation &fineAMI, const labelList &sourceRestrictAddressing, const labelList &neighbourRestrictAddressing) | |
Construct from agglomeration of AMIInterpolation. Agglomeration passed in as new coarse size and addressing from fine from coarse. More... | |
AMIInterpolation (const AMIInterpolation &ami) | |
Construct as copy. More... | |
AMIInterpolation (Istream &is) | |
Construct from Istream. More... | |
virtual | ~AMIInterpolation ()=default |
Destructor. More... | |
bool | upToDate () const noexcept |
Is up-to-date? More... | |
bool | upToDate (bool flag) noexcept |
Set as up-to-date, return the previous value. More... | |
bool | distributed () const noexcept |
Distributed across processors (singlePatchProc == -1) More... | |
bool | requireMatch () const noexcept |
Return the requireMatch flag. More... | |
bool | setRequireMatch (bool flag) noexcept |
Set the require match flag, return the new value. More... | |
bool | mustMatchFaces () const |
Return true if requireMatch and but not lowWeightCorrection. More... | |
bool | reverseTarget () const noexcept |
Access to the reverseTarget flag. More... | |
scalar | lowWeightCorrection () const |
Threshold weight below which interpolation is deactivated. More... | |
bool | applyLowWeightCorrection () const |
Return true if employing a 'lowWeightCorrection'. More... | |
label | singlePatchProc () const noexcept |
The processor holding all faces (both sides), or -1 if distributed. More... | |
label | comm () const |
Communicator to use for parallel operations. More... | |
label | comm (const label newComm) |
Set communicator to use for parallel operations. Return. 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 labelListList & | srcAddress () const |
Return const access to source patch addressing. More... | |
labelListList & | srcAddress () |
Return access to source patch addressing. More... | |
const scalarListList & | srcWeights () const |
Return const access to source patch weights. More... | |
scalarListList & | srcWeights () |
Return access to source patch weights. More... | |
const scalarField & | srcWeightsSum () const |
Return const access to normalisation factor of source patch weights (i.e. the sum before normalisation) More... | |
scalarField & | srcWeightsSum () |
Return access to normalisation factor of source patch weights (i.e. the sum before normalisation) More... | |
const pointListList & | srcCentroids () const |
Return const access to source patch face centroids. More... | |
pointListList & | srcCentroids () |
Return access to source patch face centroids. More... | |
const mapDistribute & | srcMap () const |
Source map - valid only if singlePatchProc = -1 This gets source data into a form to be consumed by tgtAddress, tgtWeights. More... | |
const mapDistribute * | hasSrcMap () const noexcept |
Pointer to the source map (if distributed). Can be checked as a bool. 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... | |
const labelListList & | tgtAddress () const |
Return const access to target patch addressing. More... | |
labelListList & | tgtAddress () |
Return access to target patch addressing. More... | |
const scalarListList & | tgtWeights () const |
Return const access to target patch weights. More... | |
scalarListList & | tgtWeights () |
Return access to target patch weights. More... | |
const scalarField & | tgtWeightsSum () const |
Return const access to normalisation factor of target patch weights (i.e. the sum before normalisation) More... | |
scalarField & | tgtWeightsSum () |
Return access to normalisation factor of target patch weights (i.e. the sum before normalisation) More... | |
const mapDistribute & | tgtMap () const |
Target map - valid only if singlePatchProc=-1. This gets target data into a form to be consumed by srcAddress, srcWeights. More... | |
const mapDistribute * | hasTgtMap () const noexcept |
Pointer to the target map (if distributed). Can be checked as a bool. More... | |
void | reset (autoPtr< mapDistribute > &&srcToTgtMap, autoPtr< mapDistribute > &&tgtToSrcMap, labelListList &&srcAddress, scalarListList &&srcWeights, labelListList &&tgtAddress, scalarListList &&tgtWeights, const label singlePatchProc) |
Set the maps, addresses and weights from an external source. More... | |
void | append (const primitivePatch &srcPatch, const primitivePatch &tgtPatch) |
Append additional addressing and weights. More... | |
void | normaliseWeights (const bool conformal, const bool output) |
Normalise the weights. More... | |
template<class Type > | |
void | weightedSum (const bool interpolateToSource, const UList< Type > &fld, List< Type > &result, const UList< Type > &defaultValues) const |
Weighted sum of contributions. More... | |
template<class Type , class CombineOp > | |
void | interpolateToSource (const UList< Type > &fld, const CombineOp &cop, List< Type > &result, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from target to source with supplied op to combine existing value with remote value and weight. More... | |
template<class Type , class CombineOp > | |
void | interpolateToTarget (const UList< Type > &fld, const CombineOp &cop, List< Type > &result, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from source to target with supplied op to combine existing value with remote value and weight. More... | |
template<class Type , class CombineOp > | |
tmp< Field< Type > > | interpolateToSource (const Field< Type > &fld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from target to source with supplied op. More... | |
template<class Type , class CombineOp > | |
tmp< Field< Type > > | interpolateToSource (const tmp< Field< Type >> &tFld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from target tmp field to source with supplied op. More... | |
template<class Type , class CombineOp > | |
tmp< Field< Type > > | interpolateToTarget (const Field< Type > &fld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from source to target with supplied op. More... | |
template<class Type , class CombineOp > | |
tmp< Field< Type > > | interpolateToTarget (const tmp< Field< Type >> &tFld, const CombineOp &cop, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from source tmp field to target with supplied op. More... | |
template<class Type > | |
tmp< Field< Type > > | interpolateToSource (const Field< Type > &fld, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from target to source. More... | |
template<class Type > | |
tmp< Field< Type > > | interpolateToSource (const tmp< Field< Type >> &tFld, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from target tmp field. More... | |
template<class Type > | |
tmp< Field< Type > > | interpolateToTarget (const Field< Type > &fld, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from source to target. More... | |
template<class Type > | |
tmp< Field< Type > > | interpolateToTarget (const tmp< Field< Type >> &tFld, const UList< Type > &defaultValues=UList< Type >::null()) const |
Interpolate from source tmp field. More... | |
label | srcPointFace (const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const vector &n, const label tgtFacei, point &tgtPoint) const |
Return source patch face index of point on target patch face. More... | |
label | tgtPointFace (const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const vector &n, const label srcFacei, point &srcPoint) const |
Return target patch face index of point on source patch face. More... | |
bool | checkSymmetricWeights (const bool log) const |
Check if src addresses are present in tgt addresses and viceversa. More... | |
void | writeFaceConnectivity (const primitivePatch &srcPatch, const primitivePatch &tgtPatch, const labelListList &srcAddress) const |
Write face connectivity as OBJ file. More... | |
virtual bool | writeData (Ostream &os) const |
Write AMI raw. More... | |
bool & | upToDate () noexcept |
Non-const access to the up-to-date flag. More... | |
template<class Type , class CombineOp > | |
Foam::tmp< Foam::Field< Type > > | interpolateToSource (const Field< Type > &fld, const CombineOp &cop, const UList< Type > &defaultValues) const |
template<class Type , class CombineOp > | |
Foam::tmp< Foam::Field< Type > > | interpolateToSource (const tmp< Field< Type >> &tFld, const CombineOp &cop, const UList< Type > &defaultValues) const |
template<class Type , class CombineOp > | |
Foam::tmp< Foam::Field< Type > > | interpolateToTarget (const Field< Type > &fld, const CombineOp &cop, const UList< Type > &defaultValues) const |
template<class Type , class CombineOp > | |
Foam::tmp< Foam::Field< Type > > | interpolateToTarget (const tmp< Field< Type >> &tFld, const CombineOp &cop, const UList< Type > &defaultValues) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | interpolateToSource (const Field< Type > &fld, const UList< Type > &defaultValues) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | interpolateToSource (const tmp< Field< Type >> &tFld, const UList< Type > &defaultValues) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | interpolateToTarget (const Field< Type > &fld, const UList< Type > &defaultValues) const |
template<class Type > | |
Foam::tmp< Foam::Field< Type > > | interpolateToTarget (const tmp< Field< Type >> &tFld, const UList< Type > &defaultValues) const |
Protected Member Functions | |
void | operator= (const faceAreaWeightAMI2D &)=delete |
No copy assignment. More... | |
void | writeNoMatch (const label srcFacei, const labelList &tgtFaceCandidates, const boundBox &srcFaceBb) const |
Helper function to write non-matched source faces to the set of candidate faces. More... | |
void | storeInterArea (const label srcFacei, const label tgtFacei, DynamicList< label > &srcAddr, DynamicList< scalar > &srcWght, DynamicList< vector > &srcCtr, DynamicList< label > &tgtAddr, DynamicList< scalar > &tgtWght) const |
Calculate and store the area of intersection between source and target faces. More... | |
labelList | overlappingTgtFaces (const AABBTree< face > &tree, const List< boundBox > &tgtFaceBbs, const boundBox &srcFaceBb) const |
Return the set of tgt face IDs that overlap the src face bb. More... | |
Protected Member Functions inherited from advancingFrontAMI | |
void | createExtendedTgtPatch () |
Create a map that extends tgtPatch so that it covers srcPatch. More... | |
void | checkPatches () const |
Check AMI patch coupling. More... | |
bool | isCandidate (const label srcFacei, const label tgtFacei) const |
Is source/target a valid pair (i.e. not too far/different. More... | |
bool | initialiseWalk (label &srcFacei, label &tgtFacei) |
Initialise walk 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... | |
label | findTargetFace (const label srcFacei, const UList< label > &excludeFaces=UList< label >::null(), const label srcFacePti=-1) const |
void | appendNbrFaces (const label facei, const primitivePatch &patch, const DynamicList< label > &visitedFaces, DynamicList< label > &faceIDs) const |
Add faces neighbouring facei to the ID list. More... | |
void | triangulatePatch (const primitivePatch &patch, List< DynamicList< face >> &tris, List< scalar > &magSf) const |
Helper function to decompose a patch. More... | |
virtual void | nonConformalCorrection () |
Correction for non-conformal interpolations, e.g. for ACMI. More... | |
Protected Member Functions inherited from AMIInterpolation | |
void | operator= (const AMIInterpolation &)=delete |
No copy assignment. More... | |
autoPtr< indexedOctree< treeType > > | createTree (const primitivePatch &patch) const |
Reset the octree for the patch face search. More... | |
label | calcDistribution (const primitivePatch &srcPatch, const primitivePatch &tgtPatch) const |
Calculate if patches are on multiple processors. More... | |
void | projectPointsToSurface (const searchableSurface &surf, pointField &pts) const |
Project points to surface. More... | |
const primitivePatch & | srcPatch0 () const |
Return the orginal src patch with optionally updated points. More... | |
const primitivePatch & | tgtPatch0 () const |
Return the orginal tgt patch with optionally updated points. More... | |
Protected Attributes | |
scalar | Cbb_ |
Face bounding box factor. More... | |
Protected Attributes inherited from advancingFrontAMI | |
const scalar | maxDistance2_ |
Maximum squared distance. More... | |
const scalar | minCosAngle_ |
Minimum (cos of) angle. 1 for perfectly matching. More... | |
List< DynamicList< face > > | srcTris_ |
Storage for src-side triangle decomposition. More... | |
List< DynamicList< face > > | tgtTris_ |
Storage for tgt-side triangle decomposition. More... | |
autoPtr< primitivePatch > | extendedTgtPatchPtr_ |
Demand-driven extended target mesh (distributed parallel usage) More... | |
faceList | extendedTgtFaces_ |
Extended patch faces. More... | |
pointField | extendedTgtPoints_ |
Extended patch points. More... | |
labelList | extendedTgtFaceIDs_ |
Extended patch face IDs. More... | |
autoPtr< mapDistribute > | extendedTgtMapPtr_ |
Extended patch map. More... | |
labelList | srcNonOverlap_ |
Labels of faces that are not overlapped by any target faces (should be empty for correct functioning for fully covered AMIs) More... | |
autoPtr< indexedOctree< treeType > > | treePtr_ |
Octree used to find face seeds. More... | |
const faceAreaIntersect::triangulationMode | triMode_ |
Face triangulation mode. More... | |
areaNormalisationMode | areaNormalisationMode_ |
Area normalisation mode; default = project. More... | |
Protected Attributes inherited from AMIInterpolation | |
bool | requireMatch_ |
Flag to indicate that the two patches must be matched/an overlap exists between them. More... | |
const bool | reverseTarget_ |
Flag to indicate that the two patches are co-directional and that the orientation of the target patch should be reversed. More... | |
const scalar | lowWeightCorrection_ |
Threshold weight below which interpolation is deactivated. More... | |
label | singlePatchProc_ |
Index of processor that holds all of both sides. The value is -1 for distributed cases. More... | |
label | comm_ |
Communicator to use for parallel operations. More... | |
scalarList | srcMagSf_ |
Source face areas. More... | |
labelListList | srcAddress_ |
Addresses of target faces per source face. More... | |
scalarListList | srcWeights_ |
Weights of target faces per source face. More... | |
scalarField | srcWeightsSum_ |
Sum of weights of target faces per source face. More... | |
pointListList | srcCentroids_ |
Centroid of target faces per source face. More... | |
pointField | srcPatchPts_ |
Source patch points if input points are manipulated, e.g. projected. More... | |
refPtr< primitivePatch > | tsrcPatch0_ |
Source patch using manipulated input points. More... | |
autoPtr< mapDistribute > | srcMapPtr_ |
Source map pointer - parallel running only. More... | |
scalarList | tgtMagSf_ |
Target face areas. More... | |
labelListList | tgtAddress_ |
Addresses of source faces per target face. More... | |
scalarListList | tgtWeights_ |
Weights of source faces per target face. More... | |
scalarField | tgtWeightsSum_ |
Sum of weights of source faces per target face. More... | |
pointListList | tgtCentroids_ |
Centroid of source faces per target face. More... | |
pointField | tgtPatchPts_ |
Target patch points if input points are manipulated, e.g. projected. More... | |
refPtr< primitivePatch > | ttgtPatch0_ |
Target patch using manipulated input points. More... | |
autoPtr< mapDistribute > | tgtMapPtr_ |
Target map pointer - parallel running only. More... | |
bool | upToDate_ |
Up-to-date flag. More... | |
Additional Inherited Members | |
Public Types inherited from advancingFrontAMI | |
enum | areaNormalisationMode { project, mag } |
Area normalisation mode. More... | |
Static Public Member Functions inherited from AMIInterpolation | |
static autoPtr< AMIInterpolation > | New (const word &modelName, const dictionary &dict, const bool reverseTarget=false) |
Selector for dictionary. More... | |
static autoPtr< AMIInterpolation > | New (const word &modelName, const bool requireMatch=true, const bool reverseTarget=false, const scalar lowWeightCorrection=-1) |
Selector for components. More... | |
template<class Type , class CombineOp > | |
static void | weightedSum (const scalar lowWeightCorrection, const labelListList &allSlots, const scalarListList &allWeights, const scalarField &weightsSum, const UList< Type > &fld, const CombineOp &cop, List< Type > &result, const UList< Type > &defaultValues) |
Weighted sum of contributions. More... | |
Static Public Attributes inherited from advancingFrontAMI | |
static const Enum< areaNormalisationMode > | areaNormalisationModeNames_ |
Static Public Attributes inherited from AMIInterpolation | |
static bool | cacheIntersections_ = false |
Protected Types inherited from AMIInterpolation | |
typedef treeDataPrimitivePatch< primitivePatch > | treeType |
Local typedef to octree tree-type. More... | |
Static Protected Member Functions inherited from AMIInterpolation | |
static void | normaliseWeights (const scalarList &patchAreas, const word &patchName, const labelListList &addr, scalarListList &wght, scalarField &wghtSum, const bool conformal, const bool output, const scalar lowWeightTol, const label comm) |
Normalise the (area) weights - suppresses numerical error in weights calculation. More... | |
static void | agglomerate (const autoPtr< mapDistribute > &targetMap, const scalarList &fineSrcMagSf, const labelListList &fineSrcAddress, const scalarListList &fineSrcWeights, const labelList &sourceRestrictAddressing, const labelList &targetRestrictAddressing, scalarList &srcMagSf, labelListList &srcAddress, scalarListList &srcWeights, scalarField &srcWeightsSum, autoPtr< mapDistribute > &tgtMap, const label comm) |
Face area weighted Arbitrary Mesh Interface (AMI) method that performs the intersection of src and tgt face area in 2D.
Definition at line 48 of file faceAreaWeightAMI2D.H.
faceAreaWeightAMI2D | ( | const dictionary & | dict, |
const bool | reverseTarget = false |
||
) |
Construct from dictionary.
Definition at line 248 of file faceAreaWeightAMI2D.C.
Referenced by faceAreaWeightAMI2D::clone().
faceAreaWeightAMI2D | ( | const bool | requireMatch, |
const bool | reverseTarget = false , |
||
const scalar | lowWeightCorrection = -1 , |
||
const faceAreaIntersect::triangulationMode | triMode = faceAreaIntersect::tmMesh , |
||
const bool | restartUncoveredSourceFace = true |
||
) |
Construct from components.
Definition at line 259 of file faceAreaWeightAMI2D.C.
faceAreaWeightAMI2D | ( | const faceAreaWeightAMI2D & | ami | ) |
Construct as copy.
Definition at line 279 of file faceAreaWeightAMI2D.C.
|
virtualdefault |
Destructor.
|
protecteddelete |
No copy assignment.
|
protected |
Helper function to write non-matched source faces to the set of candidate faces.
Definition at line 43 of file faceAreaWeightAMI2D.C.
References Foam::endl(), forAll, Foam::Info, Foam::name(), Foam::nl, os(), p, points, boundBox::points(), and UList< T >::size().
|
protected |
Calculate and store the area of intersection between source and target faces.
Definition at line 116 of file faceAreaWeightAMI2D.C.
References addProfiling, DynamicList< T, SizeMin >::append(), Foam::fieldTypes::area, Foam::constant::universal::c, Foam::mag(), s, triangle2D::snapClosePoints(), and Foam::Zero.
|
protected |
Return the set of tgt face IDs that overlap the src face bb.
Definition at line 212 of file faceAreaWeightAMI2D.C.
References forAll, HashSet< Key, Hash >::insert(), boundBox::overlaps(), HashTable< T, Key, Hash >::toc(), and tree().
TypeName | ( | "faceAreaWeightAMI2D" | ) |
Runtime type information.
|
inlinevirtual |
Construct and return a clone.
Reimplemented from advancingFrontAMI.
Definition at line 150 of file faceAreaWeightAMI2D.H.
References faceAreaWeightAMI2D::faceAreaWeightAMI2D().
|
virtual |
Update addressing, weights and (optional) centroids.
Reimplemented from advancingFrontAMI.
Definition at line 291 of file faceAreaWeightAMI2D.C.
References addProfiling, Foam::ensightOutput::debug, UList< T >::empty(), Foam::endl(), forAll, Foam::gAverage(), boundBox::grow(), globalIndex::inplaceToGlobal(), Foam::Pout, UList< T >::size(), Foam::sqrt(), tree(), and WarningInFunction.
|
virtual |
Write.
Reimplemented from advancingFrontAMI.
Definition at line 524 of file faceAreaWeightAMI2D.C.
References faceAreaWeightAMI2D::Cbb_, os(), and advancingFrontAMI::write().
|
protected |
Face bounding box factor.
Definition at line 59 of file faceAreaWeightAMI2D.H.
Referenced by faceAreaWeightAMI2D::write().