PSYDAC: a parallel finite element solver with automatic code generation
2019-09-05 , Track 2 (Baroja)

PSYDAC takes input from SymPDE (a SymPy extension for partial differential equations), applies a finite-element discretization, generates MPI-parallel code, and accelerates it with Numba, Pythran, or Pyccel. We present design, usage and performance.


PSYDAC is a Python 3 library for the solution of partial differential equations. Its current focus is on isogeometric analysis using B-spline finite elements, but extensions to other methodologies are under consideration. In order to use PSYDAC, the user defines geometry and model equations in an abstract form using SymPDE, an extension of Sympy that provides the mathematical expressions and checks their semantic validity. Once a finite element discretization has been chosen, PSYDAC maps the abstract concepts into concrete objects, the basic building blocks being MPI-distributed vectors and matrices. Python code is generated for all the computationally intensive operations (matrix and vector assembly, matrix-vector products, etc.), and it is accelerated using either Numba, Pythran, or Pyccel. We present the library design, the user interface, and the performance results.


Project Homepage / Git:

https://github.com/pyccel/psydac

Abstract as a tweet:

PSYDAC takes input from SymPDE (a SymPy extension for partial differential equations), applies a finite-element discretization, generates MPI-parallel code, and accelerates it with Numba, Pythran, or Pyccel.

Python Skill Level:

basic

Domain Expertise:

some

Domains:

Parallel computing / HPC, Simulation, Vector and array manipulation

I am a post-doctoral researcher at the Max Planck Institute for Plasma Physics (IPP) in Garching, Germany, since 2014. I work in the division of Numerical Methods for Plasma Physics, where my research has focused on semi-Lagrangian methods for the gyrokinetic description of strongly magnetized plasmas.

I graduated in Aerospace Engineering at the University of Padova (Italy) in 2007, where I also obtained a Ph.D. in Science, Technologies and Measurements for Space in 2011. From 2011 to 2014, year when I moved to Germany, I was a post-doc at the Department of Mathematics of the Michigan State University (USA).

In my career Python has always been an invaluable language for fast prototyping of numerical algorithms, as well as for data visualization. The final code was usually written in C, C++, or Fortran.

Lately I have been progressively more interested in using Python also for high-performance scientific computing. Together with my colleagues at IPP, in the last few years I investigated how to ease the transition from prototype to production in academic research codes. PSYDAC, our Python parallel environment for spline finite elements, is the product of our recent efforts.