Closed adtzlr closed 2 months ago
Hello @adtzlr , thank you for opening this presubmission inquiry. FElupe is definitely in scope for pyOpenSci, feel free to open a new issue for submission referencing this one. Thank you!
Hi @cmarmo, great news - thank you for your reply! I'll create a submission within the next days.
Submitting Author: Andreas Dutzler (@adtzlr)
Package Name: FElupe One-Line Description of Package: Finite element analysis for continuum mechanics of solid bodies. Repository Link: https://github.com/adtzlr/felupe EiC: TBD
Code of Conduct & Commitment to Maintain Package
Description
FElupe is a Python finite element analysis package focusing on the formulation and numerical solution of nonlinear problems in continuum mechanics of solid bodies. Easy-to-learn classes are provided to simulate the nonlinear deformation of hyperelastic solid bodies, see Getting Started. The constitutive material formulation of a hyperelastic solid body may be defined by its strain energy density function only (gradient and hessian are carried out by optional automatic differentiation). Strain energy functions for selected hyperelastic models are included. FElupe has only few dependencies, is a pure Python package but is also efficient enough for rubber-like structures. Several extension packages exist, e.g. to use a different automatic differentation backend or an interactive plot window.
Community Partnerships
We partner with communities to support peer review with an additional layer of checks that satisfy community requirements. If your package fits into an existing community please check below:
Scope
Please indicate which category or categories this package falls under:
Domain Specific
FElupe relies on meshio to read mesh files or uses an instance of a PyVista unstructured grid to load a mesh (Data retrieval). For completed simulations, it is possible to extract the strains or stresses (Data extraction). Meshes, fields and solid bodies provide methods for Data visualization using PyVista (see e.g. https://github.com/pyvista/pyvista/discussions/2133#discussioncomment-8429748). Input data, i.e. typically a mesh of a solid body, is used to simulate the deformation for different boundary conditions and external loads (Data processing).
FElupe is great for teaching, scientific research as well as for mid-sized industry-problems related to the deformation of solid bodies. It has already been used in scientific articles which are listed in the README.
Yes, there is scikit-fem, FEniCS, GetFEM and probably some others. While scikit-fem is definitely lightweight and easy-to-install, I found out that it is typically too slow for running hyperelastic simulations, e.g. the deformation of a rubber-like solid (see also my initial questions / posts in https://github.com/kinnala/scikit-fem/issues/616). FEniCS on the other hand has a great community but the install-entry-barrier is much higher compared to a pure PyPI Python package. The same also applies for GetFEM, because both projects provide Python packages for their compiled code. I was looking for a more lightweight Python package but also efficient enough for simulating typical rubber-like structures. Hence, I started working on FElupe in 2021.
Instead of assembling general weak forms like scikit-fem and FEniCS, FElupe follows a more Abaqus-like UMAT (user material) approach for constitutive material formulations of solid bodies, see e.g. ConstitutiveMaterial or Hyperelastic.
The community extension packages of FElupe are considered as community packages and they are not part of this (pre) submission. Thanks!
P.S. Have feedback/comments about our review process? Leave a comment here