elasticipy 4.2.0__tar.gz → 6.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. {elasticipy-4.2.0 → elasticipy-6.0.0}/.github/workflows/Codecov.yml +3 -3
  2. {elasticipy-4.2.0 → elasticipy-6.0.0}/.readthedocs.yaml +1 -1
  3. {elasticipy-4.2.0 → elasticipy-6.0.0}/CITATION.bib +2 -2
  4. elasticipy-6.0.0/CITATION.cff +38 -0
  5. {elasticipy-4.2.0 → elasticipy-6.0.0}/Elasticipy_for_the_Impatient.ipynb +409 -124
  6. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/Elasticipy_vs_pymatgen.py +5 -5
  7. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/Elate_vs_Elasticipy.py +3 -3
  8. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/Example_Stiffness_tensor.py +1 -1
  9. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/Example_StressStrain_arrays.py +2 -2
  10. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/Example_WaveVelocity.py +1 -1
  11. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/Multiple_phases.py +1 -1
  12. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/SelfConsistent.py +3 -3
  13. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/essai_plasticity.py +3 -3
  14. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/example_readwrite.py +1 -1
  15. {elasticipy-4.2.0 → elasticipy-6.0.0}/JOSS/paper.bib +4 -2
  16. {elasticipy-4.2.0 → elasticipy-6.0.0}/JOSS/paper.md +13 -11
  17. {elasticipy-4.2.0/src/elasticipy.egg-info → elasticipy-6.0.0}/PKG-INFO +41 -22
  18. {elasticipy-4.2.0 → elasticipy-6.0.0}/README.md +36 -19
  19. elasticipy-4.2.0/docs/source/Elasticipy.rst → elasticipy-6.0.0/docs/source/API/API.rst +6 -16
  20. elasticipy-6.0.0/docs/source/API/Elasticipy.interfaces.FEPX.rst +8 -0
  21. elasticipy-6.0.0/docs/source/API/Elasticipy.interfaces.PRISMS.rst +8 -0
  22. elasticipy-6.0.0/docs/source/API/Elasticipy.plasticity.rst +8 -0
  23. elasticipy-6.0.0/docs/source/API/Elasticipy.spherical_function.rst +8 -0
  24. elasticipy-6.0.0/docs/source/API/Elasticipy.tensors.elasticity.rst +8 -0
  25. elasticipy-6.0.0/docs/source/API/Elasticipy.tensors.fourth_order.rst +8 -0
  26. elasticipy-4.2.0/docs/source/Elasticipy.tensors.elasticity.rst → elasticipy-6.0.0/docs/source/API/Elasticipy.tensors.mapping.rst +3 -2
  27. elasticipy-6.0.0/docs/source/API/Elasticipy.tensors.second_order.rst +8 -0
  28. elasticipy-6.0.0/docs/source/API/Elasticipy.tensors.stress_strain.rst +8 -0
  29. elasticipy-6.0.0/docs/source/API/Elasticipy.tensors.thermal_expansion.rst +8 -0
  30. elasticipy-6.0.0/docs/source/Tutorials/FourthOrderTensors.rst +372 -0
  31. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/GUI.rst +7 -2
  32. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/Plasticity.rst +4 -3
  33. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/Tutorial_AveragingMethods.rst +29 -17
  34. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/Tutorial_MultiplePhases.rst +1 -1
  35. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/Tutorial_ReadWriteFiles.rst +2 -3
  36. elasticipy-6.0.0/docs/source/Tutorials/Tutorial_StiffnessTensor.rst +218 -0
  37. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/Tutorial_StressStrain.rst +38 -15
  38. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/Tutorial_ThermalExpansion.rst +1 -1
  39. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/Tutorial_wave-velocities.rst +1 -2
  40. elasticipy-6.0.0/docs/source/Tutorials/images/GUI.png +0 -0
  41. elasticipy-6.0.0/docs/source/Tutorials/images/Nye.png +0 -0
  42. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials.rst +2 -1
  43. elasticipy-6.0.0/docs/source/citation.rst +23 -0
  44. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/conf.py +11 -4
  45. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/index.rst +42 -25
  46. elasticipy-6.0.0/docs/source/install.rst +68 -0
  47. {elasticipy-4.2.0 → elasticipy-6.0.0}/pyproject.toml +15 -4
  48. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/FourthOrderTensor.py +4 -4
  49. elasticipy-6.0.0/src/elasticipy/StressStrainTensors.py +16 -0
  50. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/ThermalExpansion.py +3 -3
  51. elasticipy-6.0.0/src/elasticipy/gui/__init__.py +3 -0
  52. elasticipy-6.0.0/src/elasticipy/gui/about.py +49 -0
  53. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy/gui}/gui.py +218 -42
  54. elasticipy-6.0.0/src/elasticipy/gui/rotate_window.py +79 -0
  55. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/interfaces/FEPX.py +5 -5
  56. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/interfaces/PRISMS.py +2 -2
  57. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/plasticity.py +180 -35
  58. elasticipy-6.0.0/src/elasticipy/resources/favicon.png +0 -0
  59. elasticipy-6.0.0/src/elasticipy/resources/logo_text.svg +126 -0
  60. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/spherical_function.py +44 -5
  61. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/tensors/elasticity.py +678 -152
  62. elasticipy-6.0.0/src/elasticipy/tensors/fourth_order.py +1385 -0
  63. elasticipy-6.0.0/src/elasticipy/tensors/mapping.py +92 -0
  64. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/tensors/second_order.py +56 -14
  65. elasticipy-6.0.0/src/elasticipy/tensors/stress_strain.py +360 -0
  66. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/tensors/thermal_expansion.py +8 -3
  67. {elasticipy-4.2.0 → elasticipy-6.0.0/src/elasticipy.egg-info}/PKG-INFO +41 -22
  68. {elasticipy-4.2.0 → elasticipy-6.0.0}/src/elasticipy.egg-info/SOURCES.txt +40 -28
  69. elasticipy-6.0.0/src/elasticipy.egg-info/entry_points.txt +2 -0
  70. {elasticipy-4.2.0 → elasticipy-6.0.0}/src/elasticipy.egg-info/requires.txt +1 -1
  71. elasticipy-6.0.0/src/elasticipy.egg-info/top_level.txt +1 -0
  72. elasticipy-6.0.0/tests/__init__.py +0 -0
  73. elasticipy-6.0.0/tests/test_FourthOrderTensors.py +176 -0
  74. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/test_SphericalFunction.py +23 -2
  75. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/test_StiffnessTensor.py +93 -77
  76. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/test_StressStrainTensors.py +18 -8
  77. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/test_ThermalExpansion.py +4 -4
  78. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/test_interfaces_FEPX.py +3 -3
  79. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/test_interfaces_prisms.py +3 -3
  80. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/test_plasticity.py +3 -3
  81. elasticipy-4.2.0/CITATION.cff +0 -11
  82. elasticipy-4.2.0/docs/source/Elasticipy.interfaces.FEPX.rst +0 -7
  83. elasticipy-4.2.0/docs/source/Elasticipy.interfaces.PRISMS.rst +0 -7
  84. elasticipy-4.2.0/docs/source/Elasticipy.plasticity.rst +0 -7
  85. elasticipy-4.2.0/docs/source/Elasticipy.spherical_function.rst +0 -7
  86. elasticipy-4.2.0/docs/source/Elasticipy.tensors.fourth_order.rst +0 -7
  87. elasticipy-4.2.0/docs/source/Elasticipy.tensors.second_order.rst +0 -7
  88. elasticipy-4.2.0/docs/source/Elasticipy.tensors.stress_strain.rst +0 -7
  89. elasticipy-4.2.0/docs/source/Tutorials/Tutorial_StiffnessTensor.rst +0 -156
  90. elasticipy-4.2.0/docs/source/Tutorials/images/GUI.png +0 -0
  91. elasticipy-4.2.0/docs/source/modules.rst +0 -7
  92. elasticipy-4.2.0/src/Elasticipy/StressStrainTensors.py +0 -16
  93. elasticipy-4.2.0/src/Elasticipy/tensors/fourth_order.py +0 -662
  94. elasticipy-4.2.0/src/Elasticipy/tensors/mapping.py +0 -44
  95. elasticipy-4.2.0/src/Elasticipy/tensors/stress_strain.py +0 -154
  96. elasticipy-4.2.0/src/elasticipy.egg-info/top_level.txt +0 -1
  97. elasticipy-4.2.0/tests/test_FourthOrderTensors.py +0 -112
  98. {elasticipy-4.2.0 → elasticipy-6.0.0}/.github/workflows/JOSS build.yml +0 -0
  99. {elasticipy-4.2.0 → elasticipy-6.0.0}/.github/workflows/cloc.yml +0 -0
  100. {elasticipy-4.2.0 → elasticipy-6.0.0}/.github/workflows/python-publish.yml +0 -0
  101. {elasticipy-4.2.0 → elasticipy-6.0.0}/CODE_OF_CONDUCT.md +0 -0
  102. {elasticipy-4.2.0 → elasticipy-6.0.0}/CONTRIBUTING.md +0 -0
  103. {elasticipy-4.2.0 → elasticipy-6.0.0}/Examples/MaterialsProject.json +0 -0
  104. {elasticipy-4.2.0 → elasticipy-6.0.0}/JOSS/ElasticipyVSpymatgen.png +0 -0
  105. {elasticipy-4.2.0 → elasticipy-6.0.0}/JOSS/Nye.png +0 -0
  106. {elasticipy-4.2.0 → elasticipy-6.0.0}/JOSS/Plot_E.png +0 -0
  107. {elasticipy-4.2.0 → elasticipy-6.0.0}/JOSS/YoungModulus.png +0 -0
  108. {elasticipy-4.2.0 → elasticipy-6.0.0}/LICENSE +0 -0
  109. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/_static/images/HyperSphericalCoordinates.png +0 -0
  110. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/index.rst +0 -0
  111. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/Cyclic.png +0 -0
  112. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/E_PF.png +0 -0
  113. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/E_VRH_sections.png +0 -0
  114. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/E_hill_fiber.png +0 -0
  115. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/E_plot3D.png +0 -0
  116. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/E_xyz_sections.png +0 -0
  117. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/G_plot3D.png +0 -0
  118. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/G_plot3D_min.png +0 -0
  119. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/G_xyz_sections.png +0 -0
  120. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/Incremental.png +0 -0
  121. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/Mohr.png +0 -0
  122. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/Shear.png +0 -0
  123. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/Stress-controlled.png +0 -0
  124. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/StressStrain-controlled.png +0 -0
  125. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/WaveVelocities.png +0 -0
  126. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/Tutorials/images/plot_volumeFraction.png +0 -0
  127. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/logo/favicon.png +0 -0
  128. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/logo/logo.png +0 -0
  129. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/logo/logo.svg +0 -0
  130. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/logo/logo_text.png +0 -0
  131. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/logo/logo_text.svg +0 -0
  132. {elasticipy-4.2.0 → elasticipy-6.0.0}/docs/source/logo/logo_text_whitebg.png +0 -0
  133. {elasticipy-4.2.0 → elasticipy-6.0.0}/postBuild +0 -0
  134. {elasticipy-4.2.0 → elasticipy-6.0.0}/requirements.txt +0 -0
  135. {elasticipy-4.2.0 → elasticipy-6.0.0}/runtime.txt +0 -0
  136. {elasticipy-4.2.0 → elasticipy-6.0.0}/setup.cfg +0 -0
  137. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/__init__.py +0 -0
  138. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/crystal_symmetries.py +0 -0
  139. {elasticipy-4.2.0/src/Elasticipy/tensors → elasticipy-6.0.0/src/elasticipy/interfaces}/__init__.py +0 -0
  140. {elasticipy-4.2.0/src/Elasticipy → elasticipy-6.0.0/src/elasticipy}/polefigure.py +0 -0
  141. {elasticipy-4.2.0/tests → elasticipy-6.0.0/src/elasticipy/tensors}/__init__.py +0 -0
  142. {elasticipy-4.2.0 → elasticipy-6.0.0}/src/elasticipy.egg-info/dependency_links.txt +0 -0
  143. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/MaterialsProject.json +0 -0
  144. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/.sim +0 -0
  145. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/defrate/defrate.step0 +0 -0
  146. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/defrate/defrate.step1 +0 -0
  147. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/defrate/defrate.step2 +0 -0
  148. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/ori/ori.step0 +0 -0
  149. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/ori/ori.step1 +0 -0
  150. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/ori/ori.step2 +0 -0
  151. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/spinrate/spinrate.step0 +0 -0
  152. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/spinrate/spinrate.step1 +0 -0
  153. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/spinrate/spinrate.step2 +0 -0
  154. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/strain/strain.step0 +0 -0
  155. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/strain/strain.step1 +0 -0
  156. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/strain/strain.step2 +0 -0
  157. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/stress/stress.step0 +0 -0
  158. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/stress/stress.step1 +0 -0
  159. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/stress/stress.step2 +0 -0
  160. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/velgrad/velgrad.step0 +0 -0
  161. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/velgrad/velgrad.step1 +0 -0
  162. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/FEPX/simulation.sim/results/elts/velgrad/velgrad.step2 +0 -0
  163. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/PRISMS/QuadratureOutputs.csv +0 -0
  164. {elasticipy-4.2.0 → elasticipy-6.0.0}/tests/interfaces/PRISMS/stressstrain.txt +0 -0
@@ -9,7 +9,7 @@ jobs:
9
9
  runs-on: ubuntu-latest
10
10
  strategy:
11
11
  matrix:
12
- python-version: ["3.11", "3.12"]
12
+ python-version: ["3.9", "3.10", "3.11", "3.12"]
13
13
 
14
14
  steps:
15
15
  - name: Checkout
@@ -28,7 +28,7 @@ jobs:
28
28
  pip install pytest pytest-cov codecov pymatgen orix
29
29
 
30
30
  - name: Install project and its dependencies
31
- run: pip install -e .[dev] # Installe Elasticipy et les dépendances dev
31
+ run: pip install -e .[dev] # Installe elasticipy et les dépendances dev
32
32
 
33
33
  - name: Run tests
34
34
  env:
@@ -40,6 +40,6 @@ jobs:
40
40
  uses: codecov/codecov-action@v5
41
41
  with:
42
42
  token: ${{ secrets.CODECOV_TOKEN }}
43
- slug: DorianDepriester/Elasticipy
43
+ slug: DorianDepriester/elasticipy
44
44
  flags: ${{ matrix.python-version }}
45
45
  name: python-${{ matrix.python-version }}
@@ -15,7 +15,7 @@ build:
15
15
  # golang: "1.20"
16
16
  jobs:
17
17
  post_create_environment:
18
- - python -m pip install sphinx_rtd_theme mp_api sphinx_copybutton
18
+ - python -m pip install sphinx_rtd_theme mp_api sphinx_copybutton matplotlib
19
19
 
20
20
  # Build documentation in the "docs/" directory with Sphinx
21
21
  sphinx:
@@ -1,6 +1,6 @@
1
1
  @software{dorian_depriester_2025_15188346,
2
2
  author = {Dorian Depriester},
3
- title = {DorianDepriester/Elasticipy: v4.0.0},
3
+ title = {DorianDepriester/elasticipy: v4.0.0},
4
4
  month = apr,
5
5
  year = 2025,
6
6
  publisher = {Zenodo},
@@ -12,6 +12,6 @@
12
12
  sit=swh:1:snp:20bf603cb1ae305b4d37a4567557ac860e09
13
13
  d3e5;anchor=swh:1:rel:6dad2d91dcebe09e35d44f82a0c8
14
14
  a46c77f0d057;path=DorianDepriester-
15
- Elasticipy-c8bfc05
15
+ elasticipy-c8bfc05
16
16
  },
17
17
  }
@@ -0,0 +1,38 @@
1
+ cff-version: "1.2.0"
2
+ authors:
3
+ - family-names: Depriester
4
+ given-names: Dorian
5
+ orcid: "https://orcid.org/0000-0002-2881-8942"
6
+ - family-names: Kubler
7
+ given-names: Régis
8
+ orcid: "https://orcid.org/0000-0001-7781-5855"
9
+ contact:
10
+ - family-names: Depriester
11
+ given-names: Dorian
12
+ orcid: "https://orcid.org/0000-0002-2881-8942"
13
+ doi: 10.5281/zenodo.17598307
14
+ message: If you use this software, please cite our article in the
15
+ Journal of Open Source Software.
16
+ preferred-citation:
17
+ authors:
18
+ - family-names: Depriester
19
+ given-names: Dorian
20
+ orcid: "https://orcid.org/0000-0002-2881-8942"
21
+ - family-names: Kubler
22
+ given-names: Régis
23
+ orcid: "https://orcid.org/0000-0001-7781-5855"
24
+ date-published: 2025-11-26
25
+ doi: 10.21105/joss.07940
26
+ issn: 2475-9066
27
+ issue: 115
28
+ journal: Journal of Open Source Software
29
+ publisher:
30
+ name: Open Journals
31
+ start: 7940
32
+ title: "Elasticipy: A Python package for linear elasticity and tensor
33
+ analysis"
34
+ type: article
35
+ url: "https://joss.theoj.org/papers/10.21105/joss.07940"
36
+ volume: 10
37
+ title: "Elasticipy: A Python package for linear elasticity and tensor
38
+ analysis"