68 #ifndef Foam_cyclicAMIFvPatchField_H 69 #define Foam_cyclicAMIFvPatchField_H 127 cyclicAMIPatch_.
owner()
128 ? cyclicAMIPatch_.
AMI()
134 virtual bool all_ready()
const;
137 static bool cacheNeighbourField();
143 template<
class Type2>
158 template<
class Type2>
159 void collectStencilData
171 TypeName(cyclicAMIFvPatch::typeName_());
231 return cyclicAMIPatch_;
239 virtual bool coupled()
const {
return cyclicAMIPatch_.
coupled(); }
242 virtual bool ready()
const;
359 virtual int rank()
const 368 virtual void write(Ostream&
os)
const;
373 virtual void operator=(
const fvPatchField<Type>&);
374 virtual void operator==(
const fvPatchField<Type>&);
virtual bool coupled() const
Return true if coupled. Note that the underlying patch.
virtual void operator==(const fvPatchField< Type > &)
TypeName(cyclicAMIFvPatch::typeName_())
Runtime type information.
virtual bool ready() const
Are all (receive) data available?
commsTypes
Communications types.
virtual bool parallel() const
Are the cyclic planes parallel.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
virtual void initInterfaceMatrixUpdate(solveScalarField &result, const bool add, const lduAddressing &lduAddr, const label patchId, const solveScalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Initialise neighbour matrix update.
virtual void manipulateMatrix(fvMatrix< Type > &m, const label iMatrix, const direction cmpt)
Manipulate matrix.
Cyclic patch for Arbitrary Mesh Interface (AMI)
A range or interval of labels defined by a start and a size.
virtual tmp< fvPatchField< Type > > clone() const
Return a clone.
Type * data() noexcept
Return pointer to the underlying array serving as data storage.
virtual const tensorField & forwardT() const
Return face transformation tensor.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
A traits class, which is primarily used for primitives and vector-space.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
virtual void autoMap(const fvPatchFieldMapper &)
Map (and resize as needed) from self given a mapping object.
virtual void initEvaluate(const Pstream::commsTypes commsType)
Initialise the evaluation of the patch field.
A class for managing references or pointers (no reference counting)
virtual bool doTransform() const
Does the patch field perform the transformation.
virtual void updateInterfaceMatrix(solveScalarField &result, const bool add, const lduAddressing &lduAddr, const label patchId, const solveScalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Update result field based on interface functionality.
static tmp< fvPatchField< Type > > Clone(const DerivedPatchField &pf, Args &&... args)
Clone a patch field, optionally with internal field reference etc.
Abstract base class for cyclic AMI coupled interfaces.
Generic templated field type.
virtual void write(Ostream &os) const
Write.
virtual void evaluate(const Pstream::commsTypes commsType)
Evaluate the patch field.
A FieldMapper for finite-volume patch fields.
virtual const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
A special matrix type and solver, designed for finite volume solutions of scalar equations. Face addressing is used to make all matrix assembly and solution loops vectorise.
const cyclicAMIFvPatch & cyclicAMIPatch() const noexcept
Return local reference cast into the cyclic AMI patch.
Abstract base class for coupled patches.
virtual tmp< Field< Type > > patchNeighbourField() const
Return neighbour coupled internal cell data.
virtual int rank() const
Return rank of component for transform.
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
OBJstream os(runTime.globalPath()/outputName)
virtual void operator=(const fvPatchField< Type > &)
Field< tensor > tensorField
Specialisation of Field<T> for tensor.
virtual bool owner() const
Does this side own the patch?
virtual const cyclicAMIFvPatch & neighbPatch() const
Return a reference to the neighbour patch.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers...
virtual bool coupled() const
Return true if this patch is coupled. This is equivalent to the coupledPolyPatch::coupled() if parall...
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
Interpolation class dealing with transfer of data between two primitive patches with an arbitrary mes...
::Foam::direction rank(const expressions::valueTypeCode) noexcept
The vector-space rank associated with given valueTypeCode.
const cyclicAMIFvPatchField< Type > & neighbourPatchField() const
Return reference to neighbour patchField.
virtual const AMIPatchToPatchInterpolation & AMI() const
Return a reference to the AMI interpolator.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
The class contains the addressing required by the lduMatrix: upper, lower and losort.
cyclicAMIFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
virtual void rmap(const fvPatchField< Type > &, const labelList &)
Reverse map the given fvPatchField onto this fvPatchField.
A class for managing temporary objects.
virtual const tensorField & forwardT() const
Return face transformation tensor.
virtual const tensorField & reverseT() const
Return neighbour-cell transformation tensor.
This boundary condition enforces a cyclic condition between a pair of boundaries, whereby communicati...