# EasyFEA documentation ![EasyFEA banner](_static/EasyFEA_banner.jpg) ## 🧭 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. {doc}`Linear elastic simulations `: ``static``, ``dynamic``, ``contact``, ``homogenization`` and ``mesh optimization``. 2. {doc}`Hyperelastic simulations `: ``static`` and ``dynamic`` in the ``Lagrangian`` framework. 3. {doc}`Euler-Bernoulli and Timoshenko beam simulations `: ``static``. 4. {doc}`Thermal simulations `: ``static`` and ``transient``. 5. {doc}`Phase-field damage simulations for quasi-static brittle fracture `: advanced ``2D`` and ``3D`` simulations for ``isotropic``, ``transversely isotropic``, and ``anisotropic`` materials. 6. {doc}`Weak forms simulations `: ``static``, ``transient`` and ``dynamic`` for ``linear`` or ``non-linear`` problems. 7. {doc}`Digital Image Correlation (DIC) analyses `. 8. [Parameter identification](https://gitlab.univ-eiffel.fr/collaboration-msme-fcba/spruce-params). 9. [Stochastic phase-field simulations](https://gitlab.univ-eiffel.fr/collaboration-msme-fcba/spruce-stochastic). 📸 Explore the interactive **{doc}`gallery `** to visualize simulation results. For each simulation, users create a {py:class}`~EasyFEA.FEM._mesh.Mesh` and a {py:class}`~EasyFEA.Models._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 {doc}`/examples/Meshes ` gallery. The simplest and quickest introduction is available in the {ref}`begin`. ## ⚖️ 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](https://spdx.org/licenses/GPL-3.0-only.html), see [LICENSE.txt](https://github.com/matnoel/EasyFEA/blob/main/LICENSE.txt) and [CREDITS.md](https://github.com/matnoel/EasyFEA/blob/main/CREDITS.md) for more information. ## 💻 Installation EasyFEA can be easily installed from [PyPI](https://pypi.org/project/EasyFEA/) using pip, compatible with Python versions 3.9 through 3.13: ``` pip install EasyFEA ``` You can also install EasyFEA with the [source code](https://github.com/matnoel/EasyFEA) 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`](https://pypi.org/project/numpy/) - Fundamental package for scientific computing with Python. + [`gmsh`](https://pypi.org/project/gmsh/) (>= 4.12) - Three-dimensional finite element mesh generator. + [`scipy`](https://pypi.org/project/scipy/) - Fundamental package for scientific computing in Python. ### 🧪 Optional Dependencies EasyFEA includes optional dependencies to reduce resolution time, plot results, or perform DIC: + [`matplotlib`](https://pypi.org/project/matplotlib/) - Plotting package. + [`pyvista`](https://pypi.org/project/pyvista/) - Plotting package. + [`pypardiso`](https://pypi.org/project/pypardiso/) (Python > 3.8 & Intel oneAPI) - Library for solving large systems of sparse linear equations. + [`petsc`](https://pypi.org/project/petsc/) and [`petsc4py`](https://pypi.org/project/petsc4py/) - Python bindings for PETSc. + [`imageio`](https://pypi.org/project/imageio/) and [`imageio-ffmpeg`](https://pypi.org/project/imageio-ffmpeg/) - Library for reading and writing a wide range of image, video, scientific, and volumetric data formats. + [`meshio`](https://github.com/matnoel/meshio/tree/medit_higher_order_elements) - I/O for many mesh formats. + [`opencv-python`](https://pypi.org/project/opencv-python/) - Computer Vision package. + [`pygltflib`](https://pypi.org/project/pygltflib/) - Python library for reading, writing and managing 3D objects in the Khronos Group gltf and gltf2 formats. + [`usd-core`](https://pypi.org/project/usd-core/) - Pixar's Universal Scene Description. ## 🔤 Naming conventions **EasyFEA** uses Object-Oriented Programming ([OOP](https://en.wikipedia.org/wiki/Object-oriented_programming)) 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 - [Material parameters of a phase-field model used to simulate brittle fracture of spruce specimens.](https://gitlab.univ-eiffel.fr/collaboration-msme-fcba/spruce-params) - [Stochastic phase-field modeling of spruce wood specimens under compression.](https://gitlab.univ-eiffel.fr/collaboration-msme-fcba/spruce-stochastic) ## 🤝 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](https://github.com/matnoel/EasyFEA/blob/main/CONTRIBUTING.md). # Contents ```{eval-rst} .. toctree:: :maxdepth: 1 gallery/index begin howto/index examples/index api/index ``` # Indices and tables ```{eval-rst} * :ref:`genindex` * :ref:`modindex` * :ref:`search` ```