flow
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
Loading...
Searching...
No Matches
flow_ibm.hpp File Reference

flow — host-facing Kokkos IBM Navier-Stokes solver (drop-in flow-style API). More...

#include <array>
#include <cmath>
#include <cstring>
#include <Kokkos_Core.hpp>
#include <memory>
#include <vector>
#include "face_props.hpp"
#include "grid_layout.hpp"
#include "mac_approx_projection.hpp"
#include "mac_cutcell_mg.hpp"
#include "mac_ibm.hpp"
#include "mac_pressure.hpp"
#include "mac_stencils.hpp"
#include "mac_velocity_mg.hpp"
#include "peclet/core/field/field_set.hpp"
#include "property_closures.hpp"
#include "scalar_transport.hpp"
#include "staggered_advection.hpp"

Go to the source code of this file.

Classes

class  peclet::flow::Solver< Grid >
 

Namespaces

namespace  peclet
 
namespace  peclet::flow
 

Typedefs

using peclet::flow::IbmSolver = Solver< Staggered >
 

Detailed Description

flow — host-facing Kokkos IBM Navier-Stokes solver (drop-in flow-style API).

Assembles the validated cut-cell IBM operators into a runnable solver on a fully-periodic MAC box with immersed SDF solids: per-component backward-Euler implicit diffusion with the Robust-Scaled cut-cell no-slip stencil (buildIbmOverlay + ibmBuildDiffusion + ibmModifyStencil + ibmSolidMask + ibmRbgsSweep), then a rotational incremental-pressure Chorin projection through the open-face-weighted cut-cell pressure Poisson (buildCutcellOp + divergOpen, solved by CG with the constant null space projected out, then projectCorrect; P += (rho/dt)*phi - mu*div(u*) matching CUDA press_update_k). Schemes are a FAITHFUL port of the CUDA flow (point-value cut-cell IBM = ibm_geometry_ext_k<0>; rotational pressure): the velocity field matches CUDA to ~1e-13 (machine precision). Physical units (rho/mu/dt + body force). std::vector setters/getters so a pybind module can drive it. The verify_poiseuille / verify_periodic_spheres mechanism (k matches CUDA to all printed digits), on any backend. NOTE (faithfulness items, see memory): the CG uses a diagonal preconditioner where CUDA uses RB-GS-preconditioned MG-PCG (same converged solution); the pressure operator is stored double where CUDA uses float mreal – to reconcile in a later port pass.

Definition in file flow_ibm.hpp.