34 lduMatrix::smoother::addsymMatrixConstructorToTable<GaussSeidelSmoother>
37 lduMatrix::smoother::addasymMatrixConstructorToTable<GaussSeidelSmoother>
46 const word& fieldName,
68 const word& fieldName_,
78 register scalar* __restrict__ psiPtr = psi.
begin();
80 register const label nCells = psi.
size();
83 register scalar* __restrict__ bPrimePtr = bPrime.
begin();
85 register const scalar*
const __restrict__ diagPtr = matrix_.
diag().
begin();
86 register const scalar*
const __restrict__ upperPtr =
88 register const scalar*
const __restrict__ lowerPtr =
91 register const label*
const __restrict__ uPtr =
94 register const label*
const __restrict__ ownStartPtr =
120 for (label sweep=0; sweep<nSweeps; sweep++)
142 register scalar curPsi;
143 register label fStart;
144 register label fEnd = ownStartPtr[0];
146 for (
register label cellI=0; cellI<nCells; cellI++)
150 fEnd = ownStartPtr[cellI + 1];
153 curPsi = bPrimePtr[cellI];
156 for (
register label curFace=fStart; curFace<fEnd; curFace++)
158 curPsi -= upperPtr[curFace]*psiPtr[uPtr[curFace]];
162 curPsi /= diagPtr[cellI];
165 for (
register label curFace=fStart; curFace<fEnd; curFace++)
167 bPrimePtr[uPtr[curFace]] -= lowerPtr[curFace]*curPsi;
170 psiPtr[cellI] = curPsi;