38 processorGAMGInterfaceField,
44 processorGAMGInterfaceField,
52 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
59 procInterface_(refCast<const processorGAMGInterface>(GAMGCp)),
64 refCast<const processorLduInterfaceField>(fineInterface);
71 Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
74 const bool doTransform,
79 procInterface_(refCast<const processorGAMGInterface>(GAMGCp)),
80 doTransform_(doTransform),
102 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
111 scalarReceiveBuf_.setSize(scalarSendBuf_.size());
116 procInterface_.neighbProcNo(),
117 reinterpret_cast<char*
>(scalarReceiveBuf_.begin()),
118 scalarReceiveBuf_.byteSize(),
119 procInterface_.tag(),
127 procInterface_.neighbProcNo(),
128 reinterpret_cast<const char*
>(scalarSendBuf_.begin()),
129 scalarSendBuf_.byteSize(),
130 procInterface_.tag(),
136 procInterface_.compressedSend(commsType, scalarSendBuf_);
157 const labelUList& faceCells = procInterface_.faceCells();
168 outstandingRecvRequest_ >= 0
175 outstandingSendRequest_ = -1;
176 outstandingRecvRequest_ = -1;
181 transformCoupleField(scalarReceiveBuf_, cmpt);
186 result[faceCells[elemI]] -= coeffs[elemI]*scalarReceiveBuf_[elemI];
193 procInterface_.compressedReceive<scalar>(commsType, coeffs.
size())
195 transformCoupleField(pnf, cmpt);
199 result[faceCells[elemI]] -= coeffs[elemI]*pnf[elemI];
static bool floatTransfer
Should compact transfer be used in which floats replace doubles.
virtual bool doTransform() const =0
Is the transform required.
#define forAll(list, i)
Loop across all elements in list.
bool updatedMatrix() const
Whether matrix has been updated.
commsTypes
Types of communications.
void size(const label)
Override size to be inconsistent with allocated storage.
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.
static label nRequests()
Get number of outstanding requests.
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.
virtual int rank() const =0
Return rank of component for transform.
Abstract base class for processor coupled interfaces.
virtual void initInterfaceMatrixUpdate(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Initialise neighbour matrix update.
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.
addToRunTimeSelectionTable(ensightPart, ensightPartCells, istream)
defineTypeNameAndDebug(combustionModel, 0)
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.
Abstract base class for GAMG agglomerated interfaces.
virtual ~processorGAMGInterfaceField()
Destructor.
Abstract base class for GAMG agglomerated interface fields.
GAMG agglomerated processor interface field.
static void waitRequest(const label i)
Wait until request i has finished.