Sparselizard (Copyright (C) 2017-2019 Alexandre Halbach and Christophe Geuzaine, University of Liege, Belgium) is a rather general,

**multiphysics, open source** C++ finite element library running on

**Linux**,

**Mac** and

**Windows**. It is user friendly, robust, fast and

**multithreaded**. It is used to design next generation MEMS and it is validated against analytical solutions, third party software and measurements of the fabricated devices. It can handle a rather general set of problems in

**1D, 2D and 3D** such as

**mechanical, fluid flow (laminar, creeping), acoustic, thermal, electric, magnetic, electromagnetic, piezoelectric, superconductor, buckling, contact,... **
problems (provided in form of a weak formulation as detailed in this

wikipedia page
). Problems with several

**millions of unknowns in 3D** and several

**tens of millions of unknowns in 2D** have been solved

**within minutes** on up to 16 cores/32 threads. Some built-in geometry definition and meshing tools are also provided.
A working example that solves an electrostatic problem on a grounded 3D disk with electric volume charges can be found below:

int vol = 1, sur = 2; // Disk volume and boundary as set in ’disk.geo’
mesh mymesh("disk.msh");
field v("h1"); // Nodal shape functions for the electric potential
v.setorder(vol, 2); // Interpolation order 2 on the whole domain
v.setconstraint(sur, 0); // Force 0 V on the disk boundary
formulation elec; // Electrostatics with 1 nC/m^3 charge density
elec += integral(vol, -8.85e-12 * grad(dof(v)) * grad(tf(v)) + 1e-9 * tf(v));
solve(elec); // Generate, solve and save solution to field v
(-grad(v)).write(vol, "E.pos"); // Write the electric field

The problems can be readily solved in time with a time-stepping resolution or with the natively supported multiharmonic
resolution method. In the latter case the steady-state solution of a time-periodic problem can be obtained
in a single step, for linear as well as for nonlinear problems.

The library comes with hierarchical high order shape functions so that high order interpolations can be
used with an interpolation order adapted to every unknown field and geometrical region.

The built-in geometry definition and mesher can be used for now for rather simple 2D or extruded 3D geometries. For general geometries and advanced meshing the .msh format of the widely-used open-source

GMSH meshing software is supported. Points, lines, triangles, quadrangles, tetrahedra, hexahedra, prisms or any combination thereof is accepted in the mesh. The result files output by
sparselizard are in .vtk (ParaView) or .pos (GMSH) format.