Home

Welcome to the documentation page of GalerkinToolkit!

Contents

  • Home – This page.
  • Manual – The user and developer guide. It gives the detailed explanations on how to use and extend the library.
  • Examples – They provide a quick overview of the main functionality of the library.
  • Tutorials – Learning material to get familiar with the building blocks of the library and the basics of the FEM. They are useful even if you are FEM expert as they walk you through the library step by step.
  • API – All the docstrings are here.

NB. This documentation is organized based on the Diátaxis model.

Overview

What

GalerkinToolkit is a high-performance finite element (FE) toolbox fully implemented in the Julia programming language. It provides modular building blocks to easily implement custom finite element codes to solve partial differential equations (PDEs), using a variety of numerical schemes, and across diverse computing environments. GalerkinToolkit integrates seamlessly with the broader Julia ecosystem. It supports external solvers such as PartitionedSolvers.jl, PetscCall.jl, LinearSolve.jl, NonLinearSolve.jl, and DifferentialEquations.jl to handle the algebraic systems resulting from PDE discretizations. For visualization, the toolkit provides plotting recipes for Makie.jl and utilities for exporting results in VTK format using WriteVTK.jl.

Why

GalerkinToolkit is definitively not the first FEM software project out there, but it has some unique features. This includes a unified API with high- and low-level abstractions, a deep integration with the Julia package ecosystem, a new form compiler, and a redesign of the core ideas behind Gridap.

Find more information about GalerkinToolkit's features and novelties in the Introduction of the manual.

Code examples

Hello, World!Interior penaltyLagrange multipliers
Poisson equationp-LaplacianLinear elasticity
Stokes lid-driven cavityTransient heat equationLaplace-Beltrami

How to start

In the Manual, you will find explanations about the software design and guides for users and developers. Look into the Examples section for an overview of how to solve different types of PDEs with GalerkinToolkit. Learn how to use the library (and the basics of FEM) with the tutorials in the Tutorials section.

Pre-requisites

You need to be fluent in Julia before using GalerkinToolkit. You can learn Julia using the learning materials in julialang.org or the lecture notes in https://www.francescverdugo.com/XM_40017/dev/.

It is also required to be familiar with the basics of FE methods. The basics are explained in the Tutorials section. For more in depth introduction, you can use the following books:

  • C. Johnson [1]
  • J. Whiteley [2]
  • S.C. Brenner and L. R. Scott [3]

Help and discussion

  • You can open a new discussion to ask questions here.
  • If you have found a bug, open an issue here. Do not forget to include a (minimal) reproducer.

How to cite

See the CITATION.cff file.

Contributing

This package is under active development and there are several ways to contribute:

  • by enhancing the documentation (e.g., fixing typos, enhancing doc strings, adding examples).
  • by addressing one of the issues waiting for help.
  • by adding more tests to increase the code coverage.
  • by extending the current functionality. In this case, open a discussion here to coordinate with the package maintainers before proposing significant changes.

Discuss with the package authors before working on any non-trivial contribution.

License

GalerkinToolkit is released under an MIT licence, except the this documentation webpage and all contents of the /docs/src folder), which are available under a CC BY 4.0 license.

Acknowledgments

Since July 2024, this package is being developed with support from the Netherlands eScience Center under grant ID NLESC.SS.2023.008.

Affiliations

This project is maintained at the Computer Science department of Vrije Universiteit Amsterdam.