Skip to main content

EasyFEA_banner

PyPI version Python Version Documentation Status License: GPL v3 Code style: black Tests PyPI Downloads

🧭 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, homogenization and mesh optimization.
  2. Hyperelastic simulations: static and dynamic in the Lagrangian framework..
  3. Inelastic simulations: small-strain plasticity, viscoplasticity and viscoelasticity, assembled from a yield surface, hardening, a back-stress, a rate law and Maxwell branches.
  4. Cardiac elasto-dynamics: passive + active hyperelastic mono-ventricular left-ventricle benchmark.
  5. Contact simulations: frictionless penalty contact against a rigid obstacle
  6. Euler-Bernoulli and Timoshenko beam simulations: static and dynamic.
  7. Thermal simulations: static and transient.
  8. Phase-field damage simulations for quasi-static brittle fracture: advanced 2D and 3D simulations for isotropic, transversely isotropic, and anisotropic materials.
  9. Weak forms simulations: static and dynamic for linear or non-linear problems.
  10. Digital Image Correlation (DIC) analyses.
  11. Parameter identification.
  12. Stochastic phase-field simulations.

📸 Explore the interactive gallery to visualize simulation results.

For each simulation, users create a mesh and a model. Once the simulation has been set up, defining the boundary conditions, solving the problem, and visualizing the results are straightforward.

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

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

import matplotlib.pyplot as plt

from EasyFEA import Matplotlib, ElemType, Models, Simulations
from EasyFEA.Geoms import Domain

# ----------------------------------------------
# Mesh
# ----------------------------------------------
L = 120  # mm
h = 13

domain = Domain((0, 0), (L, h), h / 3)
mesh = domain.Mesh_2D([], ElemType.QUAD9, isOrganised=True)

# ----------------------------------------------
# Simulation
# ----------------------------------------------
E = 210000  # MPa
v = 0.3
F = -800  # N

mat = Models.Elastic.Isotropic(2, E, v, planeStress=True, thickness=h)

simu = Simulations.Elastic(mesh, mat)

nodesX0 = mesh.Nodes_Conditions(lambda x, y, z: x == 0)
nodesXL = mesh.Nodes_Conditions(lambda x, y, z: x == L)

simu.add_dirichlet(nodesX0, [0, 0], ["x", "y"])
simu.add_surfLoad(nodesXL, [F / h / h], ["y"])

simu.Solve()

# ----------------------------------------------
# Results
# ----------------------------------------------
Matplotlib.Plot_Mesh(simu, deformFactor=10)
Matplotlib.Plot_BoundaryConditions(simu)
Matplotlib.Plot(simu, "uy", plotMesh=True)
Matplotlib.Plot(simu, "Svm", plotMesh=True, ncolors=11)

plt.show()

⚖️ 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.

📚 Documentation

Refer to the documentation for detailed installation and usage details.

💻 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

🧪 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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easyfea-3.5.1.tar.gz (366.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

easyfea-3.5.1-py3-none-any.whl (402.9 kB view details)

Uploaded Python 3

File details

Details for the file easyfea-3.5.1.tar.gz.

File metadata

  • Download URL: easyfea-3.5.1.tar.gz
  • Upload date:
  • Size: 366.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for easyfea-3.5.1.tar.gz
Algorithm Hash digest
SHA256 1a1abacc6016828e3abefab6e91f57f4808aef08dd0647388474d0ad9d51b7b7
MD5 db33e9afc0f6e20bb753cf1c45a9a294
BLAKE2b-256 6f0477972cc42d9e58b9aa967bbf1993d496ecab21879eafa98940cf070f06f5

See more details on using hashes here.

File details

Details for the file easyfea-3.5.1-py3-none-any.whl.

File metadata

  • Download URL: easyfea-3.5.1-py3-none-any.whl
  • Upload date:
  • Size: 402.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for easyfea-3.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 eb3029b8c548392e8eed797df3d416dcac9b42070f47aab53b44d01cb62cfa1b
MD5 0002542828007f345485ba3493170476
BLAKE2b-256 21bd9de03ea5d24a7f41624a06cfafab73f5f48a5cc2c65ca1d403ed70c8fdb9

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

3.5.1 This release

2 files

3.5.0

2 files

3.4.1

2 files

3.4.0

2 files

3.3.0

2 files

3.2.2

2 files

3.2.1

2 files

3.2.0

2 files

3.1.0

2 files

3.0.0

2 files

2.0.0

2 files

1.11.0

2 files

1.10.1

2 files

1.10.0

2 files

1.9.2

2 files

1.9.1

2 files

1.9.0

2 files

1.8.5

2 files

1.8.4

2 files

1.8.3

2 files

1.8.2

2 files

1.8.1

2 files

1.8.0

2 files

1.7.4

2 files

1.7.3

2 files

1.7.2

2 files

1.7.1

2 files

1.7.0

2 files

1.6.5

2 files

1.6.4

2 files

1.6.3

2 files

1.6.2

2 files

1.6.1

2 files

1.6.0

2 files

1.5.5

2 files

1.5.4

2 files

1.5.3

2 files

1.5.2

2 files

1.5.1

2 files

1.5.0

2 files

1.4.8

2 files

1.4.6

2 files

1.4.5

2 files

1.4.4

2 files

1.4.3

2 files

1.4.2

2 files

1.4.0

2 files

1.3.4

2 files

1.3.3

2 files

1.3.2

1 file

1.3.1

3 files

1.3.0

2 files

1.2.7

2 files

1.2.6

2 files

1.2.5

2 files

1.2.4

2 files

1.2.3

2 files

1.2.2

2 files

1.2.1

2 files

1.2.0

2 files

1.1.0

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

0.0.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page