65 #ifndef Foam_distributedDILUPreconditioner_H 66 #define Foam_distributedDILUPreconditioner_H 194 const bool cancel =
false virtual void addInterfaceDiag(solveScalarField &rD, const label inti, const Field< solveScalar > &recvBuf) const
Update diagonal for interface.
FieldField< Field, solveScalar > sendBufs_
Buffers for sending and receiving data.
virtual void precondition(solveScalarField &wA, const solveScalarField &rA, const direction cmpt=0) const
Return wA the preconditioned form of residual rA.
DynamicList< UPstream::Request > lowerSendRequests_
void send(const labelList &selectedInterfaces, const solveScalarField &psiInternal, DynamicList< UPstream::Request > &requests) const
Start sending sendBufs_.
A list of keyword definitions, which are a keyword followed by a number of values (eg...
distributedDILUPreconditioner(const lduMatrix::solver &, const dictionary &solverControlsUnused)
Construct from matrix components and preconditioner solver controls.
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
DynamicList< UPstream::Request > recvRequests_
autoPtr< labelList > cellColourPtr_
Local (cell) colouring from global interfaces.
virtual void forwardInternalDiag(solveScalarField &rD, const label colouri) const
Update diagonal for all faces of a certain colour.
solveScalarField rD_
The reciprocal preconditioned diagonal.
List< DynamicList< label > > lowerGlobalSend_
Interfaces to non-processor lower coupled interfaces.
virtual void setFinished(const solverPerformance &perf) const
Signal end of solver.
static const lduMesh * meshPtr_
Processor interface buffers and colouring.
virtual ~distributedDILUPreconditioner()
Destructor.
Abstract base class for meshes which provide LDU addressing for the construction of lduMatrix and LDU...
List< DynamicList< label > > higherGlobalSend_
Interfaces to non-processor higher coupled interfaces.
FieldField< Field, solveScalar > recvBufs_
A field of fields is a PtrList of fields with reference counting.
List< label > higherColour_
Corresponding destination colour (for higherGlobal)
static autoPtr< labelList > procColoursPtr_
Previous processor colours.
A 1D vector of objects of type <T> that resizes itself as necessary to accept the new objects...
virtual void forwardInternal(solveScalarField &wA, const label colouri) const
Update preconditioned variable walking forward on internal faces.
virtual void addInterface(solveScalarField &wA, const label inti, const Field< solveScalar > &recvBuf) const
Update preconditioned variable from interface.
Abstract base-class for lduMatrix solvers.
Version of DILUpreconditioner that uses preconditioning across processor (and coupled) boundaries...
TypeName("distributedDILU")
Runtime type information.
virtual void backwardInternal(solveScalarField &wA, const label colouri) const
Update preconditioned variable walking backward on internal faces.
virtual void calcReciprocalD(solveScalarField &rD) const
Calculate reciprocal of diagonal.
void receive(const labelList &selectedInterfaces, DynamicList< UPstream::Request > &requests) const
Start receiving in recvBufs_.
const bool coupled_
Precondition across global coupled bc.
void updateMatrixInterfaces(const bool add, const FieldField< Field, scalar > &coupleCoeffs, const labelList &selectedInterfaces, const solveScalarField &psiif, solveScalarField &result, const direction cmpt) const
Variant of lduMatrix::updateMatrixInterfaces on selected interfaces.
void add(FieldField< Field1, typename typeOfSum< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
DynamicList< label > lowerNbrs_
Interfaces to lower coloured processors.
PtrList< FieldField< Field, solveScalar > > colourBufs_
Global interfaces. Per colour the interfaces that (might) influence it.
List< DynamicList< label > > lowerGlobalRecv_
Interfaces to non-processor lower coupled interfaces.
DynamicList< UPstream::Request > lowerRecvRequests_
DynamicList< UPstream::Request > higherRecvRequests_
void sendGlobal(const labelList &selectedInterfaces, solveScalarField &psi, const label colouri) const
Send (and store in colourBufs_[colouri]) the effect of.
Abstract base-class for lduMatrix preconditioners.
DynamicList< label > higherNbrs_
Interfaces to higher coloured processors.
label nColours_
Number of colours (in case of multiple disconnected regions.
A list of pointers to objects of type <T>, with allocation/deallocation management of the pointers...
void wait(DynamicList< UPstream::Request > &requests, const bool cancel=false) const
Wait for requests or cancel/free requests.
Pointer management similar to std::unique_ptr, with some additional methods and type checking...
const volScalarField & psi
List< label > lowerColour_
Corresponding destination colour (for lowerGlobal)
DynamicList< UPstream::Request > higherSendRequests_
List< DynamicList< label > > higherGlobalRecv_
Interfaces to non-processor higher coupled interfaces.