42 sendBuf_(procInterface_.
faceCells().size()),
43 receiveBuf_(procInterface_.
faceCells().size()),
44 scalarSendBuf_(procInterface_.
faceCells().size()),
45 scalarReceiveBuf_(procInterface_.
faceCells().size()),
46 outstandingSendRequest_(-1),
47 outstandingRecvRequest_(-1)
58 procInterface_(ptf.procInterface_),
60 sendBuf_(procInterface_.
faceCells().size()),
61 receiveBuf_(procInterface_.
faceCells().size()),
62 scalarSendBuf_(procInterface_.
faceCells().size()),
63 scalarReceiveBuf_(procInterface_.
faceCells().size()),
64 outstandingSendRequest_(-1),
65 outstandingRecvRequest_(-1)
76 this->outstandingSendRequest_ >= 0
85 this->outstandingSendRequest_ = -1;
89 this->outstandingRecvRequest_ >= 0
98 this->outstandingRecvRequest_ = -1;
120 scalarSendBuf_.setSize(fc.
size());
123 scalarSendBuf_[i] = psiInternal[fc[i]];
130 <<
" outstanding request."
135 scalarReceiveBuf_.setSize(scalarSendBuf_.size());
141 procInterface_.neighbProcNo(),
142 scalarReceiveBuf_.data_bytes(),
143 scalarReceiveBuf_.size_bytes(),
144 procInterface_.tag(),
145 procInterface_.comm()
153 procInterface_.neighbProcNo(),
154 scalarSendBuf_.cdata_bytes(),
155 scalarSendBuf_.size_bytes(),
156 procInterface_.tag(),
157 procInterface_.comm()
163 ).updatedMatrix() =
false;
182 result[
faceCells[elemI]] += coeffs[elemI]*vals[elemI];
189 result[
faceCells[elemI]] -= coeffs[elemI]*vals[elemI];
208 if (this->updatedMatrix())
215 outstandingRecvRequest_ >= 0
222 outstandingSendRequest_ = -1;
223 outstandingRecvRequest_ = -1;
227 addToInternalField(result, !
add, coeffs, scalarReceiveBuf_);
232 ).updatedMatrix() =
true;
Generic templated field type.
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
virtual bool read()
Re-read model coefficients if they have changed.
void size(const label n)
Older name for setAddressableSize.
commsTypes
Types of communications.
@ nonBlocking
"nonBlocking"
static label nRequests()
Get number of outstanding requests.
static bool finishedRequest(const label i)
Non-blocking comms: has request i finished?
static void waitRequest(const label i)
Wait until request i has finished.
Smooth ATC in cells next to a set of patches supplied by type.
virtual bool write()
Write the output fields.
The class contains the addressing required by the lduMatrix: upper, lower and losort.
virtual const labelUList & patchAddr(const label patchNo) const =0
Return patch to internal addressing given patch number.
A lduProcessorField type bypassing coupledFvPatchField and holding a reference to the Field<Type>.
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.
void addToInternalField(solveScalarField &result, const bool add, const scalarField &coeffs, const solveScalarField &vals) const
virtual bool ready() const
Is all data available.
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
An abstract base class for implicitly-coupled interfaces e.g. processor and cyclic patches.
Concrete implementation of processor interface. Used to temporarily store settings.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
To & refCast(From &r)
Reference type cast template function.
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
errorManip< error > abort(error &err)
interfaceProperties interface(alpha1, U, thermo->transportPropertiesDict())
#define forAll(list, i)
Loop across all elements in list.