Thunderbolt.jl

A high performance cardiac multiphysics system written in Julia

Welcome to the documentation for Thunderbolt. The main goal of this project is to provide a single framework where we can develop new models and high performance parallel solvers.

Warning

This package is under heavy development. Expect regular breaking changes for now. If you are interested in joining development, then either comment an issue or reach out via julialang.zulipchat.com, via mail or via julialang.slack.com. Alternatively open a discussion if you have something specific in mind.

Note

If you are interested in using this package, then I am also happy to to get some constructive feedback, especially if things don't work out in the current design. This can be done via julialang.slack.com, julialang.zulipchat.com or via mail.

Note

If you use this package in an academic context, then I would be happy if you could cite it. Please also cite additionally the corresponding sources for models, numerical methods and utilities used in your code via this package.

How the documentation is organized

This high level view of the documentation structure will help you find what you are looking for. The document is organized as follows[1]:

  • Tutorials are thoroughly documented examples which guides you through the process of building and solving cardiac models in Thunderbolt.
  • Topic guides contains more in-depth explanations and discussions about multiphysics modeling concepts and their numerical treatment, and specifically how these are realized in Thunderbolt.
  • API Reference contains the technical API reference of functions and methods (e.g. the documentation strings).
  • How-to guides will guide you through the steps involved in addressing common tasks and use-cases. These usually build on top of the tutorials and thus assume basic knowledge of how Thunderbolt works.

In addition there is the Developer documentation, for documentation of Ferrite internal code.

Getting started

If you are new to the Thunderbolt project, then it is suggested to start with the tutorials section before tackling more complex problems.

More information coming soon...

TODO refer to an example project via DrWatson.jl.

Getting help

If you have questions about Thunderbolt it is suggested to use the #Thunderbolt.jl stream on Zulip. Zulip is preferred over Slack, because the discussions are available over longer time periods.

Installation

To use Thunderbolt you first need to install Julia, see https://julialang.org/ for details. Installing Thunderbolt can then be done from the Pkg REPL; press ] at the julia> promp to enter pkg> mode:

pkg> add Ferrite#master, https://github.com/termi-official/Thunderbolt.jl#main
Note

The package is under development, which is why you will need the currently (unreleased) 1.0 version of Ferrite.jl and the (unregistered) Thunderbolt.jl package.

This will install Thunderbolt and all necessary dependencies. Press backspace to get back to the julia> prompt. (See the documentation for Pkg, Julia's package manager, for more help regarding package installation and project management.)

Finally, to load Thunderbolt, use

using Thunderbolt

You are now all set to start using Thunderbolt!

Contributing to Thunderbolt

Thunderbolt is under very active development. If you find a bug, then please open an issue on GitHub with a reproducer. If you are interested in joining development, then either comment an issue or reach out via Zulip, via mail or via Slack. Alternatively open a discussion if you have something specific in mind - please just check for open discussion before opening a new one.

A detailed contributor guide is coming soon...