adtzlr / felupe

:mag: finite element analysis for continuum mechanics of solid bodies
https://felupe.readthedocs.io/
GNU General Public License v3.0
82 stars 11 forks source link

Readme: Description and Highlights #849

Closed adtzlr closed 2 months ago

adtzlr commented 2 months ago

Instead of describing the name, the Readme should contain the target audience, highlight main aspects and a short description of the motivation / statement of need. The core classes are more or less stable and haven't changed much in the two recent major versions. It's time to mention a few words why & when someone should use this package!

adtzlr commented 2 months ago

Checklist

Description

FElupe is a Python 3.8+ 🐍 finite element analysis package 📦 focusing on the formulation and numerical solution of nonlinear problems in continuum mechanics 🔧 of solid bodies 🪨. This package is intended for scientific research 💻, but is also suitable for running nonlinear simulations 🚂 in general 🏎️. In addition to the transformation of general weak forms into sparse vectors and matrices, as also available in [1], FElupe provides an efficient high-level abstraction layer for the simulation of the deformation of solid bodies.

Highlights

The finite element method, as used in FElupe, is based on [2], [[3]]() and [4]. Related scientific articles are listed in the sections of the API reference. The concept of efficient math-operations in NumPy with elementwise operating trailing axes is inspired by [1].

[!NOTE]
FElupe is a combination of FE (finite element) and the german word Lupe 🔍 (magnifying glass) as a synonym for getting an insight 📖 how a finite element analysis code 🧮 looks like under the hood 🕳️.

References

[1] T. Gustafsson and G. McBain, "scikit-fem: A Python package for finite element assembly", Journal of Open Source Software, vol. 5, no. 52. The Open Journal, p. 2369, Aug. 21, 2020. DOI:10.21105/joss.02369. [2] J. Bonet and R. D. Wood, "Nonlinear Continuum Mechanics for Finite Element Analysis". Cambridge University Press, Mar. 13, 2008. DOI:10.1017/cbo9780511755446. [[3]]() K. J. Bathe, "Finite Element Procedures". 2006, isbn: 978-0-9790049-0-2. [4] O. C. Zienkiewicz, R. L. Taylor and J. Z. Zhu, "The Finite Element Method: its Basis and Fundamentals". Elsevier, 2013. DOI:10.1016/c2009-0-24909-9.

adtzlr commented 2 months ago

(Is this more or less a duplicate of the Getting Started section? Not sure if this more general example or the code-block description should be used...) A simulation of the deformation of a solid body may be created with only a few lines of code. First, a mesh ▦, an element ☐ and a quadrature scheme 𓃑 are combined to a numeric region. Scalar- or vector-valued fields are created on a region and provide methods to extract the field gradient at the quadrature points. A solid body transforms a constitutive material formulation to a sparse vector or matrix. Load cases like uniaxial tension simplify the creation of boundary conditions. A step contains a list of items, e.g. one or more solid bodies, as well as the dict of boundary conditions and a dict for items which should be applied in a ramped manner. A list of steps are finally added to a job, which updates the field in-place after each completed substep. Interactive views are possible for meshes, fields, solid bodies, etc.