41 procInterface_(refCast<const lduPrimitiveProcessorInterface>(
interface)),
43 receiveBuf_(
interface.faceCells().size()),
44 scalarSendBuf_(
interface.faceCells().size()),
45 scalarReceiveBuf_(
interface.faceCells().size()),
46 outstandingSendRequest_(-1),
47 outstandingRecvRequest_(-1)
59 sendBuf_(procInterface_.faceCells().size()),
60 receiveBuf_(procInterface_.faceCells().size()),
61 scalarSendBuf_(procInterface_.faceCells().size()),
62 scalarReceiveBuf_(procInterface_.faceCells().size()),
63 outstandingSendRequest_(-1),
64 outstandingRecvRequest_(-1)
78 sendBuf_(procInterface_.faceCells().size()),
79 receiveBuf_(procInterface_.faceCells().size()),
80 scalarSendBuf_(procInterface_.faceCells().size()),
81 scalarReceiveBuf_(procInterface_.faceCells().size()),
82 outstandingSendRequest_(-1),
83 outstandingRecvRequest_(-1)
94 this->outstandingSendRequest_ >= 0
95 && this->outstandingSendRequest_ < Pstream::nRequests()
98 if (!UPstream::finishedRequest(this->outstandingSendRequest_))
103 this->outstandingSendRequest_ = -1;
107 this->outstandingRecvRequest_ >= 0
108 && this->outstandingRecvRequest_ < Pstream::nRequests()
111 if (!UPstream::finishedRequest(this->outstandingRecvRequest_))
116 this->outstandingRecvRequest_ = -1;
129 <<
"On patch of size " << procInterface_.faceCells().size()
130 <<
" between proc " << procInterface_.myProcNo()
131 <<
" and " << procInterface_.neighbProcNo()
132 <<
" outstanding request."
145 if (Pstream::parRun())
150 <<
"Invalid for non-contiguous data types"
158 const labelList& fc = procInterface_.faceCells();
162 sendBuf_[i] = iF[fc[i]];
167 this->
setSize(sendBuf_.size());
168 outstandingRecvRequest_ = UPstream::nRequests();
171 Pstream::commsTypes::nonBlocking,
172 procInterface_.neighbProcNo(),
175 procInterface_.tag(),
176 procInterface_.comm()
179 outstandingSendRequest_ = UPstream::nRequests();
182 Pstream::commsTypes::nonBlocking,
183 procInterface_.neighbProcNo(),
184 sendBuf_.cdata_bytes(),
185 sendBuf_.size_bytes(),
186 procInterface_.tag(),
187 procInterface_.comm()
199 if (Pstream::parRun())
203 outstandingRecvRequest_ >= 0
204 && outstandingRecvRequest_ < Pstream::nRequests()
207 UPstream::waitRequest(outstandingRecvRequest_);
209 outstandingSendRequest_ = -1;
210 outstandingRecvRequest_ = -1;
232 scalarSendBuf_.setSize(fc.size());
235 scalarSendBuf_[i] = psiInternal[fc[i]];
242 <<
" outstanding request."
248 scalarReceiveBuf_.setSize(scalarSendBuf_.size());
249 outstandingRecvRequest_ = UPstream::nRequests();
253 Pstream::commsTypes::nonBlocking,
254 procInterface_.neighbProcNo(),
255 scalarReceiveBuf_.data_bytes(),
256 scalarReceiveBuf_.size_bytes(),
257 procInterface_.tag(),
258 procInterface_.comm()
261 outstandingSendRequest_ = UPstream::nRequests();
265 Pstream::commsTypes::nonBlocking,
266 procInterface_.neighbProcNo(),
267 scalarSendBuf_.cdata_bytes(),
268 scalarSendBuf_.size_bytes(),
269 procInterface_.tag(),
270 procInterface_.comm()
276 ).updatedMatrix() =
false;
295 result[
faceCells[elemI]] += coeffs[elemI]*vals[elemI];
302 result[
faceCells[elemI]] -= coeffs[elemI]*vals[elemI];
321 if (this->updatedMatrix())
329 outstandingRecvRequest_ >= 0
330 && outstandingRecvRequest_ < Pstream::nRequests()
333 UPstream::waitRequest(outstandingRecvRequest_);
336 outstandingSendRequest_ = -1;
337 outstandingRecvRequest_ = -1;
341 addToInternalField(result, !
add, coeffs, scalarReceiveBuf_);
346 ).updatedMatrix() =
true;