40 cyclicACMIPatch_(refCast<const cyclicACMIFvPatch>(p))
55 cyclicACMIPatch_(refCast<const cyclicACMIFvPatch>(p))
57 if (!isA<cyclicACMIFvPatch>(this->patch()))
60 <<
"' not constraint type '" << typeName <<
"'" 61 <<
"\n for patch " << p.name()
62 <<
" of field " << this->internalField().name()
63 <<
" in file " << this->internalField().objectPath()
79 cyclicACMIPatch_(refCast<const cyclicACMIFvPatch>(p))
81 if (!isA<cyclicACMIFvPatch>(p))
86 ) <<
" patch type '" << p.type()
87 <<
"' not constraint type '" << typeName <<
"'" 88 <<
"\n for patch " << p.name()
89 <<
" of field " << this->internalField().name()
90 <<
" in file " << this->internalField().objectPath()
94 if (!dict.
found(
"value") && this->coupled())
96 this->evaluate(Pstream::blocking);
109 cyclicACMIPatch_(ptf.cyclicACMIPatch_)
122 cyclicACMIPatch_(ptf.cyclicACMIPatch_)
131 return cyclicACMIPatch_.coupled();
139 const Field<Type>& iField = this->primitiveField();
143 cyclicACMIPatch_.interpolate
169 this->primitiveField()
172 return refCast<const cyclicACMIFvPatchField<Type>>
186 this->primitiveField()
189 return fld.
boundaryField()[cyclicACMIPatch_.nonOverlapPatchID()];
213 transformCoupleField(pnf, cmpt);
215 const labelUList& faceCells = cyclicACMIPatch_.faceCells();
217 pnf = cyclicACMIPatch_.interpolate(pnf);
221 result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
244 transformCoupleField(pnf);
246 const labelUList& faceCells = cyclicACMIPatch_.faceCells();
248 pnf = cyclicACMIPatch_.interpolate(pnf);
252 result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
263 const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
282 const scalarField& mask = cyclicACMIPatch_.cyclicACMIPatch().mask();
292 this->writeEntry(
"value", os);
Cyclic patch for Arbitrarily Coupled Mesh Interface (ACMI)
#define forAll(list, i)
Loop across all elements in list.
errorManipArg< error, int > exit(error &err, const int errNo=1)
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.
commsTypes
Types of communications.
virtual const cyclicACMIPolyPatch & neighbPatch() const
Return a reference to the neighbour patch.
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...
const fvPatchField< Type > & nonOverlapPatchField() const
Return reference to non-overlapping patchField.
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 Boundary & boundaryField() const
Return const-reference to the boundary field.
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.
bool found(const word &, bool recursive=false, bool patternMatch=true) const
Search dictionary for given keyword.
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.
virtual void write(Ostream &os) const
Write.
virtual tmp< Field< Type > > patchNeighbourField() const
Return neighbour coupled internal cell data.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
const labelUList & faceCells() const
Return face-cell addressing.
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.
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.
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
virtual bool coupled() const
Return true if coupled. Note that the underlying patch.
const cyclicACMIFvPatchField< Type > & neighbourPatchField() const
Return reference to neighbour patchField.
dimensionSet transform(const dimensionSet &)