41 cyclicAMIGAMGInterfaceField,
47 cyclicAMIGAMGInterfaceField,
53 cyclicAMIGAMGInterfaceField,
61 Foam::cyclicAMIGAMGInterfaceField::cyclicAMIGAMGInterfaceField
75 refCast<const cyclicAMILduInterfaceField>(fineInterface);
77 doTransform_ =
p.doTransform();
82 Foam::cyclicAMIGAMGInterfaceField::cyclicAMIGAMGInterfaceField
85 const bool doTransform,
91 doTransform_(doTransform),
98 Foam::cyclicAMIGAMGInterfaceField::cyclicAMIGAMGInterfaceField
113 Foam::cyclicAMIGAMGInterfaceField::cyclicAMIGAMGInterfaceField
127 const auto&
p = refCast<const cyclicAMILduInterfaceField>(
local);
129 doTransform_ =
p.doTransform();
142 recvRequests_.start(),
147 recvRequests_.clear();
153 sendRequests_.start(),
158 sendRequests_.clear();
172 const lduAddressing& lduAddr,
182 cyclicAMIInterface_.owner()
183 ? cyclicAMIInterface_.AMI()
184 : cyclicAMIInterface_.neighbPatch().AMI()
187 if (AMI.distributed())
201 <<
"Can only evaluate distributed AMI with nonBlocking" 207 lduAddr.patchAddr(cyclicAMIInterface_.neighbPatchID());
212 transformCoupleField(pnf, cmpt);
216 cyclicAMIInterface_.owner()
241 const lduAddressing& lduAddr,
253 cyclicAMIInterface_.owner()
254 ? cyclicAMIInterface_.AMI()
255 : cyclicAMIInterface_.neighbPatch().AMI()
259 if (AMI.applyLowWeightCorrection())
272 if (AMI.distributed())
277 <<
"Can only evaluate distributed AMI with nonBlocking" 283 cyclicAMIInterface_.owner()
291 map.receive(recvRequests_, scalarRecvBufs_, work);
296 cyclicAMIInterface_.owner(),
303 this->addToInternalField(result, !
add, faceCells, coeffs, pnf);
309 lduAddr.patchAddr(cyclicAMIInterface_.neighbPatchID());
314 transformCoupleField(work, cmpt);
319 cyclicAMIInterface_.owner(),
326 this->addToInternalField(result, !
add,
faceCells, coeffs, pnf);
errorManipArg< error, int > exit(error &err, const int errNo=1)
GAMG agglomerated cyclic AMI interface.
Field< solveScalar > solveScalarField
commsTypes
Communications types.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Type & refCast(U &obj)
A dynamic_cast (for references). Generates a FatalError on failed casts and uses the virtual type() m...
label readLabel(const char *buf)
Parse entire buffer as a label, skipping leading/trailing whitespace.
Smooth ATC in cells next to a set of patches supplied by type.
virtual void initInterfaceMatrixUpdate(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
Initialise neighbour matrix update.
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
Macros for easy insertion into run-time selection tables.
UList< label > labelUList
A UList of labels.
static label commWarn(const label communicator) noexcept
Alter communicator debugging setting. Warns for use of any communicator differing from specified...
Abstract base class for cyclic AMI coupled interfaces.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
A list of pointers to objects of type <T>, without allocation/deallocation management of the pointers...
virtual bool ready() const
Are all (receive) data available?
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
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.
OBJstream os(runTime.globalPath()/outputName)
defineTypeNameAndDebug(combustionModel, 0)
Abstract base class for GAMG agglomerated interfaces.
::Foam::direction rank(const expressions::valueTypeCode) noexcept
The vector-space rank associated with given valueTypeCode.
"nonBlocking" : (MPI_Isend, MPI_Irecv)
Abstract base class for GAMG agglomerated interface fields.
List< label > labelList
A List of labels.
virtual void write(Ostream &) const
Write to stream.
bool readBool(Istream &is)
Read bool from stream using Foam::Switch(Istream&)
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)
static bool finishedRequests(const label pos, label len=-1)
Non-blocking comms: have all requests (from position onwards) finished? Corresponds to MPI_Testall() ...
static constexpr const zero Zero
Global zero (0)