Pelicans is a library of tools used to develop computer software to solve partial differential equations by focusing on the design of a numerical scheme suited to the physical model being studied.
This platform is currently used as a basis for simulation tools belonging to a variety of fields in transfer physics, such as the calculation of multi-species reagent flows or the mechanical behavior of a fractured medium under load.
The Pelicans platform can be seen as a framework: it supplies reusable components of code where the generic parts have already been implemented. The developers must then build any specific parts of their application, using the powerful techniques of object-oriented programming.
For example, software to solve a diffusion equation using the finite elements method should apply the following steps:
1 – Read the mesh,
2 – Iteration on each unit cell to:
2.1 compute the local matrix and second member,
2.2 and feed the global matrix,
3 – Solve the algebraic system obtained,
4 – Save results in a file for post-processing.
Each of these steps, except 2.1, corresponds to a component of code already available in PELICANS. For Step 2.1, the platform supplies the quantities required to compute the elementary matrices for different types of element: integration point, values of shape functions and their derivatives, etc.
PELICANS can also interface with external libraries. The meshes used in Step 1 can come either from elementary mesh systems supplied by the Pelicans platform, or mesh systems from freeware (e.g. GMSH, EMC2, TRIANGLE) or commercial software (GAMBIT). Likewise, the linear system can be solved by solvers from the platform or external libraries (such as PETSc or UMFPACK). Finally, several post-processing file formats are available (MeshTV, OpenDx, FieldView).
A special programming environment
A specific methodology for the use of C++ was implemented for the development of PELICANS, which required specialist tools to be developed. The reasoning behind this approach is threefold: Firstly, design via contracts is uniformly implemented in the platform, thus rationalizing the relations between the software components.
Next, the principle of auto-documentation is deployed in a consistent way with the assertions of design by contracts.
Finally, the complex potential of C++ was deliberately little used in order to make the PELICANS platform accessible to a greater number of C++ programmers.
Pelicans provides functionality to manage discretizations on meshes, whether structured or not, by finite-element and finite-volume-type methods. The platform manages the following situations: mobile borders, dynamically deformable mesh, multiple domains which might be non-conformal, characteristic methods, multi-level adaptive mesh refinement.
In addition, Pelicans allows the development of parallel applications as well as a coherent coupling with well-known external numerical libraries (pre- and post-processing, linear solvers, etc.).
A few applications
PELICANS is now the numerical kernel of several industrial software packages developed by IRSN in the field of nuclear safety, most notably Croco (spreading of corium),Isis (fire in a confined and ventilated room), and Sylvia (development of a fire in an industrial facility equipped with a ventilation system).
> See some examples of application of the platform
PELICANS is distributed under a CeCILL-C license (an adaptation of the LGPL license to French law, see http://www.cecill.info/). Pelicans is the property of IRSN, but is totally free, open source, and may be re-used in software distributed under any license.