peclet-core 1.3.2__tar.gz → 1.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {peclet_core-1.3.2 → peclet_core-1.4.0}/CITATION.cff +1 -1
- {peclet_core-1.3.2 → peclet_core-1.4.0}/CLAUDE.md +21 -1
- {peclet_core-1.3.2 → peclet_core-1.4.0}/PKG-INFO +6 -3
- {peclet_core-1.3.2 → peclet_core-1.4.0}/README.md +5 -2
- {peclet_core-1.3.2 → peclet_core-1.4.0}/docs/Doxyfile +1 -1
- peclet_core-1.4.0/include/peclet/core/solver/anderson.hpp +892 -0
- peclet_core-1.4.0/include/peclet/core/solver/anderson_mpi.hpp +34 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/packaging/pyproject-core.toml +1 -1
- {peclet_core-1.3.2 → peclet_core-1.4.0}/pyproject.toml +1 -1
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/CMakeLists.txt +18 -0
- peclet_core-1.4.0/tests/anderson_test_maps.hpp +96 -0
- peclet_core-1.4.0/tests/test_anderson.cpp +832 -0
- peclet_core-1.4.0/tests/test_anderson_mpi.cpp +248 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.clang-format +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.clang-tidy +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/dependabot.yml +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/workflows/ci.yml +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/workflows/docs.yml +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/workflows/quality.yml +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.github/workflows/release.yml +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/.gitignore +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/CMakeLists.txt +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/LICENSE +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/benchmarks/CMakeLists.txt +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/benchmarks/bench_halo.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/cmake/PecletCorePinMpiexec.cmake +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/cmake/PecletCoreTest.cmake +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/cmake/SuiteNanobind.cmake +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/cmake/peclet-coreConfig.cmake.in +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/docs/archive/README.md +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/docs/archive/cuda-aware-mpi.md +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/common/cpu_budget.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/common/host_parallel.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/common/mpi.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/common/mpi_stub.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/common/portable.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/common/types.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/common/view.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/block_decomposer.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/block_indexer.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/gather_by_global_id.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/grid_redistribute.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/morton_indexer.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/redistribute_topology.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/stage_comm.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/decomp/stage_target.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/domain.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/field/field_set.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/body_properties.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/device_scene.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/grid_sdf.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/primitives.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/quadrature.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/scene.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/scene_builder.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/scene_query.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/sdf.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/geom/vti_io.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/grid_halo.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/grid_halo_topology.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/nbx.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/particle_halo.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/particle_halo_topology.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/particle_migrator.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/particle_migrator_view.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/halo/particle_rebalance.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/interp/particle_grid.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/python/kokkos_teardown.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/python/ndarray_interop.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/scheme/cut_cell_closure.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/scheme/ghost_closure.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/solver/coloring.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/solver/csr_bicgstab.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/solver/csr_operator.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/solver/face_csr.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/solver/graph_amg.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/solver/graph_amg_device.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/solver/vector_ops.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/vof/curvature.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/vof/cutcell.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/vof/plic.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/include/peclet/core/vof/wetting.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/packaging/shell/core_geom.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/packaging/shell/core_init.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/packaging/shell/core_mpi.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/CMakeLists.txt +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/halo_bindings.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/packaging/_halo.pyi +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/packaging/halo_init.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/state_hash.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/state_hash_reference.json +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/test_mpi.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/python/test_shell_deprecation.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/data/rcp_pack_seed3_unit.txt +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/python/CMakeLists.txt +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/python/interop_test_module.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/python/test_ndarray_interop.py +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_aligned_weighted.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_aligned_weighted_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_cpu_budget.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_csr_solver.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_cut_cell_closure.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_decomposition.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_diffusion.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_diffusion_sdf.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_domain.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_field_set.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_batch_device.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_body.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_owner.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_primitives.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_properties.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_quadrature.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_scene.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_scene_builder.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_scene_query.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_geom_tree_grad.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_ghost_particles_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_graph_amg.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_graph_amg_device.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_grid_halo.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_grid_halo_exchange.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_grid_redistribute_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_host_parallel.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_morton_indexer.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_nbx_rounds.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_particle_grid.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_particle_halo_exchange.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_particle_halo_images_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_particle_halo_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_particle_migration.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_particle_migrator_view_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_particle_rebalance.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_sdf.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_skip_mpi.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_stage_redistribute_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_stage_repartition_mpi.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_stage_target.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_util.hpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_vof_pvfit.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tests/test_vti.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tools/cuda_aware_mpi_check.cpp +0 -0
- {peclet_core-1.3.2 → peclet_core-1.4.0}/tools/cudampi-env.sh +0 -0
|
@@ -37,7 +37,7 @@ ctest --test-dir build --output-on-failure -LE bench # 76 ctests (77 with `ben
|
|
|
37
37
|
export PATH=/usr/local/cuda-13.2/bin:$PATH # if the Kokkos install targets the CUDA backend
|
|
38
38
|
cmake -S . -B build_kokkos -DPECLET_CORE_ENABLE_KOKKOS=ON \
|
|
39
39
|
-DCMAKE_PREFIX_PATH=../extern/install/nvidia-cuda
|
|
40
|
-
cmake --build build_kokkos -j && ctest --test-dir build_kokkos --output-on-failure -LE bench #
|
|
40
|
+
cmake --build build_kokkos -j && ctest --test-dir build_kokkos --output-on-failure -LE bench # 96 ctests (97 with `bench`): + device halo / geometry / solver / VoF PV fit / Anderson, np=1,2,4,8
|
|
41
41
|
mpirun -np 4 ./build/benchmarks/bench_halo 48 1 300
|
|
42
42
|
|
|
43
43
|
# Python modules + their ctests (test_mpi.py np=1,2,4,8; state_hash; ndarray interop). Release is
|
|
@@ -199,6 +199,26 @@ Header-only under `include/peclet/core/`:
|
|
|
199
199
|
`ot_optimizer.hpp` and the AMR package are the consumers. Gate: `tests/test_csr_solver.cpp`
|
|
200
200
|
(Kokkos build) — host row kernel vs device matvec, proper colouring of an asymmetric CSR,
|
|
201
201
|
smoothers, BiCGStab + defect correction.
|
|
202
|
+
`solver/anderson.hpp` is **`AndersonCore`**, type-II Anderson acceleration of a steady march
|
|
203
|
+
(design: `../flow/doc/steady_acceleration.md`; register "AndersonCore lives in core from the
|
|
204
|
+
start"): grid-agnostic over an `AndersonState` (padded state views + roles Velocity / Carried +
|
|
205
|
+
ghost width; the metric is the velocity only, the revision-0 Pressure role, SDF mask, `cP` and
|
|
206
|
+
gauge flag were deleted in WO-3b, rev 1's `innerTolerance` in WO-3c), split `prepare` /
|
|
207
|
+
`complete` around the caller's own step, history `(2m+3)·n_s·8·n_pad` bytes. MPI-free: the
|
|
208
|
+
collectives are two callables in `AndersonComm`; `solver/anderson_mpi.hpp` builds them from an
|
|
209
|
+
`MPI_Comm` and is the MPI side. Rev 2 of the design: **no instability guard** — no Ritz
|
|
210
|
+
estimate, no status "unstable" (`Status` is Active / Disabled); a Ritz value of a non-normal map
|
|
211
|
+
is no stability test, and stability evidence comes from the caller's plain steps. Pass 2 reduces
|
|
212
|
+
RR and b only (2·columns + 2 doubles; no reduction reads dG). A restart (ρ > 4·ρ_min at a mixed
|
|
213
|
+
iterate) **restores the last map output** on every rank (keyed on the broadcast decisions) and
|
|
214
|
+
commits nothing of the rejected evaluation, so the state never holds a rejected output (review
|
|
215
|
+
R2). Gates: `tests/test_anderson.cpp`
|
|
216
|
+
(U1a–c, U2–U6, U4 converges on an unstable map and judges nothing, U4b a stable non-normal map,
|
|
217
|
+
U10 Carried fields, U11 restarts at a noisy near-neutral Carried mode never leave a rejected
|
|
218
|
+
output, metric, memory formula) and `tests/test_anderson_mpi.cpp` (U7, np 1/2/4: γ
|
|
219
|
+
bitwise on all ranks, np = 1 bit-identical to serial; R6: a descriptor invalid on one rank
|
|
220
|
+
throws on every rank); both print a per-test `digest` of every
|
|
221
|
+
iterate for bit-identity checks across builds.
|
|
202
222
|
- **`amr/` is gone (2026-09-10)** — the whole AMR tree (the block-local-Morton octree, the distributed
|
|
203
223
|
octree with leaf halos and weighted-ORB rebalancing, the collocated-projection cut-cell
|
|
204
224
|
Navier–Stokes solver, its tests, studies, docs and campaign logs) is the **`peclet-amr`** package,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: peclet-core
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.4.0
|
|
4
4
|
Summary: peclet.core — compatibility shell: peclet.core.geom is now peclet.geom, peclet.core.mpi is now peclet.halo
|
|
5
5
|
Project-URL: Homepage, https://github.com/computational-chemical-engineering/peclet
|
|
6
6
|
Project-URL: Documentation, https://computational-chemical-engineering.github.io/peclet/
|
|
@@ -112,7 +112,10 @@ after `cmake --install`, or as a sibling checkout in the suite.
|
|
|
112
112
|
`face_csr.hpp` (host+device row kernels), `coloring.hpp` (greedy symmetrised graph colouring),
|
|
113
113
|
`csr_operator.hpp` (the device operator, Jacobi and multicolour Gauss–Seidel sweeps),
|
|
114
114
|
`csr_bicgstab.hpp` (preconditioned BiCGStab / defect correction) and `vector_ops.hpp`. Consumed by
|
|
115
|
-
voro's mesh optimiser and by peclet-amr.
|
|
115
|
+
voro's mesh optimiser and by peclet-amr. Since 1.4.0 also `anderson.hpp`: **Anderson acceleration
|
|
116
|
+
of a steady march** (`AndersonCore`, type-II, grid-agnostic, on device; the caller owns the
|
|
117
|
+
fixed-point map, one time step), MPI-free with its collectives built by `anderson_mpi.hpp`.
|
|
118
|
+
Built for flow's `march_to_steady`.
|
|
116
119
|
- **Python bindings** (`python/halo_bindings.cpp`) — a host-only **nanobind** module (no Kokkos):
|
|
117
120
|
**`peclet.halo`** exposes the Lagrangian halo (`ParticleMigrator`, `ParticleHalo`: migration /
|
|
118
121
|
ghosts / count-weighted rebalance) to an mpi4py driver. The shared zero-copy Kokkos
|
|
@@ -133,7 +136,7 @@ after `cmake --install`, or as a sibling checkout in the suite.
|
|
|
133
136
|
|
|
134
137
|
Validated end-to-end by distributed explicit heat-diffusion solvers (plain, and **around an SDF solid
|
|
135
138
|
obstacle**) matching a serial reference cell-for-cell across ranks, and consumed by the validated
|
|
136
|
-
`flow` and `dem` distributed solvers.
|
|
139
|
+
`flow` and `dem` distributed solvers. 76 ctests in the plain host+MPI build, 96 with Kokkos (`np` 1–8),
|
|
137
140
|
plus 6 Python ctests in the `python/` build.
|
|
138
141
|
|
|
139
142
|
## Build / test / benchmark
|
|
@@ -92,7 +92,10 @@ after `cmake --install`, or as a sibling checkout in the suite.
|
|
|
92
92
|
`face_csr.hpp` (host+device row kernels), `coloring.hpp` (greedy symmetrised graph colouring),
|
|
93
93
|
`csr_operator.hpp` (the device operator, Jacobi and multicolour Gauss–Seidel sweeps),
|
|
94
94
|
`csr_bicgstab.hpp` (preconditioned BiCGStab / defect correction) and `vector_ops.hpp`. Consumed by
|
|
95
|
-
voro's mesh optimiser and by peclet-amr.
|
|
95
|
+
voro's mesh optimiser and by peclet-amr. Since 1.4.0 also `anderson.hpp`: **Anderson acceleration
|
|
96
|
+
of a steady march** (`AndersonCore`, type-II, grid-agnostic, on device; the caller owns the
|
|
97
|
+
fixed-point map, one time step), MPI-free with its collectives built by `anderson_mpi.hpp`.
|
|
98
|
+
Built for flow's `march_to_steady`.
|
|
96
99
|
- **Python bindings** (`python/halo_bindings.cpp`) — a host-only **nanobind** module (no Kokkos):
|
|
97
100
|
**`peclet.halo`** exposes the Lagrangian halo (`ParticleMigrator`, `ParticleHalo`: migration /
|
|
98
101
|
ghosts / count-weighted rebalance) to an mpi4py driver. The shared zero-copy Kokkos
|
|
@@ -113,7 +116,7 @@ after `cmake --install`, or as a sibling checkout in the suite.
|
|
|
113
116
|
|
|
114
117
|
Validated end-to-end by distributed explicit heat-diffusion solvers (plain, and **around an SDF solid
|
|
115
118
|
obstacle**) matching a serial reference cell-for-cell across ranks, and consumed by the validated
|
|
116
|
-
`flow` and `dem` distributed solvers.
|
|
119
|
+
`flow` and `dem` distributed solvers. 76 ctests in the plain host+MPI build, 96 with Kokkos (`np` 1–8),
|
|
117
120
|
plus 6 Python ctests in the `python/` build.
|
|
118
121
|
|
|
119
122
|
## Build / test / benchmark
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
DOXYFILE_ENCODING = UTF-8
|
|
7
7
|
PROJECT_NAME = "core"
|
|
8
|
-
PROJECT_NUMBER = 1.
|
|
8
|
+
PROJECT_NUMBER = 1.4.0
|
|
9
9
|
PROJECT_BRIEF = "Shared MPI block decomposition, asynchronous ghost-layer exchange, SDF geometry, load balancing (header-only C++20)"
|
|
10
10
|
OUTPUT_DIRECTORY = docs
|
|
11
11
|
HTML_OUTPUT = html
|