Sparselizard (Copyright (C) 20172018 Alexandre Halbach and Christophe Geuzaine, University of Liege, Belgium)
is an open source C++ finite element library meant to be user friendly, fast and parallel. Example code to solve an electrostatic problem on a grounded 3D disk with electric volume charges:
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, 4); // Interpolation order 4 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.85e12 * grad(dof(v)) * grad(tf(v)) + 1e9 * tf(v));
elec.generate();
vec solv = solve(elec.A(), elec.b());
v.setdata(vol, solv); // Transfer data from solution vector to v field
(grad(v)).write(vol, "E.pos"); // Write the electric field
Sparselizard can handle a rather general set of problems in 1D, 2D and 3D such as mechanical, acoustic, thermal, electric, fluid and electromagnetic
problems (provided in form of a weak formulation as detailed in this
wikipedia page
). Problems with several hundreds of thousands of unknowns in 3D and several millions of unknowns in 2D can be treated on classical laptops. To give an idea of the performance you can expect here are a couple of timings.
On a standard 2013 laptop (dual core, 16 GB of RAM):

2D electrostatics: 13.509.602 triangles  6.760.000 unknowns  130 seconds

3D electrostatics: 3.556.224 tetrahedra  614.125 unknowns  220 seconds

2D linear elasticity: 2.042.041 quadrangles  2.044.900 unknowns  105 seconds

3D linear elasticity: 117.649 hexahedra  125.000 unknowns  240 seconds
Multiphysics problems, nonlinear problems or nonlinear multiphysics problems can be simulated as well.
The problems can be readily solved in time with a timestepping resolution or with the natively supported multiharmonic
resolution method. In the latter case the steadystate solution of a timeperiodic problem can be obtained
in a single step, for linear as well as for general 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 widelyused opensource
GMSH meshing software is required to mesh the geometry
and generate the .msh file required in the finite element simulation. Points, lines, triangles, quadrangles, tetrahedra, hexahedra, prisms or any combination thereof is accepted in the mesh. The result files output by
sparselizard are in .pos format supported by GMSH.