43 scalar* __restrict__ ApsiPtr = Apsi.
begin();
46 const scalar*
const __restrict__ psiPtr = psi.
begin();
48 const scalar*
const __restrict__ diagPtr =
diag().begin();
50 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
51 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
53 const scalar*
const __restrict__ upperPtr = upper().begin();
54 const scalar*
const __restrict__ lowerPtr = lower().begin();
73 const label nFaces = upper().size();
77 ApsiPtr[uPtr[
face]] += lowerPtr[
face]*psiPtr[lPtr[
face]];
78 ApsiPtr[lPtr[
face]] += upperPtr[
face]*psiPtr[uPtr[
face]];
82 updateMatrixInterfaces
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();
314 const scalar* __restrict__ lowerPtr =
lower().
begin();
315 const scalar* __restrict__ upperPtr =
upper().
begin();
321 H1Ptr[uPtr[
face]] -= lowerPtr[
face];
322 H1Ptr[lPtr[
face]] -= upperPtr[
face];
#define forAll(list, i)
Loop across all elements in list.
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
A face is a list of labels corresponding to mesh vertices.
tmp< scalarField > H1() const
void size(const label)
Override size to be inconsistent with allocated storage.
void Tmul(scalarField &, const tmp< scalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const
Matrix transpose multiplication with updated interfaces.
virtual const labelUList & lowerAddr() const =0
Return lower addressing.
bool set(const label) const
Is element set.
void clear() const
If object pointer points to valid object:
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)
void residual(scalarField &rA, const scalarField &psi, const scalarField &source, const FieldField< Field, scalar > &interfaceBouCoeffs, const lduInterfaceFieldPtrsList &interfaces, const direction cmpt) const
Field< scalar > scalarField
Specialisation of Field<T> for scalar.
virtual const labelUList & upperAddr() const =0
Return upper addressing.
iterator begin()
Return an iterator to begin traversing the UList.
void Amul(scalarField &, const tmp< scalarField > &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &, const direction cmpt) const
Matrix multiplication with updated interfaces.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
volScalarField scalarField(fieldObject, mesh)
const lduAddressing & lduAddr() const
Return the LDU addressing.
void sumA(scalarField &, const FieldField< Field, scalar > &, const lduInterfaceFieldPtrsList &) const
Sum the coefficients on each row of the matrix.
A cell is defined as a list of faces with extra functionality.
const volScalarField & psi
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
label size() const
Return the number of elements in the UPtrList.