Public Types | Public Member Functions | Static Public Member Functions | List of all members
AMIInterpolation< SourcePatch, TargetPatch > Class Template Reference

Interpolation class dealing with transfer of data between two primitive patches with an arbitrary mesh interface (AMI). More...

Inheritance diagram for AMIInterpolation< SourcePatch, TargetPatch >:
Inheritance graph
[legend]
Collaboration diagram for AMIInterpolation< SourcePatch, TargetPatch >:
Collaboration graph
[legend]

Public Types

enum  interpolationMethod { imDirect, imMapNearest, imFaceAreaWeight, imPartialFaceAreaWeight }
 Enumeration specifying interpolation method. More...
 
typedef SourcePatch sourcePatchType
 
typedef TargetPatch targetPatchType
 

Public Member Functions

 AMIInterpolation (const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const faceAreaIntersect::triangulationMode &triMode, const bool requireMatch=true, const interpolationMethod &method=imFaceAreaWeight, const scalar lowWeightCorrection=-1, const bool reverseTarget=false)
 Construct from components. More...
 
 AMIInterpolation (const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const faceAreaIntersect::triangulationMode &triMode, const bool requireMatch=true, const word &methodName=interpolationMethodToWord(imFaceAreaWeight), const scalar lowWeightCorrection=-1, const bool reverseTarget=false)
 Construct from components. More...
 
 AMIInterpolation (const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const autoPtr< searchableSurface > &surf, const faceAreaIntersect::triangulationMode &triMode, const bool requireMatch=true, const interpolationMethod &method=imFaceAreaWeight, const scalar lowWeightCorrection=-1, const bool reverseTarget=false)
 Construct from components, with projection surface. More...
 
 AMIInterpolation (const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const autoPtr< searchableSurface > &surf, const faceAreaIntersect::triangulationMode &triMode, const bool requireMatch=true, const word &methodName=interpolationMethodToWord(imFaceAreaWeight), const scalar lowWeightCorrection=-1, const bool reverseTarget=false)
 Construct from components, with projection surface. More...
 
 AMIInterpolation (const AMIInterpolation< SourcePatch, TargetPatch > &fineAMI, const labelList &sourceRestrictAddressing, const labelList &neighbourRestrictAddressing)
 Construct from agglomeration of AMIInterpolation. Agglomeration. More...
 
 ~AMIInterpolation ()
 Destructor. More...
 
label singlePatchProc () const
 Set to -1, or the processor holding all faces (both sides) of. More...
 
scalar lowWeightCorrection () const
 Threshold weight below which interpolation is deactivated. More...
 
bool applyLowWeightCorrection () const
 Return true if employing a 'lowWeightCorrection'. More...
 
const scalarFieldsrcMagSf () const
 Return const access to source patch face areas. More...
 
const labelListListsrcAddress () const
 Return const access to source patch addressing. More...
 
const scalarListListsrcWeights () const
 Return const access to source patch weights. More...
 
scalarListListsrcWeights ()
 Return access to source patch weights. More...
 
const scalarFieldsrcWeightsSum () const
 Return const access to normalisation factor of source. More...
 
scalarFieldsrcWeightsSum ()
 Return access to normalisation factor of source. More...
 
const mapDistributesrcMap () const
 Source map pointer - valid only if singlePatchProc = -1. More...
 
const scalarFieldtgtMagSf () const
 Return const access to target patch face areas. More...
 
const labelListListtgtAddress () const
 Return const access to target patch addressing. More...
 
const scalarListListtgtWeights () const
 Return const access to target patch weights. More...
 
scalarListListtgtWeights ()
 Return access to target patch weights. More...
 
const scalarFieldtgtWeightsSum () const
 Return const access to normalisation factor of target. More...
 
scalarFieldtgtWeightsSum ()
 Return access to normalisation factor of target. More...
 
const mapDistributetgtMap () const
 Target map pointer - valid only if singlePatchProc=-1. More...
 
void update (const SourcePatch &srcPatch, const TargetPatch &tgtPatch)
 Update addressing and weights. 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. 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. 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 SourcePatch &srcPatch, const TargetPatch &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 SourcePatch &srcPatch, const TargetPatch &tgtPatch, const vector &n, const label srcFacei, point &srcPoint) const
 Return target patch face index of point on source patch face. More...
 
void writeFaceConnectivity (const SourcePatch &srcPatch, const TargetPatch &tgtPatch, const labelListList &srcAddress) const
 Write face connectivity as OBJ file. 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
 

Static Public Member Functions

static word interpolationMethodToWord (const interpolationMethod &method)
 Convert interpolationMethod to word representation. More...
 
static interpolationMethod wordTointerpolationMethod (const word &method)
 Convert word to interpolationMethod. More...
 

Detailed Description

template<class SourcePatch, class TargetPatch>
class Foam::AMIInterpolation< SourcePatch, TargetPatch >

Interpolation class dealing with transfer of data between two primitive patches with an arbitrary mesh interface (AMI).

Based on the algorithm given in:

Conservative interpolation between volume meshes by local Galerkin projection, Farrell PE and Maddison JR, 2011, Comput. Methods Appl. Mech Engrg, Volume 200, Issues 1-4, pp 89-100

Interpolation requires that the two patches should have opposite orientations (opposite normals). The 'reverseTarget' flag can be used to reverse the orientation of the target patch.

Source files

Definition at line 77 of file AMIInterpolation.H.

Member Typedef Documentation

typedef SourcePatch sourcePatchType

Definition at line 348 of file AMIInterpolation.H.

typedef TargetPatch targetPatchType

Definition at line 351 of file AMIInterpolation.H.

Member Enumeration Documentation

Enumeration specifying interpolation method.

Enumerator
imDirect 
imMapNearest 
imFaceAreaWeight 
imPartialFaceAreaWeight 

Definition at line 86 of file AMIInterpolation.H.

Constructor & Destructor Documentation

AMIInterpolation ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch,
const faceAreaIntersect::triangulationMode triMode,
const bool  requireMatch = true,
const interpolationMethod method = imFaceAreaWeight,
const scalar  lowWeightCorrection = -1,
const bool  reverseTarget = false 
)

Construct from components.

Definition at line 588 of file AMIInterpolation.C.

AMIInterpolation ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch,
const faceAreaIntersect::triangulationMode triMode,
const bool  requireMatch = true,
const word methodName = interpolationMethodToWord(imFaceAreaWeight),
const scalar  lowWeightCorrection = -1,
const bool  reverseTarget = false 
)

Construct from components.

Definition at line 619 of file AMIInterpolation.C.

AMIInterpolation ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch,
const autoPtr< searchableSurface > &  surf,
const faceAreaIntersect::triangulationMode triMode,
const bool  requireMatch = true,
const interpolationMethod method = imFaceAreaWeight,
const scalar  lowWeightCorrection = -1,
const bool  reverseTarget = false 
)

Construct from components, with projection surface.

Definition at line 650 of file AMIInterpolation.C.

AMIInterpolation ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch,
const autoPtr< searchableSurface > &  surf,
const faceAreaIntersect::triangulationMode triMode,
const bool  requireMatch = true,
const word methodName = interpolationMethodToWord(imFaceAreaWeight),
const scalar  lowWeightCorrection = -1,
const bool  reverseTarget = false 
)

Construct from components, with projection surface.

Definition at line 682 of file AMIInterpolation.C.

AMIInterpolation ( const AMIInterpolation< SourcePatch, TargetPatch > &  fineAMI,
const labelList sourceRestrictAddressing,
const labelList neighbourRestrictAddressing 
)

Destructor.

Definition at line 836 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::update().

Here is the call graph for this function:

Member Function Documentation

Foam::word interpolationMethodToWord ( const interpolationMethod method)
static

Convert interpolationMethod to word representation.

Definition at line 37 of file AMIInterpolation.C.

References Foam::abort(), Foam::FatalError, FatalErrorInFunction, and AMIInterpolation< SourcePatch, TargetPatch >::wordTointerpolationMethod().

Referenced by meshToMesh::meshToMesh().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::AMIInterpolation< SourcePatch, TargetPatch >::interpolationMethod wordTointerpolationMethod ( const word method)
static
Foam::label singlePatchProc ( ) const
inline

Set to -1, or the processor holding all faces (both sides) of.

the AMI

Definition at line 28 of file AMIInterpolationI.H.

Foam::scalar lowWeightCorrection ( ) const
inline

Threshold weight below which interpolation is deactivated.

Definition at line 36 of file AMIInterpolationI.H.

References AMIInterpolation< SourcePatch, TargetPatch >::applyLowWeightCorrection().

Here is the call graph for this function:

bool applyLowWeightCorrection ( ) const
inline

Return true if employing a 'lowWeightCorrection'.

Definition at line 45 of file AMIInterpolationI.H.

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::lowWeightCorrection().

Here is the caller graph for this function:

const Foam::scalarField & srcMagSf ( ) const
inline

Return const access to source patch face areas.

Definition at line 53 of file AMIInterpolationI.H.

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::AMIInterpolation().

Here is the caller graph for this function:

const Foam::labelListList & srcAddress ( ) const
inline

Return const access to source patch addressing.

Definition at line 61 of file AMIInterpolationI.H.

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::AMIInterpolation().

Here is the caller graph for this function:

const Foam::scalarListList & srcWeights ( ) const
inline

Return const access to source patch weights.

Definition at line 69 of file AMIInterpolationI.H.

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::AMIInterpolation(), and cyclicACMIPolyPatch::resetAMI().

Here is the caller graph for this function:

Foam::scalarListList & srcWeights ( )
inline

Return access to source patch weights.

Definition at line 77 of file AMIInterpolationI.H.

const Foam::scalarField & srcWeightsSum ( ) const
inline

Return const access to normalisation factor of source.

patch weights (i.e. the sum before normalisation)

Definition at line 85 of file AMIInterpolationI.H.

Referenced by cyclicACMIPolyPatch::resetAMI().

Here is the caller graph for this function:

Foam::scalarField & srcWeightsSum ( )
inline

Return access to normalisation factor of source.

patch weights (i.e. the sum before normalisation)

Definition at line 93 of file AMIInterpolationI.H.

const Foam::mapDistribute & srcMap ( ) const
inline

Source map pointer - valid only if singlePatchProc = -1.

This gets source data into a form to be consumed by tgtAddress, tgtWeights

Definition at line 101 of file AMIInterpolationI.H.

const Foam::scalarField & tgtMagSf ( ) const
inline

Return const access to target patch face areas.

Definition at line 109 of file AMIInterpolationI.H.

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::AMIInterpolation().

Here is the caller graph for this function:

const Foam::labelListList & tgtAddress ( ) const
inline

Return const access to target patch addressing.

Definition at line 117 of file AMIInterpolationI.H.

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::AMIInterpolation().

Here is the caller graph for this function:

const Foam::scalarListList & tgtWeights ( ) const
inline

Return const access to target patch weights.

Definition at line 125 of file AMIInterpolationI.H.

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::AMIInterpolation(), and cyclicACMIPolyPatch::resetAMI().

Here is the caller graph for this function:

Foam::scalarListList & tgtWeights ( )
inline

Return access to target patch weights.

Definition at line 133 of file AMIInterpolationI.H.

const Foam::scalarField & tgtWeightsSum ( ) const
inline

Return const access to normalisation factor of target.

patch weights (i.e. the sum before normalisation)

Definition at line 141 of file AMIInterpolationI.H.

Referenced by cyclicACMIPolyPatch::resetAMI().

Here is the caller graph for this function:

Foam::scalarField & tgtWeightsSum ( )
inline

Return access to normalisation factor of target.

patch weights (i.e. the sum before normalisation)

Definition at line 149 of file AMIInterpolationI.H.

const Foam::mapDistribute & tgtMap ( ) const
inline

Target map pointer - valid only if singlePatchProc=-1.

This gets target data into a form to be consumed by srcAddress, srcWeights

Definition at line 157 of file AMIInterpolationI.H.

void update ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch 
)
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

Definition at line 1197 of file AMIInterpolation.C.

References Foam::abort(), mapDistribute::distribute(), Foam::FatalError, FatalErrorInFunction, forAll, Foam::nl, List< T >::setSize(), and UList< T >::size().

Referenced by mappedPatchBase::distribute(), AMIInterpolation< SourcePatch, TargetPatch >::interpolateToSource(), AMIInterpolation< SourcePatch, TargetPatch >::interpolateToTarget(), regionModel::mapRegionPatchField(), regionModel::mapRegionPatchInternalField(), and meshToMesh::mapSrcToTgt().

Here is the call graph for this function:

Here is the caller graph for this function:

void interpolateToTarget ( const UList< Type > &  fld,
const CombineOp &  cop,
List< Type > &  result,
const UList< Type > &  defaultValues = UList<Type>::null() 
) const
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.

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.

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.

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.

tmp<Field<Type> > interpolateToSource ( const Field< Type > &  fld,
const UList< Type > &  defaultValues = UList< Type >::null() 
) const

Interpolate from target to source.

tmp<Field<Type> > interpolateToSource ( const tmp< Field< Type >> &  tFld,
const UList< Type > &  defaultValues = UList< Type >::null() 
) const

Interpolate from target tmp field.

tmp<Field<Type> > interpolateToTarget ( const Field< Type > &  fld,
const UList< Type > &  defaultValues = UList< Type >::null() 
) const

Interpolate from source to target.

tmp<Field<Type> > interpolateToTarget ( const tmp< Field< Type >> &  tFld,
const UList< Type > &  defaultValues = UList< Type >::null() 
) const

Interpolate from source tmp field.

Foam::label srcPointFace ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch,
const vector n,
const label  tgtFacei,
point tgtPoint 
) const

Return source patch face index of point on target patch face.

Definition at line 1423 of file AMIInterpolation.C.

References f(), forAll, PointHit< Point >::hit(), PointHit< Point >::rawPoint(), face::ray(), and AMIInterpolation< SourcePatch, TargetPatch >::tgtPointFace().

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::interpolateToTarget().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::label tgtPointFace ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch,
const vector n,
const label  srcFacei,
point srcPoint 
) const

Return target patch face index of point on source patch face.

Definition at line 1477 of file AMIInterpolation.C.

References f(), forAll, PointHit< Point >::hit(), PointHit< Point >::rawPoint(), face::ray(), and AMIInterpolation< SourcePatch, TargetPatch >::writeFaceConnectivity().

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::srcPointFace().

Here is the call graph for this function:

Here is the caller graph for this function:

void writeFaceConnectivity ( const SourcePatch &  srcPatch,
const TargetPatch &  tgtPatch,
const labelListList srcAddress 
) const

Write face connectivity as OBJ file.

Definition at line 1531 of file AMIInterpolation.C.

References Foam::endl(), forAll, Foam::name(), and Foam::meshTools::writeOBJ().

Referenced by AMIInterpolation< SourcePatch, TargetPatch >::tgtPointFace().

Here is the call graph for this function:

Here is the caller graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToSource ( const Field< Type > &  fld,
const CombineOp &  cop,
const UList< Type > &  defaultValues 
) const

Definition at line 1283 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::interpolateToSource(), tmp< T >::ref(), and Foam::Zero.

Here is the call graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToSource ( const tmp< Field< Type >> &  tFld,
const CombineOp &  cop,
const UList< Type > &  defaultValues 
) const

Definition at line 1314 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::interpolateToTarget().

Here is the call graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToTarget ( const Field< Type > &  fld,
const CombineOp &  cop,
const UList< Type > &  defaultValues 
) const

Definition at line 1328 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::interpolateToTarget(), tmp< T >::ref(), and Foam::Zero.

Here is the call graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToTarget ( const tmp< Field< Type >> &  tFld,
const CombineOp &  cop,
const UList< Type > &  defaultValues 
) const

Definition at line 1359 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::interpolateToSource().

Here is the call graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToSource ( const Field< Type > &  fld,
const UList< Type > &  defaultValues 
) const

Definition at line 1373 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::interpolateToSource().

Here is the call graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToSource ( const tmp< Field< Type >> &  tFld,
const UList< Type > &  defaultValues 
) const

Definition at line 1386 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::interpolateToTarget().

Here is the call graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToTarget ( const Field< Type > &  fld,
const UList< Type > &  defaultValues 
) const

Definition at line 1399 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::interpolateToTarget().

Here is the call graph for this function:

Foam::tmp<Foam::Field<Type> > interpolateToTarget ( const tmp< Field< Type >> &  tFld,
const UList< Type > &  defaultValues 
) const

Definition at line 1412 of file AMIInterpolation.C.

References AMIInterpolation< SourcePatch, TargetPatch >::srcPointFace().

Here is the call graph for this function:


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