TrixiParticles.jl is a numerical simulation framework designed for particle-based numerical methods, with an emphasis on multiphysics applications, written in Julia. A primary goal of the framework is to be user-friendly for engineering, science, and educational purposes. In addition to its extensible design and optimized implementation, we prioritize the user experience, including installation, pre- and postprocessing. Its features include:
- Incompressible Navier-Stokes
- Methods: Weakly Compressible Smoothed Particle Hydrodynamics (WCSPH), Entropically Damped Artificial Compressibility (EDAC)
- Models: Surface Tension, Open Boundaries
- Solid-body mechanics
- Methods: Total Lagrangian SPH (TLSPH), Discrete Element Method (DEM)
- Fluid-Structure Interaction
- Particle sampling of complex geometries from
.stl
and.asc
files. - Output formats:
- VTK
We provide several example simulation setups in the examples
folder (which can be accessed from Julia via examples_dir()
).
2D Dam Break |
Moving Wall |
Oscillating Beam |
Dam Break with Elastic Plate |
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.