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(),
152 scalarRecvBuf_.data_bytes(),
153 scalarRecvBuf_.size_bytes(),
154 procInterface_.tag(),
162 procInterface_.neighbProcNo(),
163 scalarSendBuf_.cdata_bytes(),
164 scalarSendBuf_.size_bytes(),
165 procInterface_.tag(),
171 procInterface_.compressedSend(commsType, scalarSendBuf_);
174 this->updatedMatrix(
false);
182 const lduAddressing& lduAddr,
190 if (this->updatedMatrix())
212 scalarRecvBuf_.resize_nocopy(coeffs.size());
213 procInterface_.compressedReceive(commsType, scalarRecvBuf_);
218 transformCoupleField(scalarRecvBuf_, cmpt);
221 addToInternalField(result, !
add,
faceCells, coeffs, scalarRecvBuf_);
223 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()
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.
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.
static bool write(const UPstream::commsTypes commsType, const int toProcNo, const char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, UPstream::Request *req=nullptr, const UPstream::sendModes sendMode=UPstream::sendModes::normal)
Write buffer contents to given processor.
::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)
static std::streamsize read(const UPstream::commsTypes commsType, const int fromProcNo, char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, UPstream::Request *req=nullptr)
Read buffer contents from given processor.