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();
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();
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();
273 updateMatrixInterfaces
282 template<
class Type,
class DType,
class LUType>
static const Foam::dimensionedScalar A("A", Foam::dimPressure, 611.21)
List of coupled interface fields to be used in coupling.
#define forAll(list, i)
Loop across all elements in list.
Amultiplier(const Field< LUType > &A)
virtual void addAmul(Field< Type > &Apsi, const Field< Type > &psi) const
An abstract base class for implicitly-coupled interface fields e.g. processor and cyclic patch fields...
void Tmul(Field< Type > &, const tmp< Field< Type >> &) const
Matrix transpose multiplication.
void Amul(Field< Type > &, const tmp< Field< Type >> &) const
Matrix multiplication.
void sumA(Field< Type > &) const
Sum the coefficients on each row of the matrix.
void residual(Field< Type > &rA, const Field< Type > &psi) const
bool set(const label) const
Is element set.
iterator begin()
Return an iterator to begin traversing the UList.
A cell is defined as a list of faces with extra functionality.
A face is a list of labels corresponding to mesh vertices.
Traits class for primitives.
A class for managing temporary objects.
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.
void dot(FieldField< Field1, typename innerProduct< Type1, Type2 >::type > &f, const FieldField< Field1, Type1 > &f1, const FieldField< Field2, Type2 > &f2)
void diag(pointPatchField< vector > &, const pointPatchField< tensor > &)