Skip to content

Commit

Permalink
Rewrite paper.md
Browse files Browse the repository at this point in the history
  • Loading branch information
DorianDepriester committed Jan 9, 2025
1 parent 226f50c commit 66e9d53
Showing 1 changed file with 27 additions and 16 deletions.
43 changes: 27 additions & 16 deletions JOSS/paper.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,33 +32,44 @@ analyze these tensors, simplifying workflows for materials scientists an enginee

# Statement of Need

Strain analysis is crucial in fields such as materials science and engineering. Elasticity
tensors, which govern the stress-strain relationships in materials, are complex to compute and analyze, especially when
accounting for crystal or material symmetries. Existing software solutions often lack accessibility or do not fully
support complex symmetry operations, making them challenging for non-specialist users or those seeking rapid prototyping
and analysis.
In continuum mechanics, the deformation of a material is described by the second-order strain tensor (usually denoted
$\mathbf{\varepsilon}$) whereas the stress is described by the second-order Cauchy's stress tensor ($\mathbf{\sigma}$).
Under the linear elasticity assumption, the relationship between the $\mathbf{\varepsilon}$ and $\mathbf{\sigma}$ is
given through the fourth-order stiffness tensor $\mathbf{C}$ with:

Elasticipy addresses this gap by providing:
$$\sigma_{ij}=C_{ijk\ell}\varepsilon_{k\ell}$$

- Intuitive Python-based APIs for defining and manipulating second- and fourth-order tensors, such as strain, stress
where $\mathbf{C}_{ijk\ell}$ denotes the $ijk\ell$-th component of $\mathbf{C}$. Its value
depends on the material, whereas its shape (set of zero-components, or linear relationships between them) depend on the
material's symmetry [@nye].

Existing software solutions often lack accessibility or do not fully support complex symmetry operations, making them
challenging for non-specialist users or those seeking rapid prototyping and analysis. Elasticipy addresses this gap by
providing:

- intuitive Python-based APIs for defining and manipulating second- and fourth-order tensors, such as strain, stress
and stiffness;

- Support for standard crystal symmetry groups [@nye] to facilitate the definition of stiffness/compliance components;
- support for standard crystal symmetry groups [@nye] to facilitate the definition of stiffness/compliance components;

- visualization tools for understanding directional elastic behavior (Young modulus, shear modulus and Poisson ratio);

- Visualization tools for understanding directional elastic behavior.
- a collection of built-in methods to easily and efficiently perform fundamental operations on tensors (rotations,
products, invariants, statistical analysis etc.).

Unlike other software such as pymatgen [@pymatgen] or Elate [@elate], Elasticipy emphasizes ease of use, flexibility,
and integration with existing Python workflows. In addition, it introduces the concept of *tensor arrays*, in a similar
way as in MTEX [@MTEX], allowing to process thousands of tensors at once (e.g. rotation of tensors) with simple and
highly efficient commands. In order to highlight the performances of Elasticipy, \autoref{fig:compa} shows the wall-time
required to perform two basic operations on tensors, as functions of the number of considered tensors. This evidences
that, when processing large number of tensors ($>10^3$), basic operations on tensors are 1 to 2 orders of magnitude
faster when using Elasticipy than pymatgen.
way as in MTEX [@MTEX], allowing to process thousands of tensors at once with simple and highly efficient commands. In
order to highlight the performances of Elasticipy, \autoref{fig:compa} shows the wall-time required to perform two basic
operations on tensors, as functions of the number of considered tensors. This evidences that, when processing large
number of tensors ($>10^3$), basic operations on tensors are 1 to 2 orders of magnitude faster when using Elasticipy
than pymatgen. These performances are reached by taking advantage of `numpy`'s array
broadcasting.

![Performance comparison between Elasticipy and pymatgen.\label{fig:compa}](ElasticipyVSpymatgen.png){ width=75% }

Nevertheless, as tensor algebra is not the core of pymatgen, Elasticipy supports conversion to pymatgen, and vice versa.
It also allows direct imports of elastic data from
Nevertheless, as tensor algebra is not the core of pymatgen, Elasticipy supports conversion to pymatgen, and vice versa,
allowing to work with these packages altogether. Elasticipy also allows direct imports of elastic data from
[the Materials Project](https://next-gen.materialsproject.org/) [@MaterialsProject].

# References

0 comments on commit 66e9d53

Please sign in to comment.