ISTHMUS, originally developed at the Computational Thermophysics and Fluids Laboratory (CFTL) of University of Kentucky, provides a bridge between voxelized geometries and their surface representations. While voxels and pixels are commonly used to approximate solid structures in imaging and simulations, voxelized surfaces fail to capture curved interfaces, creating challenges when modeling fluid flow around them. Isthmus introduces Marching Windows, a method to generate accurate surface definitions for voxelized structures and consistently transfer fluxes between the surface mesh and voxels.
This repository root now contains the native C++ implementation of ISTHMUS. The C++ library is intended to provide a reusable native interface for downstream solvers while preserving the marching-windows behavior that ISTHMUS relies on.
For examples of the capabilities of ISTHMUS, see the native demos located in the examples/ directory.
The technical details of the algorithm implemented in ISTHMUS are presented in this ArXiv document.
This software is licensed under the MIT License (see LICENSE file).
Please also see third-party-licenses/ for licensing information on bundled dependencies.
- Feature requests and bugs can be raised on the Github issue tracker
- Marching windows theory
- Technical paper of the ISTHMUS algorithm
- Examples
- Verification cases (Python-based for now)
- Python bindings
- Legacy Python version
- A C++20-capable compiler.
- CMake 3.22 or newer.
- Memory needs scale with voxel grid size.
- Optional:
- GNU Make for the standalone example Makefiles.
- A Linux-like environment if you want to follow the exact command examples below.
The repository supports two common install paths:
- Native C++ build, which produces
libisthmus_cpp.afor C++ solvers and standalone examples. - Python API install, which builds the
_isthmusextension required forimport isthmus.
Use this path when you want to link ISTHMUS into C++ code. It does not install the Python API.
Generate the build system by running:
cmake -S . -B buildThis creates a build tree in build/ and prepares the reusable isthmus_cpp library target together with its package metadata.
Compile the library and its native test executable by running:
cmake --build build -jThis build produces:
- the library archive
- the test executable
- the generated CMake package files for downstream
find_package(isthmus_cpp)consumers
Run the compiled C++ test suite using:
ctest --test-dir build --output-on-failureThis executes the lightweight native regression suite and prints detailed output for any failing test.
The repository ships native standalone examples in the examples/ directory.
These include:
Each example can be built in one of two ways.
Build with CMake by pointing the example at the root build tree:
cmake -S examples/ablation_single_phase -B examples/ablation_single_phase/build -Disthmus_cpp_DIR="$PWD/build"
cmake --build examples/ablation_single_phase/build -jOr build with the local GNU Make entrypoint:
make -C examples/ablation_single_phaseThe local example Makefiles link against build/libisthmus_cpp.a by default.
Override ISTHMUS_BUILD_DIR=/path/to/build if your native library archive lives somewhere else.
Use this path when you want to call ISTHMUS from Python with import isthmus.
The regular native C++ build above does not create the _isthmus Python extension.
The shortest install path is:
python3 -m pip install .
python3 -c "import isthmus; print(isthmus.__version__)"For an editable development install, run:
python3 -m pip install -e . --no-build-isolationThe helper script wraps the same workflow and runs a smoke test:
./install.shFor more Python packaging details, see python/README.md.
To confirm everything is working as expected, configure and build the repository root, then run
ctest --test-dir build --output-on-failureYou should receive a message indicating that all native tests have passed and no errors were found.
Please cite the following articles when mentioning ISTHMUS in your own papers.
- Huff et al. A Consistent Interface Reconstruction and Coupling Method for Multiphysics Simulations. ArXiv 2026.
- Yassin et al. ISTHMUS: Interfacing Surface Triangles and voxels for Heterogeneous MUltiphysics Simulations. SoftwareX 2026.
Bibtex
@article{huff2026consistent,
title = {A Consistent Interface Reconstruction and Coupling Method for Multiphysics Simulations},
author = {Huff, Ethan and Poovathingal, Savio J.},
journal = {arXiv preprint},
year = {2026},
doi = {10.48550/arXiv.2603.07396},
archivePrefix = {arXiv},
primaryClass = {physics.flu-dyn}
}
@article{yassin2026isthmus,
title = {ISTHMUS: Interfacing Surface Triangles and voxels for Heterogeneous MUltiphysics Simulations},
author = {Yassin, Ahmed H. and Huff, Ethan H. and Mohan Ramu, Vijay B. and Tacchi, Bruno and Am\`erico, Carlos E. and Stoffel, Tyler D. and Poovathingal, Savio J.},
journal = {SoftwareX},
volume = {34},
number = {102660},
doi = {10.1016/j.softx.2026.102660},
year = {2026}
}