Closed adtzlr closed 2 months ago
Checklist
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.
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 🕳️.
[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. . [2] J. Bonet and R. D. Wood, "Nonlinear Continuum Mechanics for Finite Element Analysis". Cambridge University Press, Mar. 13, 2008. . [[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. .
(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.
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!