40 calculatedProcessorGAMGInterfaceField,
46 calculatedProcessorGAMGInterfaceField,
52 calculatedProcessorGAMGInterfaceField,
60 Foam::calculatedProcessorGAMGInterfaceField::
61 calculatedProcessorGAMGInterfaceField
74 const auto&
p = refCast<const processorLduInterfaceField>(fineInterface);
76 doTransform_ =
p.doTransform();
81 Foam::calculatedProcessorGAMGInterfaceField::
82 calculatedProcessorGAMGInterfaceField
85 const bool doTransform,
91 doTransform_(doTransform),
98 Foam::calculatedProcessorGAMGInterfaceField::
99 calculatedProcessorGAMGInterfaceField
126 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
135 scalarRecvBuf_.resize_nocopy(scalarSendBuf_.size());
141 procInterface_.neighbProcNo(),
142 scalarRecvBuf_.data_bytes(),
143 scalarRecvBuf_.size_bytes(),
144 procInterface_.tag(),
152 procInterface_.neighbProcNo(),
153 scalarSendBuf_.cdata_bytes(),
154 scalarSendBuf_.size_bytes(),
155 procInterface_.tag(),
161 procInterface_.compressedSend(commsType, scalarSendBuf_);
164 this->updatedMatrix(
false);
172 const lduAddressing& lduAddr,
180 if (this->updatedMatrix())
202 scalarRecvBuf_.resize_nocopy(this->size());
203 procInterface_.compressedReceive(commsType, scalarRecvBuf_);
208 transformCoupleField(scalarRecvBuf_, cmpt);
211 addToInternalField(result, !
add,
faceCells, coeffs, scalarRecvBuf_);
213 this->updatedMatrix(
true);
static bool floatTransfer
Should compact transfer be used in which floats replace doubles reducing the bandwidth requirement at...
Field< solveScalar > solveScalarField
commsTypes
Communications types.
static label nRequests() noexcept
Number of outstanding requests (on the internal list of requests)
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
Type & refCast(U &obj)
A dynamic_cast (for references) to Type reference.
label readLabel(const char *buf)
Parse entire buffer as a label, skipping leading/trailing whitespace.
static bool finishedRequest(const label i)
Non-blocking comms: has request i finished? Corresponds to MPI_Test()
Smooth ATC in cells next to a set of patches supplied by type.
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.
UList< label > labelUList
A UList of labels.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
GAMG agglomerated processor interface.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
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.
OBJstream os(runTime.globalPath()/outputName)
defineTypeNameAndDebug(combustionModel, 0)
Abstract base class for GAMG agglomerated interfaces.
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.
static bool write(const UPstream::commsTypes commsType, const int toProcNo, const char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, UPstream::Request *req=nullptr, const UPstream::sendModes sendMode=UPstream::sendModes::normal)
Write buffer contents to given processor.
::Foam::direction rank(const expressions::valueTypeCode) noexcept
The vector-space rank associated with given valueTypeCode.
"nonBlocking" (immediate) : (MPI_Isend, MPI_Irecv)
Abstract base class for GAMG agglomerated interface fields.
The class contains the addressing required by the lduMatrix: upper, lower and losort.
virtual void write(Ostream &) const
Write to stream.
static void waitRequest(const label i)
Wait until request i has finished. Corresponds to MPI_Wait()
bool readBool(Istream &is)
Read bool from stream using Foam::Switch(Istream&)
addToRunTimeSelectionTable(functionObject, pointHistory, dictionary)
static std::streamsize read(const UPstream::commsTypes commsType, const int fromProcNo, char *buf, const std::streamsize bufSize, const int tag=UPstream::msgType(), const label comm=UPstream::worldComm, UPstream::Request *req=nullptr)
Read buffer contents from given processor.