20#ifndef PECLET_CORE_SOLVER_FACE_CSR_HPP
21#define PECLET_CORE_SOLVER_FACE_CSR_HPP
45template <
class D,
class I>
56template <
class Op,
class U>
72template <
class Op,
class U>
77 off +=
op.coef(
k) * u(
op.nbr(
k));
80 off +=
op.advCoef(
k) * u(
op.advNbr(
k));
89 const double nu = (
d != 0.0) ? (
b_i - off) /
d :
uOld;
103template <
class D,
class I>
113template <
class Op,
class U>
115 const double ui = u(
i);
124template <
class Op,
class U>
132 if (
op.c0 == 0.0 &&
op.cD == 1.0)
PECLET_HD void faceCsrOffDiag(const Op &op, Index i, const U &u, double &off, double &d)
Off-diagonal sum and the (advection-inclusive) diagonal for the point smoothers: out off = Σ coef·u[n...
PECLET_HD double faceCsrPointUpdate(double b_i, double off, double d, double uOld, double omega)
The damped point update used by both Jacobi and (multicolour) Gauss–Seidel: returns the new u_i given...
PECLET_HD double fvApplyRow(const Op &op, Index i, const U &u)
(H u)_i = c0·u_i + cD·( invVol_i·( Σ w·(u_nbr − u_i) − bcDiag_i·u_i ) ).
PECLET_HD double faceCsrApplyRow(const Op &op, Index i, const U &u)
(A u)_i — one assembled-operator row.
PECLET_HD double fvPointSolve(const Op &op, Index i, const U &u, double rhs_i, double uOld)
The point solve of H u = rhs for one row (raw value, before damping), matching the host point solve a...
Kokkos::View< T *, MemSpace > View
1D device array.
std::int64_t Index
Signed index type for grids and particles (supersedes block_decomposer's long int IndxT).
A backend-agnostic view of an assembled face-CSR operator.
A backend-agnostic view of an assembled FV (weight-CSR) operator.
A uniform accessor over a raw host array, giving it the operator()(i) that Kokkos::View has,...
PECLET_HD T operator()(Index i) const