|
pnm 1.0.3
peclet.pnm — pore-network extraction from SDF geometry (Kokkos)
|
peclet.pnm — portable (Kokkos) single-rank pore-network extraction from an SDF. More...
#include <algorithm>#include <array>#include <cstdint>#include <Kokkos_Core.hpp>#include <utility>#include <vector>#include "pore_kernels.hpp"Go to the source code of this file.
Classes | |
| struct | pnm::NetworkFlow |
| struct | pnm::PoreNetwork |
| The full pore network from one extraction: pores, the per-voxel segmentation (flat), and the label-adjacency connections. More... | |
Namespaces | |
| namespace | pnm |
Functions | |
| std::vector< Pore > | pnm::extractPoresView (const Kokkos::View< float *, Mem > &sdf, std::array< int, 3 > resolution, std::array< float, 3 > origin, std::array< float, 3 > spacing) |
| std::vector< Pore > | pnm::extract_pores_k (const std::vector< float > &sdf_h, std::array< int, 3 > resolution, std::array< float, 3 > origin, std::array< float, 3 > spacing) |
| Kokkos::View< int *, Mem > | pnm::segmentVolumeView (const Kokkos::View< float *, Mem > &sdf, std::array< int, 3 > resolution, std::array< float, 3 > spacing, Kokkos::View< int *, Mem > *rootsOut=nullptr) |
| std::vector< int > | pnm::segment_volume_k (const std::vector< float > &sdf_h, std::array< int, 3 > resolution, std::array< float, 3 > spacing) |
| std::vector< std::pair< int, int > > | pnm::extractTopologyView (const Kokkos::View< int *, Mem > &seg, std::array< int, 3 > resolution) |
| std::vector< std::pair< int, int > > | pnm::extract_topology_k (const int *seg_h, std::size_t n, std::array< int, 3 > resolution) |
| std::vector< std::pair< int, int > > | pnm::extract_topology_k (const std::vector< int > &seg_h, std::array< int, 3 > resolution) |
| NetworkFlow | pnm::extract_network_flow_k (const std::vector< float > &sdf_h, std::array< int, 3 > resolution, std::array< float, 3 > origin, std::array< float, 3 > spacing, const std::vector< double > &u_h, const std::vector< double > &v_h, const std::vector< double > &w_h, const std::vector< double > &p_h, const std::vector< double > &ox_h, const std::vector< double > &oy_h, const std::vector< double > &oz_h, std::array< double, 3 > grad_p) |
| PoreNetwork | pnm::extract_pore_network_k (const std::vector< float > &sdf_h, std::array< int, 3 > resolution, std::array< float, 3 > origin, std::array< float, 3 > spacing) |
peclet.pnm — portable (Kokkos) single-rank pore-network extraction from an SDF.
Pore detection (local maxima of the SDF + weighted centroid), marker-controlled watershed segmentation of the solid (init markers -> union-find CCL -> flood fill), gradient-path pore basins, boundary-pair throat topology, and the network-flow extraction from a peclet.flow MAC field. The stage kernels live in pore_kernels.hpp (shared with the distributed pipeline, instantiated here on the trivial GridGeo geometry — the field is the whole periodic grid); this file is the single-rank orchestration: device-resident buffers, the fixpoint loops, the device renumbering and the host topology sort/unique. The distributed pipeline (pore_extraction_mpi.hpp) runs the SAME kernels on the core block decomposition, bit-exact.
Definition in file pore_extraction.hpp.