Installation
Setting up Julia
If you have not yet installed Julia, please follow the instructions on the official website. TrixiParticles.jl works with Julia v1.9 and newer. We recommend using the latest stable release of Julia.
For users
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"])
For developers
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.
The advantage of using a separate run
directory is that you can also add other related packages (e.g., OrdinaryDiffEq.jl, see above) to the project in the run
folder and always have a reproducible environment at hand to share with others.
Optional software/packages
- OrdinaryDiffEq.jl – A Julia package of ordinary differential equation solvers that is used in the examples
- Plots.jl – Julia Plotting library that is used in some examples
- PythonPlot.jl – Plotting library that can be used instead of Plots.jl
- ParaView – Software that can be used for visualization of results
Common issues
If you followed the installation instructions for developers and you run into any problems with packages when pulling the latest version of TrixiParticles.jl, start Julia with the project in the run
folder,
julia --project=run
update all packages in that project, resolve all conflicts in the project, and install all new dependencies:
julia> using Pkg
julia> Pkg.update()
julia> Pkg.resolve()
julia> Pkg.instantiate()