|
flow 0.4.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
flow — portable (Kokkos) velocity (momentum) multigrid for the IBM diffusion solve: the STAIRCASE coarse operator. More...
#include <functional>#include <Kokkos_Core.hpp>#include <vector>#include "mac_cutcell_mg.hpp"#include "mac_ibm.hpp"#include "staggered_advection.hpp"Go to the source code of this file.
Classes | |
| class | peclet::flow::VelocityMG |
| struct | peclet::flow::VelocityMG::Level |
Namespaces | |
| namespace | peclet |
| namespace | peclet::flow |
flow — portable (Kokkos) velocity (momentum) multigrid for the IBM diffusion solve: the STAIRCASE coarse operator.
Single-GPU (periodic) port of the velocity-MG path in CUDA's DistributedPoissonMG (mac_multigrid.cuh): the fine level is the sharp Robust-Scaled IBM stencil As_[c] (so the residual + smoother use the TRUE operator and the fixed point is the exact sharp solution); the coarse levels use the geometry-aware STAIRCASE Helmholtz (volume fraction theta only CLASSIFIES cells: theta>=0.5 fluid / <0.5 solid-pinned, then a plain constant-coefficient Helmholtz at fluid cells). The fine IBM-cell residuals are excluded from coarsening (clean-fluid mask) and no coarse correction is pumped back into the cut-cell band (masked prolong); the fine smoother owns the boundary. See [[velocity-mg-design]].
The whole hierarchy uses ghost width G=2 (the velocity block's width), so level 0 IS the solver's velocity block: the IBM stencil + RHS + solution need no g=2<->g=1 bridging. Reuses restrictAvg / prolongAdd (mac_cutcell_mg) and ibmRbgsStencilColor (the pin-aware variable-coeff RB-GS smoother == mg_smooth_var_k). Runs on any Kokkos backend.
Definition in file mac_velocity_mg.hpp.