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 penalty | Lagrange multipliers |
![]() | ![]() | ![]() |
| Poisson equation | p-Laplacian | Linear elasticity |
![]() | ![]() | ![]() |
| Stokes lid-driven cavity | Transient heat equation | Laplace-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:
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.








