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

flow — WO-P3d: the block driver of the marching-tetrahedra interfacial area. More...

#include <Kokkos_Core.hpp>
#include <stdexcept>
#include "mac_stencils.hpp"
#include "policy.hpp"
#include "vof/advect_wy.hpp"
#include "vof/curvature_field.hpp"
#include "vof/interface_area.hpp"
#include "vof/marching_cubes.hpp"
#include "vof/phase_change.hpp"
#include "vof/plic.hpp"

Go to the source code of this file.

Classes

class  peclet::flow::vof::VofMcArea
 Interfacial area per cell from the marching-tetrahedra surface of the C = 1/2 level set (or of the PLIC-reconstructed signed distance — set_phase_change_area modes 4-7). More...
 
struct  peclet::flow::vof::VofMcArea::Stats
 

Namespaces

namespace  peclet
 
namespace  peclet::flow
 
namespace  peclet::flow::vof
 

Detailed Description

flow — WO-P3d: the block driver of the marching-tetrahedra interfacial area.

vof/marching_cubes.hpp holds the container-free kernels; this file walks the colour advector's g = 3 block with them, exactly the split curvature.hpp / curvature_field.hpp and interface_area.hpp / interface_area_field.hpp already use. It is a SIBLING of VofInterfaceArea and not a mode inside it (hard rule 1: VofInterfaceArea's passes carry WO-P3c's gated numbers and are not touched here).

Output: one field, area — the interfacial area booked to each cell, in h^2.

Reach, and why this is bitwise under MPI

A cell is a corner of the 8 dual cubes whose corners span +-1 around it; the planes those corners carry come from a MYC normal that reads +-1, so the whole stencil is +-2 — inside the colour block's g = 3 with a layer to spare, i.e. no new halo. There is no reduction in it but the census, and the deposit is a GATHER with a fixed loop order (the cell re-derives the triangles of each of its 8 cubes and keeps its own share), never an atomic scatter — so the result is decomposition-independent bit for bit, which is the WO-P01 lesson applied to a quantity that is naturally a scatter.

Definition in file marching_cubes_field.hpp.