EasyFEA documentation#

EasyFEA banner

🧭 Overview#

EasyFEA is a user‑friendly Python library that simplifies finite element analysis by abstracting complex PDE formulations. It is flexible and supports a range of linear and nonlinear simulations with minimal setup. You will find below the finite element analysis that you can conduct using EasyFEA:

  1. Linear elastic simulations: static, dynamic, contact, homogenization and mesh optimization.

  2. Hyperelastic simulations: static and dynamic in the Lagrangian framework.

  3. Euler-Bernoulli beam simulations: static.

  4. Thermal simulations: static and transient.

  5. Phase-field damage simulations for quasi-static brittle fracture: advanced 2D and 3D simulations for isotropic, transversely isotropic, and anisotropic materials.

  6. Weak forms simulations: static, transient and dynamic for linear or non-linear problems.

  7. Digital Image Correlation (DIC) analyses.

  8. Parameter identification.

  9. Stochastic phase-field simulations.

📸 Explore the interactive gallery to visualize simulation results.

For each simulation, users create a Mesh and a _IModel. Once the simulation has been set up, defining the boundary conditions, solving the problem and visualizing the results is straightforward.

Numerous examples of mesh creation are available in the /examples/Meshes gallery.

The simplest and quickest introduction is available in the Beginner’s Guide.

⚖️ License#

Copyright (C) 2021-2024 Université Gustave Eiffel. Copyright (C) 2025-2026 Université Gustave Eiffel, INRIA.

EasyFEA is distributed under the terms of the GNU General Public License v3.0 only, see LICENSE.txt and CREDITS.md for more information.

💻 Installation#

EasyFEA can be easily installed from PyPI using pip, compatible with Python versions 3.9 through 3.13:

pip install EasyFEA

You can also install EasyFEA with the source code using the pip install . command in the downloaded or cloned EasyFEA folder.

📦 Dependencies#

EasyFEA uses several libraries, such as NumPy and Gmsh - as such, the following projects are required dependencies of EasyFEA:

  • numpy - Fundamental package for scientific computing with Python.

  • gmsh (>= 4.12) - Three-dimensional finite element mesh generator.

  • scipy - Fundamental package for scientific computing in Python.

🧪 Optional Dependencies#

EasyFEA includes optional dependencies to reduce resolution time, plot results, or perform DIC:

  • matplotlib - Plotting package.

  • pyvista - Plotting package.

  • pypardiso (Python > 3.8 & Intel oneAPI) - Library for solving large systems of sparse linear equations.

  • petsc and petsc4py - Python bindings for PETSc.

  • imageio and imageio-ffmpeg - Library for reading and writing a wide range of image, video, scientific, and volumetric data formats.

  • meshio - I/O for many mesh formats.

  • opencv-python - Computer Vision package.

  • pygltflib - Python library for reading, writing and managing 3D objects in the Khronos Group gltf and gltf2 formats.

  • usd-core - Pixar’s Universal Scene Description.

🔤 Naming conventions#

EasyFEA uses Object-Oriented Programming (OOP) with the following naming conventions:

  • PascalCasing for classes

  • camelCasing for properties

  • Snake_Casing or Snake_casing for functions/methods

In this library, objects can contain both public and private properties or functions.

Private parameters or functions are designated by a double underscore, such as __privateParam. In addition, parameters or functions beginning with an underscore, such as _My_Function are accessible to advanced users, but should be used with caution.

✍️ Citing EasyFEA#

If you are using EasyFEA as part of your scientific research, please contribute to the scientific visibility of the project by citing it as follows.

Noel M., EasyFEA: a user-friendly Python library that simplifies finite element analysis, https://hal.science/hal-04571962

Bibtex:

@softwareversion{noel:hal-04571962v1,
  TITLE = {{EasyFEA: a user-friendly Python library that simplifies finite element analysis}},
  AUTHOR = {Noel, Matthieu},
  URL = {https://hal.science/hal-04571962},
  NOTE = {},
  INSTITUTION = {{Universit{\'e} Gustave Eiffel}},
  YEAR = {2024},
  MONTH = Apr,
  SWHID = {swh:1:dir:ffb0e56fe2ce8a344ed27df7baf8f5f1b58700b5;origin=https://github.com/matnoel/EasyFEA;visit=swh:1:snp:88527adbdb363d97ebaee858943a02d98fc5c23c;anchor=swh:1:rev:ee2a09258bfd7fd60886ad9334b0893f4989cf35},
  REPOSITORY = {https://github.com/matnoel/EasyFEA},
  LICENSE = {GNU General Public License v3.0},
  KEYWORDS = {Finite element analyses ; Computational Mechanics ; Numerical Simulation ; Phase field modeling of brittle fracture ; Linear elasticity ; Euler-Bernoulli beam ; DIC - Digital Image Correlation ; User friendly ; Object oriented programming ; Mesh Generation},
  HAL_ID = {hal-04571962},
  HAL_VERSION = {v1},
}

📘 Projects and Publications#

📝 Scientific Publications#

  • Noel M. et al., Parameter identification for phase-field modeling of brittle fracture in spruce wood - Engineering Fracture Mechanics, https://doi.org/10.1016/j.engfracmech.2025.111304

🧪 Research Projects#

🤝 Contributing#

EasyFEA is an emerging project with a strong commitment to growth and improvement. Your input and ideas are invaluable to me. I welcome your comments and advice with open arms, encouraging a culture of respect and kindness in our collaborative journey towards improvement.

To learn more about contributing to EasyFEA, please consult the Contributing Guide.

Contents#

Indices and tables#