61 if (!isType<cyclicAMIPointPatch>(
p))
64 <<
"patch " << this->
patch().
index() <<
" not cyclicAMI type. " 65 <<
"Patch type = " << p.type()
74 const cyclicAMIPointPatchField<Type>& ptf,
76 const DimensionedField<Type, pointMesh>& iF,
77 const pointPatchFieldMapper& mapper
80 coupledPointPatchField<Type>(ptf,
p, iF, mapper),
81 cyclicAMIPatch_(
refCast<const cyclicAMIPointPatch>(
p)),
85 if (!isType<cyclicAMIPointPatch>(this->
patch()))
88 <<
"Field type does not correspond to patch type for patch " 90 <<
"Field type: " << typeName <<
endl 91 <<
"Patch type: " << this->
patch().type()
100 const cyclicAMIPointPatchField<Type>& ptf,
101 const DimensionedField<Type, pointMesh>& iF
104 coupledPointPatchField<Type>(ptf, iF),
105 cyclicAMIPatch_(ptf.cyclicAMIPatch_),
116 return cyclicAMIPatch_.coupled();
127 if (cyclicAMIPatch_.cyclicAMIPatch().owner())
138 refCast<const GeometricField<Type, pointPatchField, pointMesh>>
140 this->internalField()
144 refCast<const cyclicAMIPointPatchField<Type>>
146 fld.boundaryField()[nbrPatch.
index()]
150 Field<Type> ptFld(this->patchInternalField(pField));
151 Field<Type> nbrPtFld(nbr.patchInternalField(pField));
156 const tensor& forwardT = this->forwardT()[0];
157 const tensor& reverseT = this->reverseT()[0];
167 Field<Type> nbrFcFld(nbrPpi().pointToFaceInterpolate(nbrPtFld));
170 if (cyclicAMIPatch_.cyclicAMIPatch().applyLowWeightCorrection())
172 Field<Type> fcFld(ppi().pointToFaceInterpolate(ptFld));
175 cyclicAMIPatch_.cyclicAMIPatch().interpolate
184 cyclicAMIPatch_.cyclicAMIPatch().interpolate(nbrFcFld);
188 this->addToInternalField
191 ppi().faceToPointInterpolate(nbrFcFld)()
197 Field<Type> fcFld(ppi().pointToFaceInterpolate(ptFld));
200 if (cyclicAMIPatch_.cyclicAMIPatch().applyLowWeightCorrection())
202 Field<Type> nbrFcFld(nbrPpi().pointToFaceInterpolate(nbrPtFld));
205 cyclicAMIPatch_.cyclicAMIPatch().neighbPatch().interpolate
214 cyclicAMIPatch_.cyclicAMIPatch().neighbPatch().interpolate
221 nbr.addToInternalField
224 nbrPpi().faceToPointInterpolate(fcFld)()
errorManipArg< error, int > exit(error &err, const int errNo=1)
const pointPatch & patch() const noexcept
Return the patch.
commsTypes
Communications types.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
cyclicAMIPointPatchField(const pointPatch &, const DimensionedField< Type, pointMesh > &)
Construct from patch and internal field.
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
Ostream & endl(Ostream &os)
Add newline and flush stream.
virtual bool coupled() const
Return true if coupled. Note that the underlying patch is not coupled() - the points don't align...
virtual label index() const
Return the index of this patch in the pointBoundaryMesh.
virtual void swapAddSeparated(const Pstream::commsTypes commsType, Field< Type > &) const
Complete swap of patch point values and add to local values.
Cyclic AMI front and back plane patch field.
Generic templated field type.
refinementData transform(const tensor &, const refinementData val)
No-op rotational transform for base types.
const cyclicAMIPointPatch & neighbPatch() const
Return neighbour point patch.
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< ' ';}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< ' ';}gmvFile<< nl;for(const word &name :lagrangianScalarNames){ IOField< scalar > fld(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Basic pointPatch represents a set of points from the mesh.
A Coupled boundary condition for pointField.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
label index() const noexcept
The index of this patch in the boundaryMesh.
Cyclic AMI point patch - place holder only.
Tensor of scalars, i.e. Tensor<scalar>.
IOerror FatalIOError
Error stream (stdout output on all processes), with additional 'FOAM FATAL IO ERROR' header text and ...