38#ifndef Foam_cyclicAMIFvPatch_H
39#define Foam_cyclicAMIFvPatch_H
88 TypeName(cyclicAMIPolyPatch::typeName_());
144 return cyclicAMIPolyPatch_;
148 virtual bool owner()
const
150 return cyclicAMIPolyPatch_.
owner();
156 return cyclicAMIPolyPatch_.neighbPatchID();
171 return cyclicAMIPolyPatch_.AMI();
177 return cyclicAMIPolyPatch_.applyLowWeightCorrection();
184 return cyclicAMIPolyPatch_.
parallel();
190 return cyclicAMIPolyPatch_.forwardT();
196 return cyclicAMIPolyPatch_.reverseT();
223 return cyclicAMIPolyPatch_.interpolate(
fld, defaultValues);
233 return cyclicAMIPolyPatch_.interpolate(tFld, defaultValues);
Info<< nl;Info<< "Write faMesh in vtk format:"<< nl;{ vtk::uindirectPatchWriter writer(aMesh.patch(), fileName(aMesh.time().globalPath()/vtkBaseFileName));writer.writeGeometry();globalIndex procAddr(aMesh.nFaces());labelList cellIDs;if(UPstream::master()) { cellIDs.resize(procAddr.totalSize());for(const labelRange &range :procAddr.ranges()) { auto slice=cellIDs.slice(range);slice=identity(range);} } writer.beginCellData(4);writer.writeProcIDs();writer.write("cellID", cellIDs);writer.write("area", aMesh.S().field());writer.write("normal", aMesh.faceAreaNormals());writer.beginPointData(1);writer.write("normal", aMesh.pointAreaNormals());Info<< " "<< writer.output().name()<< nl;}{ vtk::lineWriter writer(aMesh.points(), aMesh.edges(), fileName(aMesh.time().globalPath()/(vtkBaseFileName+"-edges")));writer.writeGeometry();writer.beginCellData(4);writer.writeProcIDs();{ Field< scalar > fld(faMeshTools::flattenEdgeField(aMesh.magLe(), true))
Generic templated field type that is much like a Foam::List except that it is expected to hold numeri...
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
commsTypes
Communications types.
virtual const labelUList & faceCells() const
Return faceCell addressing.
coupledFvPatch(const polyPatch &patch, const fvBoundaryMesh &bm)
Construct from polyPatch.
virtual bool parallel() const
Are the cyclic planes parallel.
Cyclic patch for Arbitrary Mesh Interface (AMI).
virtual tmp< labelField > internalFieldTransfer(const Pstream::commsTypes commsType, const labelUList &internalData) const
Return neighbour field.
TypeName(cyclicAMIPolyPatch::typeName_())
Runtime type information.
cyclicAMIFvPatch(const polyPatch &patch, const fvBoundaryMesh &bm)
Construct from polyPatch.
virtual bool owner() const
Does this side own the patch?
void makeWeights(scalarField &) const
Make patch weighting factors.
virtual const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
virtual void makeNonOrthoDeltaCoeffs(scalarField &) const
Correct patch non-ortho deltaCoeffs.
const cyclicAMIPolyPatch & cyclicAMIPatch() const
Return local reference cast into the cyclic patch.
virtual label neighbPatchID() const
Return neighbour patch ID.
virtual void makeDeltaCoeffs(scalarField &) const
Correct patch deltaCoeffs.
virtual const cyclicAMIFvPatch & neighbPatch() const
Return a reference to the neighbour patch.
virtual void movePoints()
Correct patches after moving points.
virtual bool coupled() const
Return true if this patch is coupled. This is equivalent to the coupledPolyPatch::coupled() if parall...
virtual bool parallel() const
Are the cyclic planes parallel.
const cyclicAMIFvPatch & neighbFvPatch() const
virtual tmp< vectorField > delta() const
Return delta (P to N) vectors across coupled patch.
virtual void makeNonOrthoCorrVectors(vectorField &) const
Correct patch non-ortho correction vectors.
tmp< Field< Type > > interpolate(const Field< Type > &fld, const UList< Type > &defaultValues=UList< Type >()) const
virtual tmp< labelField > interfaceInternalField(const labelUList &internalData) const
Return the values of the given internal data adjacent to the interface as a field.
virtual const AMIPatchToPatchInterpolation & AMI() const
Return a reference to the AMI interpolator.
tmp< Field< Type > > interpolate(const tmp< Field< Type > > &tFld, const UList< Type > &defaultValues=UList< Type >()) const
virtual bool applyLowWeightCorrection() const
Return true if applying the low weight correction.
virtual const tensorField & forwardT() const
Return face transformation tensor.
cyclicAMILduInterface() noexcept=default
Default construct.
Cyclic patch for Arbitrary Mesh Interface (AMI).
virtual bool owner() const
Does this side own the patch?
virtual label neighbPatchID() const
Neighbour patch ID.
Smooth ATC in cells next to a set of patches supplied by type.
A fvBoundaryMesh is a fvPatch list with a reference to the associated fvMesh, with additional search ...
const polyPatch & patch() const noexcept
Return the polyPatch.
const fvBoundaryMesh & boundaryMesh() const noexcept
Return boundaryMesh reference.
A patch is a list of labels that address the faces in the global face list.
A class for managing temporary objects.
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
AMIInterpolation AMIPatchToPatchInterpolation
Patch-to-patch interpolation == Foam::AMIInterpolation.
Field< vector > vectorField
Specialisation of Field<T> for vector.
Field< tensor > tensorField
Specialisation of Field<T> for tensor.
UList< label > labelUList
A UList of labels.
#define TypeName(TypeNameString)
Declare a ClassName() with extra virtual type info.