Go to the documentation of this file.
46 solveScalar* __restrict__ ApsiPtr = Apsi.begin();
49 const solveScalar*
const __restrict__ psiPtr =
psi.begin();
51 const scalar*
const __restrict__ diagPtr =
diag().begin();
53 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
54 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
56 const scalar*
const __restrict__ upperPtr =
upper().begin();
57 const scalar*
const __restrict__ lowerPtr =
lower().begin();
59 const label startRequest = Pstream::nRequests();
72 const label nCells =
diag().size();
79 const label nFaces =
upper().size();
83 ApsiPtr[uPtr[
face]] += lowerPtr[
face]*psiPtr[lPtr[
face]];
84 ApsiPtr[lPtr[
face]] += upperPtr[
face]*psiPtr[uPtr[
face]];
88 updateMatrixInterfaces
112 solveScalar* __restrict__ TpsiPtr = Tpsi.begin();
115 const solveScalar*
const __restrict__ psiPtr =
psi.begin();
117 const scalar*
const __restrict__ diagPtr =
diag().begin();
119 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
120 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
122 const scalar*
const __restrict__ lowerPtr =
lower().begin();
123 const scalar*
const __restrict__ upperPtr =
upper().begin();
125 const label startRequest = Pstream::nRequests();
138 const label nCells =
diag().size();
144 const label nFaces =
upper().size();
147 TpsiPtr[uPtr[
face]] += upperPtr[
face]*psiPtr[lPtr[
face]];
148 TpsiPtr[lPtr[
face]] += lowerPtr[
face]*psiPtr[uPtr[
face]];
152 updateMatrixInterfaces
174 solveScalar* __restrict__ sumAPtr = sumA.begin();
176 const scalar* __restrict__ diagPtr =
diag().begin();
178 const label* __restrict__ uPtr = lduAddr().upperAddr().begin();
179 const label* __restrict__ lPtr = lduAddr().lowerAddr().begin();
181 const scalar* __restrict__ lowerPtr =
lower().begin();
182 const scalar* __restrict__ upperPtr =
upper().begin();
184 const label nCells =
diag().size();
185 const label nFaces =
upper().size();
194 sumAPtr[uPtr[
face]] += lowerPtr[
face];
195 sumAPtr[lPtr[
face]] += upperPtr[
face];
200 forAll(interfaces, patchi)
202 if (interfaces.
set(patchi))
204 const labelUList& pa = lduAddr().patchAddr(patchi);
205 const scalarField& pCoeffs = interfaceBouCoeffs[patchi];
226 solveScalar* __restrict__ rAPtr = rA.begin();
228 const solveScalar*
const __restrict__ psiPtr =
psi.begin();
229 const scalar*
const __restrict__ diagPtr =
diag().begin();
230 const scalar*
const __restrict__ sourcePtr = source.begin();
232 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
233 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
235 const scalar*
const __restrict__ upperPtr =
upper().begin();
236 const scalar*
const __restrict__ lowerPtr =
lower().begin();
249 const label startRequest = Pstream::nRequests();
262 const label nCells =
diag().size();
269 const label nFaces =
upper().size();
278 updateMatrixInterfaces
301 residual(trA.
ref(),
psi, source, interfaceBouCoeffs, interfaces, cmpt);
310 if (lowerPtr_ || upperPtr_)
312 scalar* __restrict__ H1Ptr = tH1.ref().begin();
317 const scalar* __restrict__ lowerPtr =
lower().begin();
318 const scalar* __restrict__ upperPtr =
upper().begin();
320 const label nFaces =
upper().size();
324 H1Ptr[uPtr[
face]] -= lowerPtr[
face];
325 H1Ptr[lPtr[
face]] -= upperPtr[
face];
const lduAddressing & lduAddr() const
Return the LDU addressing.
A field of fields is a PtrList of fields with reference counting.
void clear() const noexcept
A class for managing temporary objects.
static constexpr const zero Zero
Global zero (0)
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)
void Amul(solveScalarField &, const tmp< solveScalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const
Matrix multiplication with updated interfaces.
virtual const labelUList & upperAddr() const =0
Return upper addressing.
#define forAll(list, i)
Loop across all elements in list.
iterator begin() noexcept
Return an iterator to begin traversing the UList.
string lower(const std::string &s)
Return string copy transformed with std::tolower on each character.
Field< solveScalar > solveScalarField
tmp< scalarField > H1() const
void sumA(solveScalarField &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &) const
Sum the coefficients on each row of the matrix.
const T * set(const label i) const
virtual const labelUList & lowerAddr() const =0
Return lower addressing.
static tmp< T > New(Args &&... args)
Construct tmp of T with forwarding arguments.
A face is a list of labels corresponding to mesh vertices.
string upper(const std::string &s)
Return string copy transformed with std::toupper on each character.
const volScalarField & psi
void Tmul(solveScalarField &, const tmp< solveScalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const
Matrix transpose multiplication with updated interfaces.
void residual(solveScalarField &rA, const solveScalarField &psi, const scalarField &source, const FieldField< Field, scalar > &interfaceBouCoeffs, const lduInterfaceFieldPtrsList &interfaces, const direction cmpt) const
A cell is defined as a list of faces with extra functionality.