61Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
76 doTransform_ =
p.doTransform();
81Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
84 const bool doTransform,
97Foam::processorGAMGInterfaceField::processorGAMGInterfaceField
128 const lduAddressing& lduAddr,
136 procInterface_.interfaceInternalField(psiInternal, scalarSendBuf_);
145 scalarRecvBuf_.resize_nocopy(scalarSendBuf_.size());
151 procInterface_.neighbProcNo(),
153 procInterface_.tag(),
161 procInterface_.neighbProcNo(),
163 procInterface_.tag(),
169 procInterface_.compressedSend(commsType, scalarSendBuf_);
172 this->updatedMatrix(
false);
180 const lduAddressing& lduAddr,
188 if (this->updatedMatrix())
210 scalarRecvBuf_.resize_nocopy(coeffs.size());
211 procInterface_.compressedReceive(commsType, scalarRecvBuf_);
216 transformCoupleField(scalarRecvBuf_, cmpt);
Macros for easy insertion into run-time selection tables.
#define addToRunTimeSelectionTable(baseType, thisType, argNames)
Add to construction table with typeName as the key.
Abstract base class for GAMG agglomerated interface fields.
Abstract base class for GAMG agglomerated interfaces.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
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.
void size(const label n)
Older name for setAddressableSize.
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.
static label nRequests() noexcept
Number of outstanding requests (on the internal list of requests).
commsTypes
Communications types.
@ nonBlocking
"nonBlocking" (immediate) : (MPI_Isend, MPI_Irecv)
static bool floatTransfer
Should compact transfer be used in which floats replace doubles reducing the bandwidth requirement at...
static bool finishedRequest(const label i)
Non-blocking comms: has request i finished? Corresponds to MPI_Test().
static void waitRequest(const label i)
Wait until request i has finished. Corresponds to MPI_Wait().
Smooth ATC in cells next to a set of patches supplied by type.
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.
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
bool updatedMatrix() const noexcept
Whether matrix has been updated.
void addToInternalField(Field< Type > &result, const bool add, const labelUList &faceCells, const scalarField &coeffs, const Field< Type > &vals) const
Add/subtract weighted contributions to internal field.
An abstract base class for implicitly-coupled interfaces e.g. processor and cyclic patches.
GAMG agglomerated processor interface field.
virtual bool doTransform() const
Does the interface field perform the transformation.
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 int rank() const
Return rank of component for transform.
virtual void write(Ostream &) const
Write to stream.
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.
virtual label comm() const
Processor interface functions.
virtual bool ready() const
Are all (receive) data available?
GAMG agglomerated processor interface.
void transformCoupleField(Field< Type > &f) const
Transform given patch field.
#define defineTypeNameAndDebug(Type, DebugSwitch)
Define the typeName and debug information.
OBJstream os(runTime.globalPath()/outputName)
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.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
void add(DimensionedField< scalar, GeoMesh > &result, const dimensioned< scalar > &dt1, const DimensionedField< scalar, GeoMesh > &f2)
Field< solveScalar > solveScalarField
UList< label > labelUList
A UList of labels.
bool readBool(Istream &is)
Read bool from stream using Foam::Switch(Istream&).
dict add("bounds", meshBb)