A FEniCS Project-based library for simulating thin structures.

https://img.shields.io/bitbucket/pipelines/unilucompmech/fenics-shells/master?style=flat-square:alt:BitbucketPipelines Documentation Status

We have recently started development of an experimental version, FEniCSx-Shells, that is compatible with the new FEniCSx components of the FEniCS Project.


FEniCS-Shells is an open-source library that provides finite element-based numerical methods for solving a wide range of thin structural models (beams, plates and shells) expressed in the Unified Form Language (UFL) of the FEniCS Project.

FEniCS-Shells is compatible with the 2019.1.0 release of the FEniCS Project.

FEniCS-Shells is described fully in the paper:

Simple and extensible plate and shell finite element models through automatic code generation tools, J. S. Hale, M. Brunetti, S. P. A. Bordas, C. Maurini. Computers & Structures, 209, 163-181, doi:10.1016/j.compstruc.2018.08.001.

Getting started

  1. Install FEniCS by following the instructions at http://fenicsproject.org/download. We recommend using Docker to install FEniCS. However, you can use any method you want to install FEniCS.

  2. Then, clone this repository using the command:

    git clone https://bitbucket.org/unilucompmech/fenics-shells.git
  3. If you do not have an appropiate version of FEniCS already installed, use a Docker container (skip the second line if you have already an appropiate version of FEniCS installed):

    cd fenics-shells
  4. You should now have a shell inside a container with FEniCS installed. Try out an example:

    python3 setup.py develop --user
    cd demo
    cd documented/reissner_mindlin_clamped
    python3 demo_reissner-mindlin-clamped.py

    The resulting fields are written to the directory output/ which will be shared with the host machine. These files can be opened using Paraview.

  5. Check out the demos at https://fenics-shells.readthedocs.io/.


Documentation can be viewed at http://fenics-shells.readthedocs.org/.

Automated testing

We use Bitbucket Pipelines to perform automated testing. All documented demos include basic sanity checks on the results. Tests are run in the quay.io/fenicsproject/stable:current Docker image.


FEniCS-Shells currently includes implementations of the following structural models:

  • Kirchhoff-Love plates,
  • Reissner-Mindlin plates,
  • von-Kármán shallow shells,
  • Reissner-Mindlin-von-Kármán shallow shells,
  • non-linear and linear Naghdi shells with exact geometry.

Additionally, the following models are under active development:

  • linear and non-linear Timoshenko beams,

We are using a variety of finite element numerical techniques including:

  • MITC reduction operators,
  • discontinuous Galerkin methods,
  • reduced integration techniques.


Please consider citing the FEniCS-Shells paper and code if you find it useful.

    title = {Simple and extensible plate and shell finite element models through automatic code generation tools},
    volume = {209},
    issn = {0045-7949},
    url = {http://www.sciencedirect.com/science/article/pii/S0045794918306126},
    doi = {10.1016/j.compstruc.2018.08.001},
    journal = {Computers \& Structures},
    author = {Hale, Jack S. and Brunetti, Matteo and Bordas, Stéphane P. A. and Maurini, Corrado},
    month = oct,
    year = {2018},
    keywords = {Domain specific language, FEniCS, Finite element methods, Plates, Shells, Thin structures},
    pages = {163--181},

    title = {{FEniCS}-{Shells}},
    url = {https://figshare.com/articles/FEniCS-Shells/4291160},
    author = {Hale, Jack S. and Brunetti, Matteo and Bordas, Stéphane P.A. and Maurini, Corrado},
    month = dec,
    year = {2016},
    doi = {10.6084/m9.figshare.4291160},
    keywords = {FEniCS, Locking, MITC, PDEs, Python, Shells, thin structures},

along with the appropriate general FEniCS citations.


We are always looking for contributions and help with fenics-shells. If you have ideas, nice applications or code contributions then we would be happy to help you get them included. We ask you to follow the FEniCS Project git workflow.

Issues and Support

Please use the bugtracker to report any issues.

For support or questions please email jack.hale@uni.lu.

Authors (alphabetical)

Matteo Brunetti, Université Pierre et Marie Curie, Paris.
Jack S. Hale, University of Luxembourg, Luxembourg.
Corrado Maurini, Université Pierre et Marie Curie, Paris.


fenics-shells is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with fenics-shells. If not, see http://www.gnu.org/licenses/.