flow 1.3.0
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 <algorithm>
#include <array>
#include <chrono>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <Kokkos_Core.hpp>
#include <limits>
#include <memory>
#include <string>
#include <vector>
#include "peclet/core/geom/device_scene.hpp"
#include "collocated_varrho.hpp"
#include "face_props.hpp"
#include "gauge_exact_gradient.hpp"
#include "ghost_projection_debug.hpp"
#include "grid_layout.hpp"
#include "mac_approx_projection.hpp"
#include "mac_cheb_momentum.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 "peclet/core/solver/anderson.hpp"
#include "property_closures.hpp"
#include "scalar_cutcell_geometry.hpp"
#include "scalar_cutcell_operator.hpp"
#include "scalar_krylov.hpp"
#include "scalar_mg.hpp"
#include "scalar_transport.hpp"
#include "staggered_advection.hpp"
#include "vof/advect_wy.hpp"
#include "vof/block_container.hpp"
#include "vof/block_exchange.hpp"
#include "vof/colour_field.hpp"
#include "vof/colour_bc.hpp"
#include "vof/curvature_field.hpp"
#include "vof/momentum_advect.hpp"
#include "vof/surface_tension.hpp"
#include "vof/phase_change.hpp"
#include "vof/wetting_dynamic.hpp"
#include "vof/energy_advect.hpp"
#include "vof/interface_area_field.hpp"
#include "vof/marching_cubes_field.hpp"

Go to the source code of this file.

Classes

class  peclet::flow::Solver< Grid >
 
struct  peclet::flow::Solver< Grid >::UnitScales
 
struct  peclet::flow::Solver< Grid >::SceneMap
 The map between the solver's INDEX coordinates and the coordinate system the analytic scene is written in. More...
 
struct  peclet::flow::Solver< Grid >::OutflowBackflow
 OUTFLOW REVERSAL CENSUS – the regime in which the zero-gradient (do-nothing) outflow is only conditionally energy-stable. More...
 
struct  peclet::flow::Solver< Grid >::MarchState
 
struct  peclet::flow::Solver< Grid >::VofTiming
 
struct  peclet::flow::Solver< Grid >::CsfDiagnostics
 
struct  peclet::flow::Solver< Grid >::ScalarCutBudget
 diagnostics.scalar_budget (§8.2), physical; collective under MPI. More...
 
struct  peclet::flow::Solver< Grid >::ScalarCutFacets
 diagnostics.scalar_facets (§8.2): this rank's facets, physical; per facet 3 values for the centroid and the normal. More...
 
struct  peclet::flow::Solver< Grid >::ScalarFaceFlux
 The ONE predicate for the cut-cell scalar's advective face flux (doc/scalar_ibm_design.md §6.1, D5): the face field the projection in force made discretely divergence-free and the openness ITS divergence kernel weights it with, so that F_a/V = open * vel through the low a-face of cell i. More...
 
struct  peclet::flow::Solver< Grid >::ContactAngleDiagnostics
 
struct  peclet::flow::Solver< Grid >::VofOverlapCensus
 
struct  peclet::flow::Solver< Grid >::VofStepLimits
 
struct  peclet::flow::Solver< Grid >::PhaseChangeDiagnostics
 
struct  peclet::flow::Solver< Grid >::PhaseChangeBudget
 WO-P3f — the ENERGY BUDGET of the phase-change energy solve. More...
 

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.