41 processorGAMGInterfaceField,
47 processorGAMGInterfaceField,
53 processorGAMGInterfaceField,
61 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
74 const auto&
p = refCast<const processorLduInterfaceField>(fineInterface);
76 doTransform_ =
p.doTransform();
81 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
84 const bool doTransform,
90 doTransform_(doTransform),
97 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
128 const lduAddressing& lduAddr,
136 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
145 scalarRecvBuf_.resize_nocopy(scalarSendBuf_.size());
151 procInterface_.neighbProcNo(),
153 procInterface_.tag(),
161 procInterface_.neighbProcNo(),
163 procInterface_.tag(),
169 procInterface_.compressedSend(commsType, scalarSendBuf_);
172 this->updatedMatrix(
false);
180 const lduAddressing& lduAddr,
188 if (this->updatedMatrix())
210 scalarRecvBuf_.resize_nocopy(coeffs.size());
211 procInterface_.compressedReceive(commsType, scalarRecvBuf_);
216 transformCoupleField(scalarRecvBuf_, cmpt);
219 addToInternalField(result, !
add,
faceCells, coeffs, scalarRecvBuf_);
221 this->updatedMatrix(
true);
static bool floatTransfer
Should compact transfer be used in which floats replace doubles reducing the bandwidth requirement at...
Field< solveScalar > solveScalarField
commsTypes
Communications types.
static label nRequests() noexcept
Number of outstanding requests (on the internal list of requests)
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) to Type reference.
label readLabel(const char *buf)
Parse entire buffer as a label, skipping leading/trailing whitespace.
static bool finishedRequest(const label i)
Non-blocking comms: has request i finished? Corresponds to MPI_Test()
static std::streamsize read(const UPstream::commsTypes commsType, const int fromProcNo, Type *buffer, std::streamsize count, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm, UPstream::Request *req=nullptr)
Receive buffer contents (contiguous types) from given processor.
Smooth ATC in cells next to a set of patches supplied by type.
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.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
static bool write(const UPstream::commsTypes commsType, const int toProcNo, const Type *buffer, std::streamsize count, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm, UPstream::Request *req=nullptr, const UPstream::sendModes sendMode=UPstream::sendModes::normal)
Write buffer contents (contiguous types only) to given processor.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
OBJstream os(runTime.globalPath()/outputName)
defineTypeNameAndDebug(combustionModel, 0)
GAMG agglomerated processor interface.
virtual void write(Ostream &) const
Write to stream.
Abstract base class for GAMG agglomerated interfaces.
::Foam::direction rank(const expressions::valueTypeCode) noexcept
The vector-space rank associated with given valueTypeCode.
"nonBlocking" (immediate) : (MPI_Isend, MPI_Irecv)
Abstract base class for GAMG agglomerated interface fields.
virtual bool ready() const
Are all (receive) data available?
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.
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.
static void waitRequest(const label i)
Wait until request i has finished. Corresponds to MPI_Wait()
bool readBool(Istream &is)
Read bool from stream using Foam::Switch(Istream&)
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)