Xyst
Xyst is a Navier-Stokes solver for engineering flows.
The goal of this project is to simulate engineering problems with a production-quality code that is extensible and maintainable, using hardware resources efficiently, even for problems with unpredictable, heterogeneous, and dynamic compute-load distribution.
The software implementation facilitates the effective use of hardware of any size, from laptops to the largest distributed-memory clusters, by combining data-, and task-parallelism on top of the Charm++ runtime system. Charm++'s execution model is asynchronous by default, allowing arbitrary overlap of computation and communication. Built-in automatic load balancing enables redistribution of heterogeneous computational load based on real-time CPU load measurement at negligible cost. The runtime system also features automatic checkpointing, fault tolerance, resilience against hardware failure, and supports power-, and energy-aware computation.
Tools
Xyst consists of the following tools:
Inciter — Navier-Stokes solver for engineering flows
Implements multiple flow solvers for complex engineering geometries.
MeshConv — Tetrahedron-mesh converter
Converts large tetrahedron meshes between various formats.
UnitTest — Test suite for (a)synchronous functions
Tests serial and (a)synchronous concurrent functions.
Build
Install prerequisites: Debian-based linux
apt install git cmake g++ ninja-build libopenmpi-dev libnetcdf-mpi-dev
Clone, build, test
git clone https://codeberg.org/xyst/xyst.git && cd xyst mkdir build && cd build && cmake -GNinja ../src && ninja && cd - cd build && ./charmrun +p4 Main/unittest && ctest -j4 && cd -
All executables will be under build/Main/
.
License
History
Xyst is forked from Quinoa. Compared to Quinoa, Xyst
- Removes the stochastic differential equation solver (walker),
- Implements different solvers,
- Uses Lua for input files, and
- Simplifies Quinoa's code and its build system.
Development on Quinoa and Xyst continues on different forks.