41 processorGAMGInterfaceField,
47 processorGAMGInterfaceField,
55 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
68 const auto&
p = refCast<const processorLduInterfaceField>(fineInterface);
70 doTransform_ =
p.doTransform();
75 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
78 const bool doTransform,
84 doTransform_(doTransform),
105 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
114 scalarRecvBuf_.resize_nocopy(scalarSendBuf_.size());
120 procInterface_.neighbProcNo(),
121 scalarRecvBuf_.data_bytes(),
122 scalarRecvBuf_.size_bytes(),
123 procInterface_.tag(),
131 procInterface_.neighbProcNo(),
132 scalarSendBuf_.cdata_bytes(),
133 scalarSendBuf_.size_bytes(),
134 procInterface_.tag(),
140 procInterface_.compressedSend(commsType, scalarSendBuf_);
143 this->updatedMatrix(
false);
151 const lduAddressing& lduAddr,
159 if (this->updatedMatrix())
181 scalarRecvBuf_.resize_nocopy(coeffs.size());
182 procInterface_.compressedReceive(commsType, scalarRecvBuf_);
187 transformCoupleField(scalarRecvBuf_, cmpt);
190 addToInternalField(result, !
add, faceCells, coeffs, scalarRecvBuf_);
192 this->updatedMatrix(
true);
static bool floatTransfer
Should compact transfer be used in which floats replace doubles reducing the bandwidth requirement at...
static label 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.
Field< solveScalar > solveScalarField
commsTypes
Communications types.
static label nRequests() noexcept
Number of outstanding requests (on the internal list of requests)
Type & refCast(U &obj)
A dynamic_cast (for references). Generates a FatalError on failed casts and uses the virtual type() m...
static bool finishedRequest(const label i)
Non-blocking comms: has request i finished? Corresponds to MPI_Test()
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.
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
defineTypeNameAndDebug(combustionModel, 0)
GAMG agglomerated processor interface.
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
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.
"nonBlocking" : (MPI_Isend, MPI_Irecv)
Abstract base class for GAMG agglomerated interface fields.
The class contains the addressing required by the lduMatrix: upper, lower and losort.
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()