Efficiently simulate soft filaments on devices ranging from laptops to supercomputing clusters.
Elastica++ is a C++ package for simulating the dynamics of soft filaments
that can bend, twist, stretch, and shear. These slender structures appear
across natural and engineered systems, from DNA strands and flagella to cables,
fibers, and soft robotic assemblies.
The package models these systems using Cosserat rod theory and supports
assemblies of rods interacting with complex exogenous effects such as contact,
friction, and hydrodynamics, as well as endogenous effects such as muscular
activity. Elastica++ maps these assemblies efficiently to multicore
processors using its Block architecture. More background is available on the
Elastica project website.
cmake -B build -G Ninja \
-D CMAKE_TOOLCHAIN_FILE="$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake" \
-D BUILD_TESTING=OFF \
-D ELASTICA_BUILD_BENCHMARKS=OFF \
-D ELASTICA_BUILD_EXAMPLES=OFF \
-D ELASTICA_BUILD_PYTHON_BINDINGS=OFF
cmake --build build --parallelWe put details of how to use this package in documentation
To build yourself,
cmake -B build-docs -G Ninja \
-D ELASTICA_BUILD_DOCUMENTATION=ON
cmake --build build-docs --target doc --parallelelastica/: core library sources and headerscmake/: CMake modules and project build helpersdocs/: project documentation pagestests/: unit testsbenchmarks/: benchmark targetssupport/: cluster setup and helper scripts
For cluster-specific setup notes, see support/README.md.
Contributions are welcome.
- Report bugs or request features through the repository's GitHub issues.
- Open pull requests against the
mainbranch. - Follow the contribution guidance in CONTRIBUTING.md.
- Ensure the relevant CI checks pass before requesting review.