40 calculatedProcessorGAMGInterfaceField,
46 calculatedProcessorGAMGInterfaceField,
54 Foam::calculatedProcessorGAMGInterfaceField::
55 calculatedProcessorGAMGInterfaceField
68 const auto&
p = refCast<const processorLduInterfaceField>(fineInterface);
70 doTransform_ =
p.doTransform();
75 Foam::calculatedProcessorGAMGInterfaceField::
76 calculatedProcessorGAMGInterfaceField
79 const bool doTransform,
85 doTransform_(doTransform),
106 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
115 scalarRecvBuf_.resize_nocopy(scalarSendBuf_.size());
121 procInterface_.neighbProcNo(),
122 scalarRecvBuf_.data_bytes(),
123 scalarRecvBuf_.size_bytes(),
124 procInterface_.tag(),
132 procInterface_.neighbProcNo(),
133 scalarSendBuf_.cdata_bytes(),
134 scalarSendBuf_.size_bytes(),
135 procInterface_.tag(),
141 procInterface_.compressedSend(commsType, scalarSendBuf_);
144 this->updatedMatrix(
false);
152 const lduAddressing& lduAddr,
160 if (this->updatedMatrix())
182 scalarRecvBuf_.resize_nocopy(this->size());
183 procInterface_.compressedReceive(commsType, scalarRecvBuf_);
188 transformCoupleField(scalarRecvBuf_, cmpt);
191 addToInternalField(result, !
add, faceCells, coeffs, scalarRecvBuf_);
193 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.
GAMG agglomerated processor interface.
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
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.
defineTypeNameAndDebug(combustionModel, 0)
addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary)
Abstract base class for GAMG agglomerated interfaces.
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 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.
static void waitRequest(const label i)
Wait until request i has finished. Corresponds to MPI_Wait()