Skip to content

Commit

Permalink
paper.md (draft): simplify the statement on performance
Browse files Browse the repository at this point in the history
  • Loading branch information
adtzlr committed Nov 30, 2024
1 parent 4037031 commit 43a7705
Showing 1 changed file with 1 addition and 3 deletions.
4 changes: 1 addition & 3 deletions paper/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,7 @@ numerical solution of nonlinear problems in continuum mechanics of solid bodies.
# Statement of need
There are well-established Python packages available for finite element analysis. These packages are either distributed as binary packages or need to be compiled on installation, like FEniCSx [@fenicsx], GetFEM [@getfem] or SfePy [@sfepy]. JAX-FEM [@jaxfem], which is built on JAX [@jax], is a pure Python package but requires many dependencies in its recommended environment. `scikit-fem` [@scikitfem] is a pure Python package with minimal dependencies but with a more general scope [@scikitfem]. FElupe is both easy-to-install as well as easy-to-use in its target domain of hyperelastic solid bodies.

The performance of FElupe is good for a non-compiled package but mediocre in comparison to compiled codes. However, it is still well-suited for up to mid-sized problems, i.e. up to $10^5$ degrees of freedom, when basic hyperelastic model formulations are used. A performance benchmark for times spent on stiffness matrix assembly is included in the documentation. Internally, efficient NumPy [@numpy] based math is realized by element-wise operating trailing axes [@scikitfem]. An all-at-once approach per operation is used instead of a cell-by-cell evaluation loop. The constitutive material formulation class is backend agnostic: FElupe provides NumPy-arrays as input arguments and requires NumPy-arrays as return values. This enables backends like JAX [@jax] or PyTorch [@pytorch] to be used. Interactive views of meshes, fields and solid bodies are enabled by PyVista [@pyvista]. The capabilities of FElupe may be enhanced with additional Python packages, e.g. `meshio` [@meshio], `matadi` [@matadi], `tensortrax` [@tensortrax], `hyperelastic` [@hyperelastic] or `feplot` [@feplot].


The performance of FElupe is good for a non-compiled package and it is well-suited for up to mid-sized problems, i.e. up to $10^5$ degrees of freedom, when hyperelastic model formulations are used. A performance benchmark for times spent on stiffness matrix assembly is included in the documentation. Internally, efficient NumPy [@numpy] based math is realized by element-wise operating trailing axes [@scikitfem]. An all-at-once approach per operation is used instead of a cell-by-cell evaluation loop. The constitutive material formulation class is backend agnostic: FElupe provides NumPy-arrays as input arguments and requires NumPy-arrays as return values. This enables backends like JAX [@jax] or PyTorch [@pytorch] to be used. Interactive views of meshes, fields and solid bodies are enabled by PyVista [@pyvista]. The capabilities of FElupe may be enhanced with additional Python packages, e.g. `meshio` [@meshio], `matadi` [@matadi], `tensortrax` [@tensortrax], `hyperelastic` [@hyperelastic] or `feplot` [@feplot].

# Features
The essential high-level parts of solving problems with FElupe include a field, a solid body, boundary conditions and a job. With the combination of a mesh, a finite element formulation and a quadrature rule, a numeric region is created. A field for a field container is further created on top of this numeric region, see \autoref{fig:field}.
Expand Down

0 comments on commit 43a7705

Please sign in to comment.