Coder Social home page Coder Social logo

pipinspace / ionsolver Goto Github PK

View Code? Open in Web Editor NEW
13.0 2.0 1.0 40.05 MB

IonSolver is a magnetohydrodynamic simulation software featuring an extended Lattice Boltzmann method and GPU acceleration

License: Other

Rust 62.10% C 37.90%
gpu simulation fluid-dynamics fluid-solver high-performance-computing lattice-boltzmann lbm magnetohydrodynamics opencl physics science scientific-computing

ionsolver's Introduction

IonSolver

IonSolver logo

IonSolver is a magnetohydrodynamic simulation software using an extended Lattice Boltzmann method implemented in Rust and OpenCL. The software features a rudimentary GUI and both a single-node and multi-node execution model. IonSolver uses the Lattice Boltzman method for the simulated fluids, initial kernel functions for the LBM where taken with permission from the software FluidX3D by Dr. Moritz Lehmann. To allow for simulations of all detail levels, this software can be compiled in single-node or multi-node mode. In single-node mode the simulation may be distributed over multiple OpenCL-capable compute devices (ideally GPUs) on a single compute node and in multi-node mode the simulation is distributed over multiple compute nodes that communicate over MPI. This makes it possible to run IonSolver efficiently on devices ranging from laptops to supercomputers.

This software was created as part of the Jugend Forscht competition 2024 and reached 4th place in the Physics category on the state level. It will continue to receive updates past the competition.

Usage

IonSolver is not provided as a single executable but needs to be compiled from source. It also features multiple optional features that need to be manually activated. To run this software, first clone this repository and install rust if not installed already. The software is compiled with the command:
cargo build --release --features "list of desired features"

Available features are:

  • gui: A simple gui displaying and providing control over the simulation. Only supported in single-node mode for now.
  • multi-node: Distribute the simulation over multiple compute nodes. The compiled executable must be distributed to all nodes and started over MPI

To run the software in single-node mode use

cargo run --release

multi-node mode requires an mpi executor. These vary by system, but the executables do not need special arguments so running the program should be simple. The program aborts if the configured number of domains does not match up with the number of compute nodes exactly.

Saving/Loading

IonSolver simulations can be saved to a file that allows complete recovery of a previous simulated state. The file format is documented in FILE_LAYOUT.txt. Saving and loading simulations is fully implemented in single-node mode, but not yet for multi-node setups. The easiest way to use this feature is to enable the gui feature that provides a simple interface for saving/loading simulations.

Licensing

IonSolver orients itself along the License of its base project FluidX3D. It is however not affiliated with FluidX3D directly. Personal/scientific use is allowed, commercial and millitary use in any way is forbidden. When using using this software, give credit through the references below. If you publish data/results generated by altered source versions, the altered source code must be published as well. See the license for details.

External Code/Libraries/Images used in IonSolver

  • OpenCL-Headers for GPU parallelization (Khronos Group)
  • marching-cubes tables for isosurface generation on GPU (Paul Bourke)
  • ocl for high-level OpenCL bindings
  • ocl-macros convenience macros for ocl (self-written)
  • image for image saving
  • egui for immediate mode ui rendering (only with gui feature)
  • mpi for distributed memory computing (only with multi-node feature)
  • bincode for mpi communication (only with multi-node feature)
  • serde for mpi communication (only with multi-node feature)

References

ionsolver's People

Contributors

fn-2189 avatar pipinspace avatar tudbut avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

xupeiwust

ionsolver's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.