Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 6 additions & 30 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,18 +59,10 @@ jobs:
-DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
-DVCPKG_TARGET_TRIPLET=${{ matrix.triplet }}

- name: Build tests (Debug)
- name: Build all targets (Debug)
shell: bash
run: >-
cmake --build build-debug --parallel --target
test_algebra
test_topology_triangle
test_topology_diffusion
test_ops_curvature_flow
test_ops_spectral_geometry
test_ops_hodge
test_io_meshes
igneous-hodge
cmake --build build-debug --parallel

- name: Run tests
shell: bash
Expand All @@ -84,18 +76,10 @@ jobs:
-DCMAKE_TOOLCHAIN_FILE=${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
-DVCPKG_TARGET_TRIPLET=${{ matrix.triplet }}

- name: Build release binaries
- name: Build all targets (Release)
shell: bash
run: >-
cmake --build build-release --parallel --target
igneous-mesh
igneous-point
igneous-diffusion
igneous-spectral
igneous-hodge
bench_geometry
bench_dod
bench_pipelines
cmake --build build-release --parallel

sanitizers:
name: Sanitizers (ubuntu)
Expand Down Expand Up @@ -135,18 +119,10 @@ jobs:
-DCMAKE_CXX_FLAGS='-fsanitize=address,undefined -fno-omit-frame-pointer'
-DCMAKE_EXE_LINKER_FLAGS='-fsanitize=address,undefined'

- name: Build tests (Sanitizers)
- name: Build all targets (Sanitizers)
shell: bash
run: >-
cmake --build build-sanitize --parallel --target
test_algebra
test_topology_triangle
test_topology_diffusion
test_ops_curvature_flow
test_ops_spectral_geometry
test_ops_hodge
test_io_meshes
igneous-hodge
cmake --build build-sanitize --parallel

- name: Run tests (Sanitizers)
shell: bash
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,9 @@ DiffusionGeometry/
notes/hodge/.venv_ref/
notes/hodge/results/*
!notes/hodge/results/.gitkeep
notes/diffgeo_ops/.venv_ref/
notes/diffgeo_ops/results/*
!notes/diffgeo_ops/results/.gitkeep
visualizations/results/*
!visualizations/results/.gitkeep
visualizations/tmp_*/
17 changes: 17 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ add_igneous_test(test_topology_diffusion tests/test_topology_diffusion.cpp)
add_igneous_test(test_ops_curvature_flow tests/test_ops_curvature_flow.cpp)
add_igneous_test(test_ops_spectral_geometry tests/test_ops_spectral_geometry.cpp)
add_igneous_test(test_ops_hodge tests/test_ops_hodge.cpp)
add_igneous_test(test_ops_diffusion_basis tests/test_ops_diffusion_basis.cpp)
add_igneous_test(test_ops_diffusion_forms tests/test_ops_diffusion_forms.cpp)
add_igneous_test(test_ops_diffusion_wedge tests/test_ops_diffusion_wedge.cpp)
add_igneous_test(test_io_meshes tests/test_io_meshes.cpp)

add_executable(bench_memory benches/bench_memory.cpp)
Expand Down Expand Up @@ -86,6 +89,9 @@ target_link_libraries(igneous-spectral PRIVATE igneous fmt::fmt)
add_executable(igneous-hodge src/main_hodge.cpp)
target_link_libraries(igneous-hodge PRIVATE igneous fmt::fmt)

add_executable(igneous-diffusion-topology src/main_diffusion_topology.cpp)
target_link_libraries(igneous-diffusion-topology PRIVATE igneous fmt::fmt)

add_test(
NAME test_hodge_cli_outputs
COMMAND bash ${CMAKE_SOURCE_DIR}/tests/test_hodge_cli_outputs.sh
Expand All @@ -96,3 +102,14 @@ add_test(
NAME test_hodge_parity_optional
COMMAND bash ${CMAKE_SOURCE_DIR}/tests/test_hodge_parity_optional.sh)
set_tests_properties(test_hodge_parity_optional PROPERTIES LABELS "hodge;parity")

add_test(
NAME test_diffgeo_cli_outputs
COMMAND bash ${CMAKE_SOURCE_DIR}/tests/test_diffgeo_cli_outputs.sh
$<TARGET_FILE:igneous-diffusion-topology>)
set_tests_properties(test_diffgeo_cli_outputs PROPERTIES LABELS "diffgeo;cli")

add_test(
NAME test_diffgeo_parity_optional
COMMAND bash ${CMAKE_SOURCE_DIR}/tests/test_diffgeo_parity_optional.sh)
set_tests_properties(test_diffgeo_parity_optional PROPERTIES LABELS "diffgeo;parity")
36 changes: 31 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,21 @@ cmake --build build -j8
./build/igneous-hodge
```

## Visualizations

Per-main output viewers are available under `visualizations/`.

```bash
python3 visualizations/view_main_point.py --run --open
python3 visualizations/view_main_mesh.py --run --open
python3 visualizations/view_main_diffusion.py --run --open
python3 visualizations/view_main_spectral.py --run --open
python3 visualizations/view_main_hodge.py --run --open
python3 visualizations/view_main_diffusion_topology.py --run --open
```

Detailed usage is documented in `visualizations/README.md`.

## Reference Implementation

The diffusion/Hodge parity work in this repository is aligned against the Python
Expand All @@ -61,13 +76,19 @@ Standard parity round:
./scripts/hodge/run_parity_round.sh
```

Optional diagnostic plots for a parity round:
## Diffusion Topology Parity Workflow

Standard torus+sphere parity round:

```bash
./scripts/diffgeo/run_parity_round.sh
```

By default, `test_diffgeo_parity_optional` reports parity metrics but only hard-fails
when strict enforcement is requested:

```bash
ROUND_DIR="$(ls -1dt notes/hodge/results/round_* | head -n1)"
notes/hodge/.venv_ref/bin/python \
./scripts/hodge/diagnostics/plot_hodge_outputs.py \
--round-dir "${ROUND_DIR}"
IGNEOUS_REQUIRE_PARITY=1 ctest --test-dir build -R test_diffgeo_parity_optional --output-on-failure
```

Set `IGNEOUS_BENCH_MODE=1` to disable heavy export paths in runtime apps.
Expand Down Expand Up @@ -97,9 +118,14 @@ Current suites:
- `test_ops_curvature_flow`
- `test_ops_spectral_geometry`
- `test_ops_hodge`
- `test_ops_diffusion_basis`
- `test_ops_diffusion_forms`
- `test_ops_diffusion_wedge`
- `test_io_meshes`
- `test_hodge_cli_outputs`
- `test_hodge_parity_optional` (skips unless `DiffusionGeometry/` is available, unless forced)
- `test_diffgeo_cli_outputs`
- `test_diffgeo_parity_optional` (strict-fail only when `IGNEOUS_REQUIRE_PARITY=1`)

## Benchmarks

Expand Down
6 changes: 3 additions & 3 deletions benches/bench_dod.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@
#include <igneous/data/mesh.hpp>
#include <igneous/ops/curvature.hpp>
#include <igneous/ops/flow.hpp>
#include <igneous/ops/geometry.hpp>
#include <igneous/ops/hodge.hpp>
#include <igneous/ops/spectral.hpp>
#include <igneous/ops/diffusion/geometry.hpp>
#include <igneous/ops/diffusion/hodge.hpp>
#include <igneous/ops/diffusion/spectral.hpp>

using MeshSig = igneous::core::Euclidean3D;
using SurfaceMesh = igneous::data::Mesh<MeshSig, igneous::data::TriangleTopology>;
Expand Down
6 changes: 3 additions & 3 deletions benches/bench_pipelines.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
#include <igneous/core/algebra.hpp>
#include <igneous/data/mesh.hpp>
#include <igneous/io/importer.hpp>
#include <igneous/ops/geometry.hpp>
#include <igneous/ops/hodge.hpp>
#include <igneous/ops/spectral.hpp>
#include <igneous/ops/diffusion/geometry.hpp>
#include <igneous/ops/diffusion/hodge.hpp>
#include <igneous/ops/diffusion/spectral.hpp>
#include <igneous/ops/transform.hpp>

using MeshSig = igneous::core::Euclidean3D;
Expand Down
9 changes: 6 additions & 3 deletions include/igneous/igneous.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@

#include <igneous/ops/curvature.hpp>
#include <igneous/ops/flow.hpp>
#include <igneous/ops/geometry.hpp>
#include <igneous/ops/hodge.hpp>
#include <igneous/ops/spectral.hpp>
#include <igneous/ops/diffusion/basis.hpp>
#include <igneous/ops/diffusion/forms.hpp>
#include <igneous/ops/diffusion/geometry.hpp>
#include <igneous/ops/diffusion/hodge.hpp>
#include <igneous/ops/diffusion/products.hpp>
#include <igneous/ops/diffusion/spectral.hpp>
#include <igneous/ops/transform.hpp>
Loading