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),
105 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
110 scalarReceiveBuf_.setSize(scalarSendBuf_.size());
115 procInterface_.neighbProcNo(),
116 reinterpret_cast<char*
>(scalarReceiveBuf_.begin()),
117 scalarReceiveBuf_.byteSize(),
118 procInterface_.tag(),
126 procInterface_.neighbProcNo(),
127 reinterpret_cast<const char*
>(scalarSendBuf_.begin()),
128 scalarSendBuf_.byteSize(),
129 procInterface_.tag(),
135 procInterface_.compressedSend(commsType, scalarSendBuf_);
161 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.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
commsTypes
Types of communications.
void size(const label)
Override size to be inconsistent with allocated storage.
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.
bool updatedMatrix() const
Whether matrix has been updated.
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 warnComm
Debugging: warn for use of any communicator differing from warnComm.
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.
virtual void initInterfaceMatrixUpdate(scalarField &result, const scalarField &psiInternal, const scalarField &coeffs, const direction cmpt, const Pstream::commsTypes commsType) const
Initialise neighbour matrix update.
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.