34 template<
class Type,
class LUType>
62 template<
class Type,
class DType,
class LUType>
69 Type* __restrict__ ApsiPtr = Apsi.
begin();
72 const Type*
const __restrict__ psiPtr = psi.
begin();
74 const DType*
const __restrict__ diagPtr =
diag().begin();
76 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
77 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
79 const LUType*
const __restrict__ upperPtr = upper().begin();
80 const LUType*
const __restrict__ lowerPtr = lower().begin();
97 const label nFaces = upper().size();
100 ApsiPtr[uPtr[
face]] +=
dot(lowerPtr[
face], psiPtr[lPtr[face]]);
101 ApsiPtr[lPtr[face]] +=
dot(upperPtr[face], psiPtr[uPtr[face]]);
105 updateMatrixInterfaces
116 template<
class Type,
class DType,
class LUType>
123 Type* __restrict__ TpsiPtr = Tpsi.
begin();
126 const Type*
const __restrict__ psiPtr = psi.
begin();
128 const DType*
const __restrict__ diagPtr =
diag().begin();
130 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
131 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
133 const LUType*
const __restrict__ lowerPtr = lower().begin();
134 const LUType*
const __restrict__ upperPtr = upper().begin();
150 const label nFaces = upper().size();
153 TpsiPtr[uPtr[
face]] +=
dot(upperPtr[
face], psiPtr[lPtr[face]]);
154 TpsiPtr[lPtr[face]] +=
dot(lowerPtr[face], psiPtr[uPtr[face]]);
158 updateMatrixInterfaces
169 template<
class Type,
class DType,
class LUType>
175 Type* __restrict__ sumAPtr = sumA.
begin();
177 const DType* __restrict__ diagPtr =
diag().begin();
179 const label* __restrict__ uPtr = lduAddr().upperAddr().begin();
180 const label* __restrict__ lPtr = lduAddr().lowerAddr().begin();
182 const LUType* __restrict__ lowerPtr = lower().begin();
183 const LUType* __restrict__ upperPtr = upper().begin();
186 const label nFaces = upper().size();
203 if (interfaces_.set(
patchi))
217 template<
class Type,
class DType,
class LUType>
224 Type* __restrict__ rAPtr = rA.
begin();
226 const Type*
const __restrict__ psiPtr = psi.
begin();
227 const DType*
const __restrict__ diagPtr =
diag().begin();
228 const Type*
const __restrict__ sourcePtr = source().begin();
230 const label*
const __restrict__ uPtr = lduAddr().upperAddr().begin();
231 const label*
const __restrict__ lPtr = lduAddr().lowerAddr().begin();
233 const LUType*
const __restrict__ upperPtr = upper().begin();
234 const LUType*
const __restrict__ lowerPtr = lower().begin();
244 if (interfaces_.set(
patchi))
265 const label nFaces = upper().size();
268 rAPtr[uPtr[
face]] -=
dot(lowerPtr[
face], psiPtr[lPtr[face]]);
269 rAPtr[lPtr[face]] -=
dot(upperPtr[face], psiPtr[uPtr[face]]);
273 updateMatrixInterfaces
282 template<
class Type,
class DType,
class LUType>
#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.
Amultiplier(const Field< LUType > &A)
T & ref() const
Return non-const reference or generate a fatal error.
void size(const label)
Override size to be inconsistent with allocated storage.
Traits class for primitives.
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
void sumA(Field< Type > &) const
Sum the coefficients on each row of the matrix.
void dot(FieldField< Field1, typename innerProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
void Amul(Field< Type > &, const tmp< Field< Type >> &) const
Matrix multiplication.
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)
iterator begin()
Return an iterator to begin traversing the UList.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
void residual(Field< Type > &rA, const Field< Type > &psi) const
void Tmul(Field< Type > &, const tmp< Field< Type >> &) const
Matrix transpose multiplication.
A cell is defined as a list of faces with extra functionality.
const volScalarField & psi
A class for managing temporary objects.
List of coupled interface fields to be used in coupling.
virtual void addAmul(Field< Type > &Apsi, const Field< Type > &psi) const