T8code.jl
T8code.jl is a Julia package
that wraps t8code
, a C/C++ library to manage
multiple connected adaptive quadtrees or octrees in parallel and with possibly mixed
element types.
Installation
If you have not yet installed Julia, please follow the instructions for your operating system. T8code.jl works with Julia v1.6 and later.
T8code.jl is a registered Julia package. Hence, you can install it by executing the following commands in the Julia REPL:
julia> import Pkg; Pkg.add(["T8code", "MPI"])
With this command, you install both
T8code.jl and
MPI.jl.
Currently, T8code.jl supports
only builds of the C/C++ library t8code
with MPI support, so you need to initialize MPI appropriately as described
in the Usage section below.
T8code.jl depends on the binary
distribution of the t8code
library,
which is available in the Julia package T8code_jll.jl and which is automatically
installed as a dependency. The binaries provided by T8code_jll.jl support MPI
and are compiled against the default MPI binaries of MPI.jl. At the time of
writing, these are the binaries provided by MicrosoftMPI_jll.jl on Windows and
MPICH_jll.jl on all other platforms.
By default, T8code.jl provides
pre-generated Julia bindings to all exported C interface functions of the underlying
t8code
library. If you want/need to
generate new bindings, please follow the instructions in the dev
folder and
copy the generated files to the appropriate places in src
.
Open Issues
- No support for custom version of MPI and/or p4est and t8code yet.
- No support for Windows platform yet.
Authors
T8code.jl is mainly maintained by Johannes Markert (German Aerospace Center (DLR), Germany). It is an adapted fork from P4est.jl maintained by Michael Schlottke-Lakemper (RWTH Aachen University, Germany) and Hendrik Ranocha (University of Hamburg, Germany).
The t8code
library itself is written by
Johannes Holke and Carsten Burstedde, and others.
License and contributing
T8code.jl is licensed under the MIT license (see LICENSE.md).
t8code
itself is licensed under the GNU
General Public License, version 2.