The variational problem is easily transcribed into Python using mathematical operators in FEniCS:
The above code snippet also shows how to define a suitable finite element function space, using continuous piecewise quadratic vector-valued functions for the velocity and continuous piecewise linear functions for the pressure (Taylor-Hood). The computational domain and mesh are also easily created with FEniCS, here defined by three spheres immersed in a 3D channel.
High-performance computing
Each component of the FEniCS platform has been fundamentally designed for parallel processing. Executing a FEniCS script in parallel is as simple as calling
mpirun -np 8 python script.py
. This framework allows for rapid prototyping of finite element formulations and solvers on laptops and workstations, and the same code may then be deployed on large high-performance computers.
The figure shows the thermal component of a nonlinear thermomechanical FEniCS simulation of a steam turbine. The finite element system of linear equations comprises more than 108 degrees of freedom. The solver was initially developed on a desktop computer for a small scale problem. The same code was then deployed on a supercomputer with 512 parallel processes distributed over 32 nodes.
Installation and documentation
FEniCS is available for a range of platforms (Linux, Mac, Windows). Choose between Docker containers, binary packages and source code. Visit ourinstallation page to get the latest version of FEniCS. FEniCS comes withextensive documentation and numerous examples. A good starting point is theFEniCS Tutorial.
About
The FEniCS Project is developed and maintained as a freely available, open-source project by a global community of scientists and software developers. The project is developed by the FEniCS Community, isgoverned by theFEniCS Steering Council and is overseen by the FEniCS Advisory Board.
FEniCS is a NumFOCUS fiscally supported project. If you like FEniCS and want to support our mission to produce the best possible platform for open-source computing, consider making adonation to our project.