|
flow 1.3.0
Kokkos cut-cell IBM incompressible Navier-Stokes solver + pnm pore extraction
|
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 > |
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.