Skip to content

ctfl-public/isthmus

Repository files navigation


ISTHMUS: Interfacing Surface Triangles and voxels for Heterogenous MUltiphysics Simulations

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.

License

This software is licensed under the MIT License (see LICENSE file). Please also see third-party-licenses/ for licensing information on bundled dependencies.

Table of Contents

More

System Requirements

  • 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.

Installation

The repository supports two common install paths:

  • Native C++ build, which produces libisthmus_cpp.a for C++ solvers and standalone examples.
  • Python API install, which builds the _isthmus extension required for import isthmus.

Native C++ build

Use this path when you want to link ISTHMUS into C++ code. It does not install the Python API.

Step 1: configure the native build

Generate the build system by running:

cmake -S . -B build

This creates a build tree in build/ and prepares the reusable isthmus_cpp library target together with its package metadata.

Step 2: build ISTHMUS

Compile the library and its native test executable by running:

cmake --build build -j

This build produces:

  • the library archive
  • the test executable
  • the generated CMake package files for downstream find_package(isthmus_cpp) consumers

Step 3: run the native tests

Run the compiled C++ test suite using:

ctest --test-dir build --output-on-failure

This executes the lightweight native regression suite and prints detailed output for any failing test.

Step 4: use standalone examples

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 -j

Or build with the local GNU Make entrypoint:

make -C examples/ablation_single_phase

The 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.

Python API install

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-isolation

The helper script wraps the same workflow and runs a smoke test:

./install.sh

For more Python packaging details, see python/README.md.

ISTHMUS test

To confirm everything is working as expected, configure and build the repository root, then run

ctest --test-dir build --output-on-failure

You should receive a message indicating that all native tests have passed and no errors were found.


Citing ISTHMUS

Please cite the following articles when mentioning ISTHMUS in your own papers.

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}
  }

About

No description, website, or topics provided.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors