|
peclet.voro 1.0.4
Device-native moving-particle Voronoi dynamics
|
#include <covolume.hpp>
Public Types | |
| using | Exec = peclet::core::ExecSpace |
Public Member Functions | |
| void | setHooks (std::function< void(const DV< Real > &, int)> ex, std::function< Real(Real)> s) |
| void | setupVelocity (const FaceMesh< Real > &mesh, Real nu, Real dt, bool withAmg) |
| void | setup (const FaceMesh< Real > &mesh, bool withAmg) |
| void | applyK (const DV< Real > &zz, const DV< Real > &qq) const |
| Real | dot (const DV< Real > &a, const DV< Real > &bb) const |
| void | precond (const DV< Real > &rr, const DV< Real > &zz) const |
| int | solve (const DV< Real > &f, const DV< Real > &p) |
| Solve −L p = f (mean of f removed, mean of p pinned to zero). Returns iterations. | |
Public Attributes | |
| FaceMesh< Real > | m |
| bool | useAmg = false |
| Real | tol = 1e-12 |
| int | maxIter = 5000 |
| Real | lapScale = 1 |
| bool | deflate = true |
| DV< Real > | extraDiag |
| int | lastIters = 0 |
| Real | lastRes = 0 |
| peclet::core::solver::GraphAMGDevice | amg |
| std::function< void(const DV< Real > &, int)> | exchange |
| std::function< Real(Real)> | sum |
| Real | localVtot_ = 0 |
| DV< Real > | r |
| DV< Real > | z |
| DV< Real > | q |
| DV< Real > | b |
| DV< Real > | Kd |
| Kokkos::View< double *, peclet::core::MemSpace > | rd |
| Kokkos::View< double *, peclet::core::MemSpace > | zd |
| Real | Vtot = 0 |
Pressure Poisson solver: −L φ = f, unpreconditioned CG (C1) or GraphAMGDevice-PCG on the symmetric form K = −V L (K_ii = Σ A_f/d_f, K_ij = −A_f/d_f), b = V (f − mean f).
| using peclet::voro::fv::PressureSolver< Real >::Exec = peclet::core::ExecSpace |
|
inline |
|
inline |
|
inline |
|
inline |
Install the distributed hooks (after setup): the total volume of the mean deflation becomes the GLOBAL volume — with the rank-local one the deflated right-hand side is not mean-free and CG on the singular Neumann system drifts (the C5 bug found by the isolated-solve gate).
|
inline |
|
inline |
Velocity-solve configuration: (V/Δt + ν Σ_wall A/h_A) u − ν V L u; Uwall-independent (the Dirichlet wall value enters the right-hand side). Rebuild when Δt or ν change.
|
inline |
Solve −L p = f (mean of f removed, mean of p pinned to zero). Returns iterations.
| peclet::core::solver::GraphAMGDevice peclet::voro::fv::PressureSolver< Real >::amg |
| DV<Real> peclet::voro::fv::PressureSolver< Real >::b |
| bool peclet::voro::fv::PressureSolver< Real >::deflate = true |
| std::function<void(const DV<Real>&, int)> peclet::voro::fv::PressureSolver< Real >::exchange |
| DV<Real> peclet::voro::fv::PressureSolver< Real >::extraDiag |
| DV<Real> peclet::voro::fv::PressureSolver< Real >::Kd |
| Real peclet::voro::fv::PressureSolver< Real >::lapScale = 1 |
| int peclet::voro::fv::PressureSolver< Real >::lastIters = 0 |
| Real peclet::voro::fv::PressureSolver< Real >::lastRes = 0 |
| Real peclet::voro::fv::PressureSolver< Real >::localVtot_ = 0 |
| FaceMesh<Real> peclet::voro::fv::PressureSolver< Real >::m |
| int peclet::voro::fv::PressureSolver< Real >::maxIter = 5000 |
| DV<Real> peclet::voro::fv::PressureSolver< Real >::q |
| DV<Real> peclet::voro::fv::PressureSolver< Real >::r |
| Kokkos::View<double*, peclet::core::MemSpace> peclet::voro::fv::PressureSolver< Real >::rd |
| std::function<Real(Real)> peclet::voro::fv::PressureSolver< Real >::sum |
| Real peclet::voro::fv::PressureSolver< Real >::tol = 1e-12 |
| bool peclet::voro::fv::PressureSolver< Real >::useAmg = false |
| Real peclet::voro::fv::PressureSolver< Real >::Vtot = 0 |
| DV<Real> peclet::voro::fv::PressureSolver< Real >::z |
| Kokkos::View<double*, peclet::core::MemSpace> peclet::voro::fv::PressureSolver< Real >::zd |