GridapDistributed: a massively parallel finite element toolbox in Julia

The ever-increasing demand for resolution and accuracy in mathematical models of physical processes governed by systems of Partial Differential Equations (PDEs) can only be addressed using fully-parallel advanced numerical discretization methods and scalable solution methods, thus able to exploit the vast amount of computational resources in state-of-the-art supercomputers. To this end, GridapDistributed is a registered Julia (Bezanson et al., 2017) software package which provides fully-parallel distributed memory data structures and associated methods for the Finite Element (FE) numerical solution of PDEs on parallel computers. Thus, it can be run on multi-core CPU desktop computers at small scales, as well as on HPC clusters and supercomputers at medium/large scales. The data structures in GridapDistributed are designed to mirror as far as possible their counterparts in the Gridap (Badia & Verdugo, 2020) Julia software package, while implementing/leveraging most of their abstract interfaces (see Francesc Verdugo & Badia (2022) for a detailed overview of the software design of Gridap). As a result, sequential Julia scripts written in the high-level Application Programming Interface (API) of Gridap can be used verbatim up to minor adjustments in a parallel distributed memory context using GridapDistributed. This equips end-users with a tool for the development of simulation codes able to solve real-world application problems on massively parallel supercomputers while using a highly expressive, compact syntax that resembles mathematical notation. This is indeed one of the main advantages of GridapDistributed and a major design goal that we pursue.

[1]  Alberto F. Mart'in,et al.  A comparison of variational upwinding schemes for geophysical fluids, and their application to potential enstrophy conserving discretisations in space and time , 2022, ArXiv.

[2]  Barry F. Smith,et al.  PETSc/TAO Users Manual , 2022 .

[3]  F. Verdugo,et al.  The software design of Gridap: a Finite Element package based on the Julia JIT compiler , 2021, Comput. Phys. Commun..

[4]  Luca Heltai,et al.  The deal.II library, Version 9.3 , 2021, J. Num. Math..

[5]  Santiago Badia,et al.  Gridap: An extensible Finite Element toolbox in Julia , 2020, J. Open Source Softw..

[6]  Thomas H. Gibson,et al.  Compatible Finite Element Methods for Geophysical Flows , 2019, Mathematics of Planet Earth.

[7]  Stefano Zampini,et al.  MFEM: a modular finite element methods library , 2019, Comput. Math. Appl..

[8]  Santiago Badia,et al.  A generic finite element framework on parallel tree-based adaptive meshes , 2019, SIAM J. Sci. Comput..

[9]  David Wells,et al.  The deal.II library, Version 9.0 , 2018, J. Num. Math..

[10]  Santiago Badia,et al.  FEMPAR: An Object-Oriented Parallel Finite Element Framework , 2017, Archives of Computational Methods in Engineering.

[11]  Alan Edelman,et al.  Julia: A Fresh Approach to Numerical Computing , 2014, SIAM Rev..

[12]  Andrew T. T. McRae,et al.  Automating the solution of PDEs on the sphere and other manifolds in FEniCS 1.2 , 2013 .

[13]  Frédéric Hecht,et al.  New development in freefem++ , 2012, J. Num. Math..

[14]  Anders Logg,et al.  Automated Solution of Differential Equations by the Finite Element Method: The FEniCS Book , 2012 .

[15]  Carsten Burstedde,et al.  p4est: Scalable Algorithms for Parallel Adaptive Mesh Refinement on Forests of Octrees , 2011, SIAM J. Sci. Comput..

[16]  R. K. Scott,et al.  An initial-value problem for testing numerical models of the global shallow-water equations , 2004 .

[17]  P. Paolucci,et al.  The “Cubed Sphere” , 1996 .

[18]  Benjamin S. Kirk,et al.  Library for Parallel Adaptive Mesh Refinement / Coarsening Simulations , 2006 .

[19]  Message Passing Interface Forum MPI: A message - passing interface standard , 1994 .