101 this->cyclicPatch().neighbFvPatch().faceCells();
104 if (!this->cyclicPatch().owner())
109 if (this->doTransform())
111 const auto& rot = this->forwardT()[0];
115 pnf[i] = (
transform(rot, iField[nbrFaceCells[i]]) - jf[i]);
122 pnf[i] = (iField[nbrFaceCells[i]] - jf[i]);
129Foam::tmp<Foam::Field<Type>>
172 this->cyclicPatch().neighbPatchID()
176 if (&psiInternal == &this->primitiveField())
180 if (!this->cyclicPatch().owner())
187 pnf[facei] = psiInternal[nbrFaceCells[facei]] - jf[facei];
194 pnf[facei] = psiInternal[nbrFaceCells[facei]];
199 this->transformCoupleField(pnf);
204 this->addToInternalField(result, !
add,
faceCells, coeffs, pnf);
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
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 bool doTransform() const
Does the patch field perform the transformation.
cyclicFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
const cyclicFvPatch & cyclicPatch() const
Return local reference cast into the cyclic patch.
virtual const tensorField & forwardT() const
Return face transformation tensor.
void transformCoupleField(Field< Type > &f) const
Transform given patch field.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
Smooth ATC in cells next to a set of patches supplied by type.
A FieldMapper for finite-volume patch fields.
const Field< Type > & primitiveField() const noexcept
Return const-reference to the internal field values.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
This boundary condition provides a base class for coupled-cyclic conditions with a specified 'jump' (...
jumpCyclicFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
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.
virtual tmp< Field< Type > > jump() const =0
Return the "jump" across the patch as a "half" field.
virtual tmp< Field< Type > > patchNeighbourField() const
Return neighbour coupled values.
The class contains the addressing required by the lduMatrix: upper, lower and losort.
virtual const labelUList & patchAddr(const label patchNo) const =0
Return patch to internal addressing given patch number.
void addToInternalField(Field< Type > &result, const bool add, const labelUList &faceCells, const scalarField &coeffs, const Field< Type > &vals) const
Add/subtract weighted contributions to internal field.
A class for managing temporary objects.
#define NotImplemented
Issue a FatalErrorIn for a function not currently implemented.
tmp< DimensionedField< TypeR, GeoMesh > > New(const tmp< DimensionedField< TypeR, GeoMesh > > &tf1, const word &name, const dimensionSet &dimensions, const bool initCopy=false)
Global function forwards to reuseTmpDimensionedField::New.
refinementData transform(const tensor &, const refinementData val)
No-op rotational transform for base types.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
void add(DimensionedField< scalar, GeoMesh > &result, const dimensioned< scalar > &dt1, const DimensionedField< scalar, GeoMesh > &f2)
Field< solveScalar > solveScalarField
UList< label > labelUList
A UList of labels.
#define forAll(list, i)
Loop across all elements in list.