Particle-based multiphysics simulations in Julia
TrixiParticles.jl is a high-performance numerical simulation framework for particle-based methods, focused on the simulation of complex multiphysics problems, and written in Julia.
TrixiParticles.jl focuses on the following use cases:
It offers intuitive configuration, robust pre- and post-processing, and vendor-agnostic GPU-support based on the Julia package KernelAbstractions.jl.
.stl
and .asc
files.We provide several example simulation setups in the examples
folder (which can be accessed from Julia via examples_dir()
).
If you have not yet installed Julia, please follow the instructions for your operating system. TrixiParticles.jl works with Julia v1.9 and newer. We recommend using the latest stable release of Julia.
TrixiParticles.jl is a registered Julia package. You can install TrixiParticles.jl, OrdinaryDiffEq.jl (used for time integration) and Plots.jl by executing the following commands in the Julia REPL:
julia> using Pkg
julia> Pkg.add(["TrixiParticles", "OrdinaryDiffEq", "Plots"])
If you plan on editing TrixiParticles.jl itself, you can download TrixiParticles.jl to a local folder and use the code from the cloned directory:
git clone git@github.com:trixi-framework/TrixiParticles.jl.git
cd TrixiParticles.jl
mkdir run
julia --project=run -e 'using Pkg; Pkg.develop(PackageSpec(path="."))' # Add TrixiParticles.jl to `run` project
julia --project=run -e 'using Pkg; Pkg.add(["OrdinaryDiffEq", "Plots"])' # Add additional packages
If you installed TrixiParticles.jl this way, you always have to start Julia with the
--project
flag set to your run
directory, e.g.,
julia --project=run
from the TrixiParticles.jl root directory. Further details can be found in the documentation.
In the Julia REPL, first load the package TrixiParticles.jl.
julia> using TrixiParticles
Then start the simulation by executing
julia> trixi_include(joinpath(examples_dir(), "fluid", "hydrostatic_water_column_2d.jl"))
This will open a new window with a 2D visualization of the final solution:
Further details can be found in the documentation.
You can find the documentation for the latest release here.
If you use TrixiParticles.jl in your own research or write a paper using results obtained with the help of TrixiParticles.jl, please cite it as
@misc{trixiparticles,
title={{T}rixi{P}articles.jl: {P}article-based multiphysics simulations in {J}ulia},
author={Erik Faulhaber and Niklas Neher and Sven Berger and
Michael Schlottke-Lakemper and Gregor Gassner},
year={2024},
howpublished={\url{https://github.com/trixi-framework/TrixiParticles.jl}},
doi={10.5281/zenodo.10797541}
}
Erik Faulhaber (University of Cologne) and Niklas Neher (HLRS) implemented the foundations for TrixiParticles.jl and are principal developers along with Sven Berger (hereon). The project was started by Michael Schlottke-Lakemper (University of Augsburg) and Gregor Gassner (University of Cologne), who provide scientific direction and technical advice. The full list of contributors can be found in AUTHORS.md.
TrixiParticles.jl is licensed under the MIT license (see LICENSE.md). Since TrixiParticles.jl is
an open-source project, we are very happy to accept contributions from the
community. Please refer to CONTRIBUTING.md for more details.
Note that we strive to be a friendly, inclusive open-source community and ask all members
of our community to adhere to our CODE_OF_CONDUCT.md
.
To get in touch with the developers,
join us on Slack
or create an issue.
The project has benefited from funding from hereon and HiRSE.