|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
The device slots of the resident pass, and the stop codes (exact in double). More...
Typedefs | |
| using | Slot = Kokkos::View< double, CCMem > |
Enumerations | |
| enum | : int { kRho = 0 , kAlpha = 1 , kOmega = 2 , kBeta = 3 , kRhoNew = 4 , kRhv = 5 , kTr = 6 , kTt = 7 , kStop = 8 , kRn = 9 , kRnS = 10 , kNSlots = 11 } |
Functions | |
| void | axpy (CCField y, double a, CCConst x, C3 e, int g) |
| y += a x over inner cells. | |
| void | aypx (CCField y, double a, CCConst x, C3 e, int g) |
| y = x + a y over inner cells. | |
| void | residualFrom (CCField y, CCConst b, C3 e, int g) |
| y = b - y over inner cells (the residual from a matvec result held in y). | |
| void | axpy (const ScalarVec &y, double a, const ScalarVec &x, C3 e, int g) |
| The same three operations on a ScalarVec, phase by phase. | |
| void | aypx (const ScalarVec &y, double a, const ScalarVec &x, C3 e, int g) |
| void | residualFrom (const ScalarVec &y, const ScalarVec &b, C3 e, int g) |
| void | copy (const ScalarVec &y, const ScalarVec &x) |
| void | zero (const ScalarVec &y) |
| Slot | slot (const Kokkos::View< double *, CCMem > &ks, int k) |
| template<class F > | |
| void | scalarKernel (const char *name, F f) |
| One-thread kernel on the slots (the coefficient arithmetic of the host pass, on the device). | |
| void | residentInit (const Kokkos::View< double *, CCMem > &ks) |
| void | residentBeta (const Kokkos::View< double *, CCMem > &ks) |
| (rh, r) breakdown, else beta = (rhoNew / rho) (alpha / omega) and rho = rhoNew. | |
| void | residentAlpha (const Kokkos::View< double *, CCMem > &ks) |
| (rh, v) breakdown, else alpha = rho / (rh, v). | |
| void | residentOmega (const Kokkos::View< double *, CCMem > &ks) |
| The tt breakdown, else omega = (t, r) / (t, t) and its breakdown. | |
| void | residentP (const ScalarVec &p, const ScalarVec &v, const ScalarVec &r, const Kokkos::View< double *, CCMem > &ks, C3 e, int g) |
| p = r + beta (p - omega v): axpy(p, -omega, v) then aypx(p, beta, r), per phase; skipped on a stop. | |
| void | residentS (const ScalarVec &r, const ScalarVec &v, const Kokkos::View< double *, CCMem > &ks, C3 e, int g) |
| r <- s = r - alpha v (axpy(r, -alpha, v)); skipped on a stop. | |
| void | residentXHalf (const ScalarVec &x, const ScalarVec &z, const Kokkos::View< double *, CCMem > &ks, C3 e, int g) |
| x += alpha z (the half-step exit). | |
| void | residentXR (const ScalarVec &x, const ScalarVec &r, const ScalarVec &z, const ScalarVec &z2, const ScalarVec &t, const Kokkos::View< double *, CCMem > &ks, C3 e, int g) |
| x += alpha z; x += omega z2; r -= omega t (the three axpys) — or, after a tt / omega breakdown, the alpha half-step alone. | |
Variables | |
| constexpr double | kBrkRho = 1.0 |
| constexpr double | kBrkRhv = 2.0 |
| constexpr double | kBrkTt = 3.0 |
| constexpr double | kBrkOmega = 4.0 |
The device slots of the resident pass, and the stop codes (exact in double).
| using peclet::flow::skr::Slot = typedef Kokkos::View<double, CCMem> |
Definition at line 134 of file scalar_krylov.hpp.
| anonymous enum : int |
| Enumerator | |
|---|---|
| kRho | |
| kAlpha | |
| kOmega | |
| kBeta | |
| kRhoNew | |
| kRhv | |
| kTr | |
| kTt | |
| kStop | the packet the host reads: {stop, max|r_f|, max|r_s|} |
| kRn | |
| kRnS | |
| kNSlots | |
Definition at line 119 of file scalar_krylov.hpp.
y += a x over inner cells.
Definition at line 61 of file scalar_krylov.hpp.
References peclet::flow::ccFor3().
Referenced by axpy(), and peclet::flow::scalarBiCGStab().
y = x + a y over inner cells.
Definition at line 70 of file scalar_krylov.hpp.
References peclet::flow::ccFor3().
Referenced by aypx(), and peclet::flow::scalarBiCGStab().
y = b - y over inner cells (the residual from a matvec result held in y).
Definition at line 79 of file scalar_krylov.hpp.
References peclet::flow::ccFor3().
Referenced by residualFrom(), peclet::flow::scalarBiCGStab(), and peclet::flow::Solver< Grid >::scalarCutAssembleSolve().
|
inline |
The same three operations on a ScalarVec, phase by phase.
Definition at line 89 of file scalar_krylov.hpp.
References axpy().
|
inline |
Definition at line 94 of file scalar_krylov.hpp.
References aypx().
|
inline |
Definition at line 99 of file scalar_krylov.hpp.
References residualFrom().
Definition at line 104 of file scalar_krylov.hpp.
Referenced by peclet::flow::scalarBiCGStab().
Definition at line 109 of file scalar_krylov.hpp.
Referenced by peclet::flow::scalarBiCGStab().
Definition at line 135 of file scalar_krylov.hpp.
Referenced by peclet::flow::scalarBiCGStab().
One-thread kernel on the slots (the coefficient arithmetic of the host pass, on the device).
Definition at line 179 of file scalar_krylov.hpp.
Referenced by residentAlpha(), residentBeta(), residentInit(), and residentOmega().
Definition at line 183 of file scalar_krylov.hpp.
References kAlpha, kOmega, kRho, kStop, and scalarKernel().
Referenced by peclet::flow::scalarBiCGStab().
(rh, r) breakdown, else beta = (rhoNew / rho) (alpha / omega) and rho = rhoNew.
Definition at line 193 of file scalar_krylov.hpp.
References kAlpha, kBeta, kBrkRho, kOmega, kRho, kRhoNew, kStop, and scalarKernel().
Referenced by peclet::flow::scalarBiCGStab().
(rh, v) breakdown, else alpha = rho / (rh, v).
Definition at line 206 of file scalar_krylov.hpp.
References kAlpha, kBrkRhv, kRho, kRhv, kStop, and scalarKernel().
Referenced by peclet::flow::scalarBiCGStab().
The tt breakdown, else omega = (t, r) / (t, t) and its breakdown.
Definition at line 220 of file scalar_krylov.hpp.
References kBrkOmega, kBrkTt, kOmega, kStop, kTr, kTt, and scalarKernel().
Referenced by peclet::flow::scalarBiCGStab().
|
inline |
p = r + beta (p - omega v): axpy(p, -omega, v) then aypx(p, beta, r), per phase; skipped on a stop.
Definition at line 238 of file scalar_krylov.hpp.
References peclet::flow::ccFor3(), kBeta, kOmega, and kStop.
Referenced by peclet::flow::scalarBiCGStab().
|
inline |
r <- s = r - alpha v (axpy(r, -alpha, v)); skipped on a stop.
Definition at line 258 of file scalar_krylov.hpp.
References peclet::flow::ccFor3(), kAlpha, and kStop.
Referenced by peclet::flow::scalarBiCGStab().
|
inline |
x += alpha z (the half-step exit).
Definition at line 275 of file scalar_krylov.hpp.
References peclet::flow::ccFor3(), and kAlpha.
Referenced by peclet::flow::scalarBiCGStab().
|
inline |
x += alpha z; x += omega z2; r -= omega t (the three axpys) — or, after a tt / omega breakdown, the alpha half-step alone.
Definition at line 291 of file scalar_krylov.hpp.
References peclet::flow::ccFor3(), kAlpha, kOmega, and kStop.
Referenced by peclet::flow::scalarBiCGStab().
Definition at line 133 of file scalar_krylov.hpp.
Referenced by residentBeta().
Definition at line 133 of file scalar_krylov.hpp.
Referenced by residentAlpha().
Definition at line 133 of file scalar_krylov.hpp.
Referenced by residentOmega().
Definition at line 133 of file scalar_krylov.hpp.
Referenced by residentOmega().