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(),
143 procInterface_.tag(),
151 procInterface_.neighbProcNo(),
153 procInterface_.tag(),
159 procInterface_.compressedSend(commsType, scalarSendBuf_);
162 this->updatedMatrix(
false);
170 const lduAddressing& lduAddr,
178 if (this->updatedMatrix())
200 scalarRecvBuf_.resize_nocopy(this->size());
201 procInterface_.compressedReceive(commsType, scalarRecvBuf_);
206 transformCoupleField(scalarRecvBuf_, cmpt);
209 addToInternalField(result, !
add,
faceCells, coeffs, scalarRecvBuf_);
211 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()
static std::streamsize read(const UPstream::commsTypes commsType, const int fromProcNo, Type *buffer, std::streamsize count, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm, UPstream::Request *req=nullptr)
Receive buffer contents (contiguous types) from given processor.
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.
static bool write(const UPstream::commsTypes commsType, const int toProcNo, const Type *buffer, std::streamsize count, const int tag=UPstream::msgType(), const int communicator=UPstream::worldComm, UPstream::Request *req=nullptr, const UPstream::sendModes sendMode=UPstream::sendModes::normal)
Write buffer contents (contiguous types only) to given processor.
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.
::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)