45 this->patch().patchInternalField(psiInternal, scalarSendBuf_);
50 if (debug && !this->ready())
53 <<
"On patch " << procPatch_.name()
54 <<
" outstanding request." 59 scalarReceiveBuf_.setSize(scalarSendBuf_.size());
64 procPatch_.neighbProcNo(),
65 reinterpret_cast<char*
>(scalarReceiveBuf_.begin()),
66 scalarReceiveBuf_.byteSize(),
75 procPatch_.neighbProcNo(),
76 reinterpret_cast<const char*
>(scalarSendBuf_.begin()),
77 scalarSendBuf_.byteSize(),
84 procPatch_.compressedSend(commsType, scalarSendBuf_);
101 if (this->updatedMatrix())
106 const labelUList& faceCells = this->patch().faceCells();
113 outstandingRecvRequest_ >= 0
120 outstandingSendRequest_ = -1;
121 outstandingRecvRequest_ = -1;
127 result[faceCells[elemI]] -= coeffs[elemI]*scalarReceiveBuf_[elemI];
134 procPatch_.compressedReceive<scalar>(commsType, this->size())()
139 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.
#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.
bool updatedMatrix() const
Whether matrix has been updated.
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.
This boundary condition enables processor communication across patches.
static void waitRequest(const label i)
Wait until request i has finished.
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.