Go to the documentation of this file.
41 cyclicPatch_(refCast<const cyclicFaPatch>(
p))
55 cyclicPatch_(refCast<const cyclicFaPatch>(
p))
57 if (!isA<cyclicFaPatch>(this->
patch()))
60 <<
"\n patch type '" << p.type()
61 <<
"' not constraint type '" << typeName <<
"'"
62 <<
"\n for patch " <<
p.name()
63 <<
" of field " << this->internalField().name()
64 <<
" in file " << this->internalField().objectPath()
79 cyclicPatch_(refCast<const cyclicFaPatch>(
p,
dict))
81 if (!isA<cyclicFaPatch>(
p))
84 <<
"\n patch type '" <<
p.type()
85 <<
"' not constraint type '" << typeName <<
"'"
86 <<
"\n for patch " <<
p.name()
87 <<
" of field " << this->internalField().name()
88 <<
" in file " << this->internalField().objectPath()
92 this->
evaluate(Pstream::commsTypes::blocking);
104 cyclicPatch_(ptf.cyclicPatch_)
116 cyclicPatch_(ptf.cyclicPatch_)
126 const Field<Type>& iField = this->primitiveField();
132 const label sizeby2 = this->size()/2;
136 for (label facei=0; facei<sizeby2; ++facei)
140 forwardT()[0], iField[
faceCells[facei + sizeby2]]
151 for (label facei=0; facei<sizeby2; ++facei)
153 pnf[facei] = iField[
faceCells[facei + sizeby2]];
154 pnf[facei + sizeby2] = iField[
faceCells[facei]];
177 const label sizeby2 = this->size()/2;
180 for (label facei = 0; facei < sizeby2; ++facei)
182 pnf[facei] = psiInternal[
faceCells[facei + sizeby2]];
183 pnf[facei + sizeby2] = psiInternal[
faceCells[facei]];
187 transformCoupleField(pnf, cmpt);
194 result[
faceCells[elemI]] += coeffs[elemI]*pnf[elemI];
201 result[
faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
221 const label sizeby2 = this->size()/2;
224 for (label facei = 0; facei < sizeby2; ++facei)
226 pnf[facei] = psiInternal[
faceCells[facei + sizeby2]];
227 pnf[facei + sizeby2] = psiInternal[
faceCells[facei]];
235 result[
faceCells[elemI]] += coeffs[elemI]*pnf[elemI];
242 result[
faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
The class contains the addressing required by the lduMatrix: upper, lower and losort.
A class for managing temporary objects.
dimensionSet transform(const dimensionSet &ds)
Return the argument; transformations do not change the dimensions.
#define forAll(list, i)
Loop across all elements in list.
cyclicFaPatchField(const faPatch &, const DimensionedField< Type, areaMesh > &)
Construct from patch and internal field.
Generic templated field type.
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
errorManipArg< error, int > exit(error &err, const int errNo=1)
commsTypes
Types of communications.
Author Zeljko Tukovic, FMENA Hrvoje Jasak, Wikki Ltd.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
virtual tmp< Field< Type > > patchNeighbourField() const
Return neighbour coupled given internal cell data.
Abstract base class for cyclic coupled interfaces.
const std::string patch
OpenFOAM patch number as a std::string.
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
Foam::cyclicFaPatchField.
Finite area patch class. Used for 2-D non-Euclidian finite area method.
Smooth ATC in cells next to a set of patches supplied by type.
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.
Field with dimensions and associated with geometry type GeoMesh which is used to size the field and a...
string evaluate(label fieldWidth, const std::string &s, size_t pos=0, size_t len=std::string::npos)
String evaluation with specified (positive, non-zero) field width.