45 this->patch().patchInternalField(psiInternal, scalarSendBuf_);
54 if (debug && !this->ready())
57 <<
"On patch " << procPatch_.name()
58 <<
" outstanding request." 63 scalarReceiveBuf_.setSize(scalarSendBuf_.size());
68 procPatch_.neighbProcNo(),
69 reinterpret_cast<char*
>(scalarReceiveBuf_.begin()),
70 scalarReceiveBuf_.byteSize(),
79 procPatch_.neighbProcNo(),
80 reinterpret_cast<const char*
>(scalarSendBuf_.begin()),
81 scalarSendBuf_.byteSize(),
88 procPatch_.compressedSend(commsType, scalarSendBuf_);
105 if (this->updatedMatrix())
110 const labelUList& faceCells = this->patch().faceCells();
121 outstandingRecvRequest_ >= 0
128 outstandingSendRequest_ = -1;
129 outstandingRecvRequest_ = -1;
135 result[faceCells[elemI]] -= coeffs[elemI]*scalarReceiveBuf_[elemI];
142 procPatch_.compressedReceive<scalar>(commsType, this->size())()
147 result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
static bool floatTransfer
Should compact transfer be used in which floats replace doubles.
#define forAll(list, i)
Loop across all elements in list.
bool updatedMatrix() const
Whether matrix has been updated.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
commsTypes
Types of communications.
static label nRequests()
Get number of outstanding requests.
virtual void initInterfaceMatrixUpdate(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Initialise neighbour matrix update.
errorManip< error > abort(error &err)
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
static label read(const commsTypes commsType, const int fromProcNo, char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label communicator=0)
Read into given buffer from given processor and return the.
static bool write(const commsTypes commsType, const int toProcNo, const char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label communicator=0)
Write given buffer to given processor.
virtual void updateInterfaceMatrix(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Update result field based on interface functionality.
This boundary condition enables processor communication across patches.
static void waitRequest(const label i)
Wait until request i has finished.