41 processorGAMGInterfaceField,
47 processorGAMGInterfaceField,
55 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
67 refCast<const processorLduInterfaceField>(fineInterface);
69 doTransform_ =
p.doTransform();
74 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
77 const bool doTransform,
83 doTransform_(doTransform),
102 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
111 scalarReceiveBuf_.setSize(scalarSendBuf_.size());
116 procInterface_.neighbProcNo(),
117 scalarReceiveBuf_.data_bytes(),
118 scalarReceiveBuf_.size_bytes(),
119 procInterface_.tag(),
127 procInterface_.neighbProcNo(),
128 scalarSendBuf_.cdata_bytes(),
129 scalarSendBuf_.size_bytes(),
130 procInterface_.tag(),
136 procInterface_.compressedSend(commsType, scalarSendBuf_);
147 const lduAddressing& lduAddr,
171 outstandingRecvRequest_ >= 0
178 outstandingSendRequest_ = -1;
179 outstandingRecvRequest_ = -1;
184 transformCoupleField(scalarReceiveBuf_, cmpt);
187 addToInternalField(result, !
add, faceCells, coeffs, scalarReceiveBuf_);
193 procInterface_.compressedReceive<solveScalar>
199 transformCoupleField(pnf, cmpt);
201 addToInternalField(result, !
add, faceCells, coeffs, pnf);
204 const_cast<processorGAMGInterfaceField&
>(*this).updatedMatrix() =
true;
static bool floatTransfer
Should compact transfer be used in which floats replace doubles reducing the bandwidth requirement at...
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)
Write buffer contents to given processor.
bool updatedMatrix() const
Whether matrix has been updated.
Field< solveScalar > solveScalarField
commsTypes
Types of communications.
static label nRequests() noexcept
Number of outstanding requests.
Type & refCast(U &obj)
A dynamic_cast (for references) that generates FatalError on failed casts, uses the virtual type() me...
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.
Abstract base class for processor coupled interfaces.
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.
"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.
GAMG agglomerated processor interface field.
static label read(const commsTypes commsType, const int fromProcNo, char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm)
Read buffer contents from given processor.
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.