34 lduMatrix::preconditioner::
35 addasymMatrixConstructorToTable<DILUPreconditioner>
51 calcReciprocalD(rD_, sol.
matrix());
63 scalar* __restrict__ rDPtr = rD.
begin();
68 const scalar*
const __restrict__ upperPtr = matrix.
upper().
begin();
69 const scalar*
const __restrict__ lowerPtr = matrix.
lower().
begin();
95 scalar* __restrict__ wAPtr = wA.
begin();
96 const scalar* __restrict__ rAPtr = rA.
begin();
97 const scalar* __restrict__ rDPtr = rD_.begin();
99 const label*
const __restrict__ uPtr =
100 solver_.matrix().lduAddr().upperAddr().begin();
101 const label*
const __restrict__ lPtr =
102 solver_.matrix().lduAddr().lowerAddr().begin();
103 const label*
const __restrict__ losortPtr =
104 solver_.matrix().lduAddr().losortAddr().begin();
106 const scalar*
const __restrict__ upperPtr =
107 solver_.matrix().upper().begin();
108 const scalar*
const __restrict__ lowerPtr =
109 solver_.matrix().lower().begin();
112 label nFaces = solver_.matrix().upper().size();
113 label nFacesM1 = nFaces - 1;
125 sface = losortPtr[
face];
126 wAPtr[uPtr[sface]] -=
127 rDPtr[uPtr[sface]]*lowerPtr[sface]*wAPtr[lPtr[sface]];
145 scalar* __restrict__ wTPtr = wT.
begin();
146 const scalar* __restrict__ rTPtr = rT.
begin();
147 const scalar* __restrict__ rDPtr = rD_.begin();
149 const label*
const __restrict__ uPtr =
150 solver_.matrix().lduAddr().upperAddr().begin();
151 const label*
const __restrict__ lPtr =
152 solver_.matrix().lduAddr().lowerAddr().begin();
153 const label*
const __restrict__ losortPtr =
154 solver_.matrix().lduAddr().losortAddr().begin();
156 const scalar*
const __restrict__ upperPtr =
157 solver_.matrix().upper().begin();
158 const scalar*
const __restrict__ lowerPtr =
159 solver_.matrix().lower().begin();
162 label nFaces = solver_.matrix().upper().size();
163 label nFacesM1 = nFaces - 1;
181 sface = losortPtr[
face];
182 wTPtr[lPtr[sface]] -=
183 rDPtr[lPtr[sface]]*lowerPtr[sface]*wTPtr[uPtr[sface]];
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
virtual void precondition(scalarField &wA, const scalarField &rA, const direction cmpt=0) const
Return wA the preconditioned form of residual rA.
A face is a list of labels corresponding to mesh vertices.
lduMatrix::preconditioner::addasymMatrixConstructorToTable< DILUPreconditioner > addDILUPreconditionerAsymMatrixConstructorToTable_
A list of keyword definitions, which are a keyword followed by any number of values (e...
void size(const label)
Override size to be inconsistent with allocated storage.
const lduMatrix & matrix() const
virtual const labelUList & lowerAddr() const =0
Return lower addressing.
DILUPreconditioner(const lduMatrix::solver &, const dictionary &solverControlsUnused)
Construct from matrix components and preconditioner solver controls.
virtual const labelUList & upperAddr() const =0
Return upper addressing.
Abstract base-class for lduMatrix solvers.
iterator begin()
Return an iterator to begin traversing the UList.
defineTypeNameAndDebug(combustionModel, 0)
virtual void preconditionT(scalarField &wT, const scalarField &rT, const direction cmpt=0) const
Return wT the transpose-matrix preconditioned form of residual rT.
lduMatrix is a general matrix class in which the coefficients are stored as three arrays...
Abstract base-class for lduMatrix preconditioners.
const lduAddressing & lduAddr() const
Return the LDU addressing.
A cell is defined as a list of faces with extra functionality.
static void calcReciprocalD(scalarField &rD, const lduMatrix &matrix)
Calculate the reciprocal of the preconditioned diagonal.