43 scalar* __restrict__ ApsiPtr = Apsi.
begin();
46 const scalar*
const __restrict__ psiPtr =
psi.begin();
48 const scalar*
const __restrict__ diagPtr =
diag().
begin();
53 const scalar*
const __restrict__ upperPtr =
upper().
begin();
54 const scalar*
const __restrict__ lowerPtr =
lower().
begin();
77 ApsiPtr[uPtr[
face]] += lowerPtr[
face]*psiPtr[lPtr[
face]];
78 ApsiPtr[lPtr[
face]] += upperPtr[
face]*psiPtr[uPtr[
face]];
104 scalar* __restrict__ TpsiPtr = Tpsi.
begin();
107 const scalar*
const __restrict__ psiPtr =
psi.
begin();
109 const scalar*
const __restrict__ diagPtr =
diag().begin();
111 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
112 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
114 const scalar*
const __restrict__ lowerPtr = lower().begin();
115 const scalar*
const __restrict__ upperPtr = upper().begin();
133 const label nFaces = upper().size();
136 TpsiPtr[uPtr[
face]] += upperPtr[
face]*psiPtr[lPtr[
face]];
137 TpsiPtr[lPtr[
face]] += lowerPtr[
face]*psiPtr[uPtr[
face]];
141 updateMatrixInterfaces
161 scalar* __restrict__ sumAPtr = sumA.
begin();
163 const scalar* __restrict__ diagPtr =
diag().begin();
165 const label* __restrict__ uPtr = lduAddr().upperAddr().begin();
166 const label* __restrict__ lPtr = lduAddr().lowerAddr().begin();
168 const scalar* __restrict__ lowerPtr = lower().begin();
169 const scalar* __restrict__ upperPtr = upper().begin();
172 const label nFaces = upper().size();
181 sumAPtr[uPtr[
face]] += lowerPtr[
face];
182 sumAPtr[lPtr[
face]] += upperPtr[
face];
213 scalar* __restrict__ rAPtr = rA.
begin();
215 const scalar*
const __restrict__ psiPtr =
psi.
begin();
216 const scalar*
const __restrict__ diagPtr =
diag().begin();
217 const scalar*
const __restrict__ sourcePtr = source.
begin();
219 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
220 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
222 const scalar*
const __restrict__ upperPtr = upper().begin();
223 const scalar*
const __restrict__ lowerPtr = lower().begin();
263 const label nFaces = upper().size();
272 updateMatrixInterfaces
293 residual(trA.
ref(),
psi, source, interfaceBouCoeffs, interfaces, cmpt);
305 if (lowerPtr_ || upperPtr_)
309 scalar* __restrict__ H1Ptr = H1_.
begin();
311 const label* __restrict__ uPtr = lduAddr().upperAddr().begin();
312 const label* __restrict__ lPtr = lduAddr().lowerAddr().begin();
314 const scalar* __restrict__ lowerPtr = lower().begin();
315 const scalar* __restrict__ upperPtr = upper().begin();
317 const label nFaces = upper().size();
321 H1Ptr[uPtr[
face]] -= lowerPtr[
face];
322 H1Ptr[lPtr[
face]] -= upperPtr[
face];
#define forAll(list, i)
Loop across all elements in list.
void size(const label)
Override size to be inconsistent with allocated storage.
bool set(const label) const
Is element set.
iterator begin()
Return an iterator to begin traversing the UList.
bool set(const label) const
Is element set.
label size() const
Return the number of elements in the UPtrList.
A cell is defined as a list of faces with extra functionality.
A face is a list of labels corresponding to mesh vertices.
virtual const labelUList & upperAddr() const =0
Return upper addressing.
virtual const labelUList & lowerAddr() const =0
Return lower addressing.
tmp< scalarField > H1() const
void residual(scalarField &rA, const scalarField &psi, const scalarField &source, const FieldField< Field, scalar > &interfaceBouCoeffs, const lduInterfaceFieldPtrsList &interfaces, const direction cmpt) const
void Tmul(scalarField &, const tmp< scalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const
Matrix transpose multiplication with updated interfaces.
void Amul(scalarField &, const tmp< scalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const
Matrix multiplication with updated interfaces.
const lduAddressing & lduAddr() const
Return the LDU addressing.
void initMatrixInterfaces(const FieldField< Field, scalar > &interfaceCoeffs, const lduInterfaceFieldPtrsList &interfaces, const scalarField &psiif, scalarField &result, const direction cmpt) const
Initialise the update of interfaced interfaces.
void sumA(scalarField &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &) const
Sum the coefficients on each row of the matrix.
void updateMatrixInterfaces(const FieldField< Field, scalar > &interfaceCoeffs, const lduInterfaceFieldPtrsList &interfaces, const scalarField &psiif, scalarField &result, const direction cmpt) const
Update interfaced interfaces for matrix operations.
A class for managing temporary objects.
void clear() const
If object pointer points to valid object:
T & ref() const
Return non-const reference or generate a fatal error.
const volScalarField & psi
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)