40 cyclicACMIPatch_(refCast<const cyclicACMIFvPatch>(p))
54 cyclicACMIPatch_(refCast<const cyclicACMIFvPatch>(p))
56 if (!isA<cyclicACMIFvPatch>(p))
61 ) <<
" patch type '" << p.type()
62 <<
"' not constraint type '" << typeName <<
"'" 63 <<
"\n for patch " << p.name()
64 <<
" of field " << this->internalField().name()
65 <<
" in file " << this->internalField().objectPath()
69 if (!dict.found(
"value") && this->coupled())
71 this->evaluate(Pstream::commsTypes::blocking);
87 cyclicACMIPatch_(refCast<const cyclicACMIFvPatch>(p))
89 if (!isA<cyclicACMIFvPatch>(this->patch()))
92 <<
"' not constraint type '" << typeName <<
"'" 93 <<
"\n for patch " << p.name()
94 <<
" of field " << this->internalField().name()
95 <<
" in file " << this->internalField().objectPath()
110 cyclicACMIPatch_(ptf.cyclicACMIPatch_)
123 cyclicACMIPatch_(ptf.cyclicACMIPatch_)
132 return cyclicACMIPatch_.coupled();
140 const Field<Type>& iField = this->primitiveField();
144 cyclicACMIPatch_.interpolate
170 this->primitiveField()
173 return refCast<const cyclicACMIFvPatchField<Type>>
187 this->primitiveField()
190 return fld.
boundaryField()[cyclicACMIPatch_.nonOverlapPatchID()];
214 transformCoupleField(pnf, cmpt);
216 const labelUList& faceCells = cyclicACMIPatch_.faceCells();
218 pnf = cyclicACMIPatch_.interpolate(pnf);
222 result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
245 transformCoupleField(pnf);
247 const labelUList& faceCells = cyclicACMIPatch_.faceCells();
249 pnf = cyclicACMIPatch_.interpolate(pnf);
253 result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
264 const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
283 const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
293 this->writeEntry(
"value", os);
Cyclic patch for Arbitrarily Coupled Mesh Interface (ACMI)
virtual void updateInterfaceMatrix(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Update result field based on interface functionality.
#define forAll(list, i)
Loop across all elements in list.
virtual const cyclicACMIPolyPatch & neighbPatch() const
Return a reference to the neighbour patch.
errorManipArg< error, int > exit(error &err, const int errNo=1)
const fvPatchField< Type > & nonOverlapPatchField() const
Return reference to non-overlapping patchField.
A list of keyword definitions, which are a keyword followed by any number of values (e...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
const Boundary & boundaryField() const
Return const-reference to the boundary field.
commsTypes
Types of communications.
virtual tmp< Field< Type > > patchNeighbourField() const
Return neighbour coupled internal cell data.
T & ref() const
Return non-const reference or generate a fatal error.
A finiteVolume patch using a polyPatch and a fvBoundaryMesh.
Abstract base class with a fat-interface to all derived classes covering all possible ways in which t...
Generic GeometricField class.
This boundary condition enforces a cyclic condition between a pair of boundaries, whereby communicati...
virtual bool coupled() const
Return true if coupled. Note that the underlying patch.
gmvFile<< "tracers "<< particles.size()<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().x()<< ' ';}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().y()<< ' ';}gmvFile<< nl;forAllConstIter(Cloud< passiveParticle >, particles, iter){ gmvFile<< iter().position().z()<< ' ';}gmvFile<< nl;forAll(lagrangianScalarNames, i){ const word &name=lagrangianScalarNames[i];IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
const labelUList & faceCells() const
Return face-cell addressing.
virtual void write(Ostream &os) const
Write.
Pre-declare SubField and related Field type.
Foam::fvPatchFieldMapper.
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 cyclicACMIFvPatchField< Type > & neighbourPatchField() const
Return reference to neighbour patchField.
cyclicACMIFvPatchField(const fvPatch &, const DimensionedField< Type, volMesh > &)
Construct from patch and internal field.
Abstract base class for coupled patches.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
Abstract base class for cyclic ACMI coupled interfaces.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
virtual void updateCoeffs()
Update the coefficients associated with the patch field.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
virtual void manipulateMatrix(fvMatrix< Type > &matrix)
Manipulate matrix.
A class for managing temporary objects.
dimensionSet transform(const dimensionSet &)