pyOpenSci / software-submission

Submit your package for review by pyOpenSci here! If you have questions please post them here: https://pyopensci.discourse.group/
95 stars 35 forks source link

Presubmission Inquiry for FElupe #211

Closed adtzlr closed 2 months ago

adtzlr commented 3 months ago

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.

grafik

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

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

cmarmo commented 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!

adtzlr commented 2 months ago

Hi @cmarmo, great news - thank you for your reply! I'll create a submission within the next days.