New tools to solve PDEs in Julia with Gridap.jl
2021-07-30, 13:20–13:30 (UTC), Purple

In this talk, we explore the novel capabilities of Gridap to solve Partial Differential Equations (PDEs) in Julia. This includes new features like a high-level API to write the PDE weak form with a syntax almost identical to the math notation, support for automatic differentiation, and simulation of PDEs on manifolds and domains of mixed geometrical dimensions. We will showcase these techniques with representative applications and performance comparisons against codes implemented in C/C++.


Gridap is a new, open-source, finite element (FE) library implemented in the Julia programming language. The main goal of Gridap is to adopt a more modern programming style than existing FE applications written in C/C++ or Fortran in order to simplify the simulation of challenging problems in science and engineering and improve productivity in the research of new discretization methods. The library is a feature-rich general-purpose FE code able to solve a wide range of partial differential equations (PDEs), including linear, nonlinear, and multi-physics problems. Gridap is extensible and modular. One can implement new FE spaces, new reference elements, and use external mesh generators, linear solvers, and visualization tools. In addition, it blends perfectly well with other packages of the Julia package ecosystem, since Gridap is implemented 100% in Julia.

One of the distinctive features of the library is a high-level API allowing one to simulate complex PDEs with very few lines of code. This API makes possible to write the PDE weak form in a syntax almost identical to the mathematical notation. In some sense, the high-level API of Gridap resembles to the one of FE codes based on symbolic domain-specific languages like UFL in FEniCS, but, in contrast, Gridap does not consider any compiler of variational forms nor C/C++ code generation facilities. Instead, the library takes advantage of the Julia JIT compiler to generate efficient machine code for the particular problem the user wants to solve, which makes the Gridap much easier to maintain and extend.

The Gridap project was initially presented in last year's JuliaCon. Since then, a number of new important features have been added, including an enhanced syntax for writing the PDE weak form, the support of more PDE types, and the support of more numerical techniques. In JuliaCon2021, we would like to showcase these updates via a set of representative use cases and challenging applications such as fluid-structure interaction problems.

Francesc Verdugo PhD is assistant research professor at CIMNE (Barcelona, Spain) and he is interested in the research of new discretization methods to solve partial differential equations (PDEs). He is co-founder of the Gridap.jl project to solve PDEs in Julia.

Postdoctoral researcher at the International Centre for Numerical Methods in Engineering

Santiago Badia is Professor of Computational Mathematics at Monash since June 2019. He obtained his PhD at Universitat Politècnica de Catalunya (UPC) in 2006. Previously, he worked at the Applied Mathematics departments at Politecnico di Milano (Italy) in 2006 and Sandia National Labs (New Mexico, USA) in 2007-08. He joined UPC in 2009, where he was appointed Professor of Computational Science and Engineering in 2017. He is adjoint researcher at CIMNE (Barcelona), where he leads the Large Scale Scientific Computing Department.

He works on the numerical approximation of partial differential equations (PDEs), e.g., using finite element methods, for modelling fluid and solid mechanics, electromagnetics, and multiphysics problems. He is particularly interested in large scale scientific computing and numerical linear algebra.

As a by-product of his research, Prof Badia leads some high-performance scientific projects, like FEMPAR. FEMPAR provides state-of-the-art numerical discretizations of PDEs and highly scalable numerical linear algebra solvers. FEMPAR has been used to model metal additive manufacturing, superconductor devices, breeding blankets in fusion reactors, or nuclear waste repositories. It has attained perfect weak scalability up to 458,672 cores in JUQUEEN (Germany) solving up to 60 billion unknowns. In 2019 he co-started the Gridap project, which heavily relies on functional programming and multiple dispatching in Julia, with the aim to create an easy-to-use but very efficient PDE solver.