simcoon 2.1.0__tar.gz → 2.2.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 (820) hide show
  1. {simcoon-2.1.0 → simcoon-2.2.0}/PKG-INFO +1 -1
  2. simcoon-2.2.0/docs/continuum_mechanics/functions/doc_tensor.rst +308 -0
  3. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics_overview.md +5 -5
  4. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/abaqus.rst +4 -0
  5. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/ansys.rst +4 -0
  6. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/output.rst +10 -4
  7. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/solver.rst +76 -19
  8. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/umat_catalog.rst +132 -9
  9. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/README.rst +2 -0
  10. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/tensor.py +18 -0
  11. simcoon-2.2.0/examples/continuum_mechanics/tensor_basis.py +513 -0
  12. simcoon-2.2.0/examples/data/EPJCK_path.json +87 -0
  13. simcoon-2.2.0/examples/data/EPJCK_path_fast.json +37 -0
  14. simcoon-2.2.0/examples/data/EPJCK_path_slow.json +37 -0
  15. simcoon-2.2.0/examples/data/THERM_EPJCK_path.json +38 -0
  16. simcoon-2.2.0/examples/data/THERM_EPJCK_path_slow.json +38 -0
  17. simcoon-2.2.0/examples/mechanical/EPJCK.py +169 -0
  18. simcoon-2.2.0/examples/mechanical/MODUL_closest_point.py +261 -0
  19. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/README.rst +2 -0
  20. simcoon-2.2.0/examples/thermomechanical/EPJCK.py +137 -0
  21. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/README.rst +1 -0
  22. {simcoon-2.1.0 → simcoon-2.2.0}/examples/umats/external/umat_plugin_ext_EPICP.cpp +1 -1
  23. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/criteria.hpp +33 -0
  24. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/objective_rates.hpp +67 -4
  25. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/tensor.hpp +61 -19
  26. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/ellipsoid_multi.hpp +46 -3
  27. simcoon-2.1.0/include/simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_chaboche_ccp.hpp → simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_chaboche.hpp +21 -11
  28. simcoon-2.1.0/include/simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_isotropic_ccp.hpp → simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_isotropic.hpp +18 -7
  29. simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_johnson_cook_ccp.hpp +175 -0
  30. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/damage_mechanism.hpp +1 -0
  31. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/elasticity_module.hpp +23 -1
  32. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/hardening.hpp +35 -0
  33. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/internal_variable.hpp +2 -2
  34. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/modular_umat.hpp +153 -15
  35. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/plasticity_mechanism.hpp +52 -5
  36. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/strain_mechanism.hpp +72 -12
  37. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/viscoelastic_mechanism.hpp +1 -0
  38. simcoon-2.1.0/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_isotropic_ccp.hpp → simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_isotropic.hpp +12 -5
  39. simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_johnson_cook_ccp.hpp +144 -0
  40. simcoon-2.1.0/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_kin_iso_ccp.hpp → simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_kin_iso.hpp +11 -4
  41. simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/return_mapping.hpp +282 -0
  42. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/tangent_assembly.hpp +12 -4
  43. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_callback.hpp +1 -1
  44. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_smart.hpp +37 -3
  45. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/num_solve.hpp +19 -0
  46. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/rotation.hpp +53 -0
  47. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/material_characteristics.hpp +20 -1
  48. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/state_variables.hpp +31 -28
  49. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/state_variables_M.hpp +12 -11
  50. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/state_variables_T.hpp +27 -18
  51. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/parameter.hpp +13 -1
  52. {simcoon-2.1.0 → simcoon-2.2.0}/pyproject.toml +1 -1
  53. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/__init__.py +1 -1
  54. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/__init__.py +2 -1
  55. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/core.py +25 -13
  56. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/io.py +19 -13
  57. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/maps.py +39 -0
  58. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/results.py +81 -16
  59. simcoon-2.2.0/python-setup/simcoon/tensor.py +2382 -0
  60. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_constitutive.hpp +19 -6
  61. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_stress.hpp +5 -0
  62. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/umat.hpp +1 -1
  63. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/Leff.cpp +1 -3
  64. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/objective_rates.cpp +11 -109
  65. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/stress.cpp +17 -3
  66. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/tensor.cpp +4 -3
  67. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/umat.cpp +104 -25
  68. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Solver/solver_run.cpp +2 -1
  69. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/python_module.cpp +6 -3
  70. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/run_test.py +113 -0
  71. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_closest_point_kernels.py +196 -0
  72. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_finite_objectivity.py +19 -10
  73. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_finite_tangents.py +1 -0
  74. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_johnson_cook.py +132 -0
  75. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_lazy_derivations.py +106 -0
  76. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_legacy_to_json.py +1 -1
  77. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_modular_closest_point.py +206 -0
  78. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_sma_unified_TR.py +22 -0
  79. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_io.py +47 -1
  80. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_run.py +62 -1
  81. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_tensor.py +8 -6
  82. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_tensor_basis.py +344 -0
  83. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_tensor_batch.py +7 -8
  84. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_tensor_none.py +89 -0
  85. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_tensor_variance.py +130 -0
  86. simcoon-2.2.0/simcoon-python-builder/test/test_core/test_total_formulation.py +504 -0
  87. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_umat_tangent_output.py +29 -1
  88. {simcoon-2.1.0 → simcoon-2.2.0}/software/usermat_singleM.cpp +1 -0
  89. {simcoon-2.1.0 → simcoon-2.2.0}/src/CMakeLists.txt +7 -5
  90. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/criteria.cpp +62 -0
  91. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/objective_rates.cpp +144 -3
  92. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/tensor.cpp +16 -38
  93. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/ellipsoid_multi.cpp +54 -6
  94. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Micromechanics/schemes.cpp +18 -6
  95. simcoon-2.1.0/src/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_chaboche_ccp.cpp → simcoon-2.2.0/src/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_chaboche.cpp +58 -23
  96. simcoon-2.1.0/src/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_isotropic_ccp.cpp → simcoon-2.2.0/src/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_isotropic.cpp +47 -23
  97. simcoon-2.2.0/src/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_johnson_cook_ccp.cpp +289 -0
  98. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/SMA/unified_T.cpp +185 -4
  99. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/SMA/unified_TR.cpp +243 -3
  100. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/elasticity_module.cpp +8 -1
  101. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/hardening.cpp +27 -0
  102. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/internal_variable_collection.cpp +5 -0
  103. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/modular_umat.cpp +239 -54
  104. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/plasticity_mechanism.cpp +88 -20
  105. simcoon-2.1.0/src/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_isotropic_ccp.cpp → simcoon-2.2.0/src/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_isotropic.cpp +52 -25
  106. simcoon-2.2.0/src/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_johnson_cook_ccp.cpp +387 -0
  107. simcoon-2.1.0/src/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_kin_iso_ccp.cpp → simcoon-2.2.0/src/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_kin_iso.cpp +47 -10
  108. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/SMA/unified_T.cpp +10 -4
  109. simcoon-2.2.0/src/Continuum_mechanics/Umat/return_mapping.cpp +317 -0
  110. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/tangent_assembly.cpp +45 -14
  111. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/umat_smart.cpp +68 -20
  112. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/num_solve.cpp +25 -0
  113. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/rotation.cpp +43 -0
  114. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/material_characteristics.cpp +26 -0
  115. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/phase_characteristics.cpp +5 -5
  116. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/state_variables.cpp +40 -118
  117. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/state_variables_M.cpp +11 -34
  118. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/state_variables_T.cpp +17 -50
  119. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/solver.cpp +21 -8
  120. {simcoon-2.1.0 → simcoon-2.2.0}/test/CMakeLists.txt +6 -1
  121. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tcriteria.cpp +29 -0
  122. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tobjective_rates.cpp +165 -0
  123. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Ttensor.cpp +10 -4
  124. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Homogenization/Teshelby.cpp +22 -0
  125. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Trotation_class.cpp +46 -0
  126. simcoon-2.2.0/test/Libraries/Phase/Tmaterial_characteristics.cpp +70 -0
  127. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Modular/Tmodular_umat.cpp +47 -0
  128. simcoon-2.2.0/test/Libraries/Umat/Tcpp_ccp_robustness.cpp +327 -0
  129. simcoon-2.2.0/test/Libraries/Umat/Treturn_mapping.cpp +287 -0
  130. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_EPCHA.cpp +2 -2
  131. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_EPICP.cpp +3 -3
  132. simcoon-2.2.0/test/Libraries/Umat/Ttangent_EPJCK.cpp +370 -0
  133. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_assembly.cpp +95 -0
  134. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttutorial_umat.cpp +2 -2
  135. simcoon-2.2.0/testBin/Umats/EPCHA/comparison/simul_1.txt +201 -0
  136. simcoon-2.2.0/testBin/Umats/EPICP/comparison/results_job_global-0.txt +3000 -0
  137. simcoon-2.1.0/docs/continuum_mechanics/functions/doc_tensor.rst +0 -67
  138. simcoon-2.1.0/include/simcoon/Continuum_mechanics/Functions/natural_basis.hpp +0 -210
  139. simcoon-2.1.0/python-setup/simcoon/tensor.py +0 -1405
  140. simcoon-2.1.0/src/Continuum_mechanics/Functions/natural_basis.cpp +0 -283
  141. simcoon-2.1.0/test/Libraries/Continuum_mechanics/Tnatural_basis.cpp +0 -166
  142. simcoon-2.1.0/testBin/Umats/EPCHA/comparison/simul_1.txt +0 -201
  143. simcoon-2.1.0/testBin/Umats/EPICP/comparison/results_job_global-0.txt +0 -3000
  144. {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/build-doc.yml +0 -0
  145. {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/build.yml +0 -0
  146. {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/ci.yml +0 -0
  147. {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/conda-packaging.yml +0 -0
  148. {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/fedoo-integration.yml +0 -0
  149. {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/release.yml +0 -0
  150. {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/wheels.yml +0 -0
  151. {simcoon-2.1.0 → simcoon-2.2.0}/.gitignore +0 -0
  152. {simcoon-2.1.0 → simcoon-2.2.0}/.readthedocs.yaml +0 -0
  153. {simcoon-2.1.0 → simcoon-2.2.0}/CMakeLists.txt +0 -0
  154. {simcoon-2.1.0 → simcoon-2.2.0}/Install.bat +0 -0
  155. {simcoon-2.1.0 → simcoon-2.2.0}/Install.sh +0 -0
  156. {simcoon-2.1.0 → simcoon-2.2.0}/LICENSE +0 -0
  157. {simcoon-2.1.0 → simcoon-2.2.0}/README.md +0 -0
  158. {simcoon-2.1.0 → simcoon-2.2.0}/bench/bench_legacy_vs_modular.py +0 -0
  159. {simcoon-2.1.0 → simcoon-2.2.0}/benchmark/README.md +0 -0
  160. {simcoon-2.1.0 → simcoon-2.2.0}/benchmark/benchmark_solver.py +0 -0
  161. {simcoon-2.1.0 → simcoon-2.2.0}/cmake/simcoonConfig.cmake.in +0 -0
  162. {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/bld.bat +0 -0
  163. {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/build.sh +0 -0
  164. {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/conda_build_config.yaml +0 -0
  165. {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/meta.yaml +0 -0
  166. {simcoon-2.1.0 → simcoon-2.2.0}/docs/Doxyfile +0 -0
  167. {simcoon-2.1.0 → simcoon-2.2.0}/docs/Makefile +0 -0
  168. {simcoon-2.1.0 → simcoon-2.2.0}/docs/README.rst +0 -0
  169. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/Armadillo_logo.png +0 -0
  170. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/CMake.png +0 -0
  171. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/CNRS_logo_med.png +0 -0
  172. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/ENSAM_logo_med.png +0 -0
  173. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/TU_Bergakademie_Freiberg_logo_med.png +0 -0
  174. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/UB.png +0 -0
  175. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/UGA.png +0 -0
  176. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/boost_logo.png +0 -0
  177. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoonLogos_ss_fond.png +0 -0
  178. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoon_logo_small.png +0 -0
  179. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoon_logo_text_original.png +0 -0
  180. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoon_overview.pdf +0 -0
  181. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/thumbnails/sphx_glr_constitutive_relations_thumb.png.png +0 -0
  182. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_templates/custom-class-template.rst +0 -0
  183. {simcoon-2.1.0 → simcoon-2.2.0}/docs/_templates/layout.html +0 -0
  184. {simcoon-2.1.0 → simcoon-2.2.0}/docs/about.rst +0 -0
  185. {simcoon-2.1.0 → simcoon-2.2.0}/docs/conf.py +0 -0
  186. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_constitutive.rst +0 -0
  187. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_contimech.rst +0 -0
  188. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_criteria.rst +0 -0
  189. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_damage.rst +0 -0
  190. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_hyperelastic.hpp +0 -0
  191. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_hyperelastic.rst +0 -0
  192. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_kinematics.rst +0 -0
  193. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_recovery_props.rst +0 -0
  194. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_rotation.rst +0 -0
  195. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_stress.rst +0 -0
  196. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_transfer.rst +0 -0
  197. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/index.rst +0 -0
  198. {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/index.rst +0 -0
  199. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/constitutive.rst +0 -0
  200. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/contimech.rst +0 -0
  201. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/criteria.rst +0 -0
  202. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/damage.rst +0 -0
  203. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/hyperelastic.rst +0 -0
  204. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/index.rst +0 -0
  205. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/kinematics.rst +0 -0
  206. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/objective_rates.rst +0 -0
  207. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/recovery_props.rst +0 -0
  208. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/stress.rst +0 -0
  209. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/transfer.rst +0 -0
  210. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/index.rst +0 -0
  211. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/material.rst +0 -0
  212. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/micromechanics.rst +0 -0
  213. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/homogenization/index.rst +0 -0
  214. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/index.rst +0 -0
  215. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/index.rst +0 -0
  216. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/maths.rst +0 -0
  217. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/phase.rst +0 -0
  218. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/rotation.rst +0 -0
  219. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/solver.rst +0 -0
  220. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation_overview.md +0 -0
  221. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/finite.rst +0 -0
  222. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/index.rst +0 -0
  223. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/mechanical.rst +0 -0
  224. {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/thermomechanical.rst +0 -0
  225. {simcoon-2.1.0 → simcoon-2.2.0}/docs/external.rst +0 -0
  226. {simcoon-2.1.0 → simcoon-2.2.0}/docs/homogenization/doc_eshelby.rst +0 -0
  227. {simcoon-2.1.0 → simcoon-2.2.0}/docs/homogenization/index.rst +0 -0
  228. {simcoon-2.1.0 → simcoon-2.2.0}/docs/index.rst +0 -0
  229. {simcoon-2.1.0 → simcoon-2.2.0}/docs/installation.rst +0 -0
  230. {simcoon-2.1.0 → simcoon-2.2.0}/docs/requirements.txt +0 -0
  231. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/fea_integration.rst +0 -0
  232. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/identification.rst +0 -0
  233. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/index.rst +0 -0
  234. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/modular_python.rst +0 -0
  235. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/python_solver.rst +0 -0
  236. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/python_umat.rst +0 -0
  237. {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/umat_tutorial.rst +0 -0
  238. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/constitutive.rst +0 -0
  239. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/contimech.rst +0 -0
  240. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/criteria.rst +0 -0
  241. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/damage.rst +0 -0
  242. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/derivatives.rst +0 -0
  243. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/func_N.rst +0 -0
  244. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/index.rst +0 -0
  245. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/kinematics.rst +0 -0
  246. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/natural_basis.rst +0 -0
  247. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/recovery_props.rst +0 -0
  248. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/stress.rst +0 -0
  249. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/transfer.rst +0 -0
  250. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Homogenization/eshelby.rst +0 -0
  251. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Homogenization/index.rst +0 -0
  252. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Material/index.rst +0 -0
  253. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Micromechanics/index.rst +0 -0
  254. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Micromechanics/schemes.rst +0 -0
  255. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Umat/index.rst +0 -0
  256. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Unit_cell/index.rst +0 -0
  257. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/index.rst +0 -0
  258. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Geometry/index.rst +0 -0
  259. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Maths/index.rst +0 -0
  260. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Maths/rotation.rst +0 -0
  261. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Maths/stats.rst +0 -0
  262. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Phase/index.rst +0 -0
  263. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Solver/index.rst +0 -0
  264. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Solver/solver.rst +0 -0
  265. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Solver/step.rst +0 -0
  266. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/index.rst +0 -0
  267. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/index.rst +0 -0
  268. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/constitutive.rst +0 -0
  269. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/contimech.rst +0 -0
  270. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/criteria.rst +0 -0
  271. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/damage.rst +0 -0
  272. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/func_N.rst +0 -0
  273. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/index.rst +0 -0
  274. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/kinematics.rst +0 -0
  275. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/recovery_props.rst +0 -0
  276. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/transfer.rst +0 -0
  277. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Homogenization/eshelby.rst +0 -0
  278. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Homogenization/index.rst +0 -0
  279. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Material/index.rst +0 -0
  280. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Micromechanics/index.rst +0 -0
  281. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Micromechanics/schemes.rst +0 -0
  282. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Umat/index.rst +0 -0
  283. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Unit_cell/index.rst +0 -0
  284. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/index.rst +0 -0
  285. {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/index.rst +0 -0
  286. {simcoon-2.1.0 → simcoon-2.2.0}/environment.yml +0 -0
  287. {simcoon-2.1.0 → simcoon-2.2.0}/environment_arm64.yml +0 -0
  288. {simcoon-2.1.0 → simcoon-2.2.0}/environment_doc.yml +0 -0
  289. {simcoon-2.1.0 → simcoon-2.2.0}/environment_win.yml +0 -0
  290. {simcoon-2.1.0 → simcoon-2.2.0}/examples/GALLERY_HEADER.rst +0 -0
  291. {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/README.rst +0 -0
  292. {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/convergence_study.py +0 -0
  293. {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/data/path.json +0 -0
  294. {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/directional_stiffness.py +0 -0
  295. {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/eshelby_numerical_vs_analytical.py +0 -0
  296. {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/hyperelastic_parameter_identification.py +0 -0
  297. {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/objective_rates.py +0 -0
  298. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/constitutive_relations.py +0 -0
  299. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/images/thumb/sphx_glr_constitutive_relations_thumb.png +0 -0
  300. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/neo_hookean_tensor.py +0 -0
  301. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/rotation.py +0 -0
  302. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/stress_measures.py +0 -0
  303. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/stress_transfer_helpers.py +0 -0
  304. {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/yield_criteria.py +0 -0
  305. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path.json +0 -0
  306. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path_1.json +0 -0
  307. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path_2.json +0 -0
  308. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path_3.json +0 -0
  309. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELIST_path.json +0 -0
  310. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELORT_path.json +0 -0
  311. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPCHA_path.json +0 -0
  312. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path.json +0 -0
  313. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_1.json +0 -0
  314. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_10.json +0 -0
  315. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_100.json +0 -0
  316. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_1000.json +0 -0
  317. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path.json +0 -0
  318. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_1.json +0 -0
  319. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_10.json +0 -0
  320. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_100.json +0 -0
  321. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_1000.json +0 -0
  322. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/MODUL_path.json +0 -0
  323. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path.json +0 -0
  324. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_1.json +0 -0
  325. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_10.json +0 -0
  326. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_100.json +0 -0
  327. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_1000.json +0 -0
  328. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_10000.json +0 -0
  329. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/Prony_raw.dat +0 -0
  330. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SHEAR_path.json +0 -0
  331. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path.json +0 -0
  332. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_1.json +0 -0
  333. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_100.json +0 -0
  334. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_1000.json +0 -0
  335. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_20.json +0 -0
  336. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path.json +0 -0
  337. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path_1.json +0 -0
  338. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path_2.json +0 -0
  339. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path_3.json +0 -0
  340. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path.json +0 -0
  341. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_1.json +0 -0
  342. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_10.json +0 -0
  343. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_100.json +0 -0
  344. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_1000.json +0 -0
  345. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path.json +0 -0
  346. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_1.json +0 -0
  347. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_10.json +0 -0
  348. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_100.json +0 -0
  349. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_1000.json +0 -0
  350. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path.json +0 -0
  351. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_1.json +0 -0
  352. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_10.json +0 -0
  353. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_100.json +0 -0
  354. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_1000.json +0 -0
  355. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path.json +0 -0
  356. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_1.json +0 -0
  357. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_10.json +0 -0
  358. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_100.json +0 -0
  359. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_1000.json +0 -0
  360. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path.json +0 -0
  361. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_1.json +0 -0
  362. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_10.json +0 -0
  363. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_100.json +0 -0
  364. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_1000.json +0 -0
  365. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path.json +0 -0
  366. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_1.json +0 -0
  367. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_10.json +0 -0
  368. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_100.json +0 -0
  369. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_1000.json +0 -0
  370. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_10000.json +0 -0
  371. {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/Zener_raw.dat +0 -0
  372. {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/README.rst +0 -0
  373. {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/composite_parameter_identification.py +0 -0
  374. {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/data/E_exp.txt +0 -0
  375. {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/data/path.json +0 -0
  376. {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/effective_props.py +0 -0
  377. {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/eshelby_tensors.py +0 -0
  378. {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/homogenization.py +0 -0
  379. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/HYPER_numerical.py +0 -0
  380. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/HYPER_umat.py +0 -0
  381. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/README.rst +0 -0
  382. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/comparison/Treloar.txt +0 -0
  383. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path.json +0 -0
  384. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_ET.json +0 -0
  385. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_ET_id.json +0 -0
  386. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_PS.json +0 -0
  387. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_PS_id.json +0 -0
  388. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_UT.json +0 -0
  389. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_UT_id.json +0 -0
  390. {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/hyperelastic_umat_identification.py +0 -0
  391. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/README.rst +0 -0
  392. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/chaboche_cyclic_identification.py +0 -0
  393. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/constants.inp +0 -0
  394. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/parameters.inp +0 -0
  395. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_1.json +0 -0
  396. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_1_tab1.csv +0 -0
  397. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_2.json +0 -0
  398. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_2_tab1.csv +0 -0
  399. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_3.json +0 -0
  400. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_3_tab1.csv +0 -0
  401. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/exp_data/exp_file_1.txt +0 -0
  402. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/exp_data/exp_file_15.txt +0 -0
  403. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/exp_data/exp_file_2.txt +0 -0
  404. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/json_keys_identification.py +0 -0
  405. {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/keys/material.json +0 -0
  406. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ELISO.py +0 -0
  407. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ELIST.py +0 -0
  408. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ELORT.py +0 -0
  409. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/EPCHA.py +0 -0
  410. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/EPICP.py +0 -0
  411. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/EPKCP.py +0 -0
  412. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/MODUL.py +0 -0
  413. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/MODUL_finite.py +0 -0
  414. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/MODUL_hyper_visco.py +0 -0
  415. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/PRONY_N.py +0 -0
  416. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/SMA_T.py +0 -0
  417. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/SMA_TR.py +0 -0
  418. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ZENER.py +0 -0
  419. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ZENER_N.py +0 -0
  420. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/results/results_SMADI_global-0.txt +0 -0
  421. {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/results/results_SMADI_local-0.txt +0 -0
  422. {simcoon-2.1.0 → simcoon-2.2.0}/examples/ml/README.rst +0 -0
  423. {simcoon-2.1.0 → simcoon-2.2.0}/examples/ml/pyumat_numpy_j2.py +0 -0
  424. {simcoon-2.1.0 → simcoon-2.2.0}/examples/solver/python_solver.py +0 -0
  425. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ELISO.py +0 -0
  426. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ELIST.py +0 -0
  427. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ELORT.py +0 -0
  428. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/EPICP.py +0 -0
  429. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/EPKCP.py +0 -0
  430. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/SMA_T.py +0 -0
  431. {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ZENER.py +0 -0
  432. {simcoon-2.1.0 → simcoon-2.2.0}/examples/umat_tutorial/umat_tutorial_J2.cpp +0 -0
  433. {simcoon-2.1.0 → simcoon-2.2.0}/examples/umat_tutorial/umat_tutorial_J2.hpp +0 -0
  434. {simcoon-2.1.0 → simcoon-2.2.0}/examples/umats/external/umat_plugin_ext_NEOHC.cpp +0 -0
  435. {simcoon-2.1.0 → simcoon-2.2.0}/external/UMAT_ABAQUS_ELASTIC.f +0 -0
  436. {simcoon-2.1.0 → simcoon-2.2.0}/external/USERMAT_ANSYS_ELASTIC.for +0 -0
  437. {simcoon-2.1.0 → simcoon-2.2.0}/external/readme.txt +0 -0
  438. {simcoon-2.1.0 → simcoon-2.2.0}/external/umat_plugin_aba.cpp +0 -0
  439. {simcoon-2.1.0 → simcoon-2.2.0}/external/umat_plugin_ans.cpp +0 -0
  440. {simcoon-2.1.0 → simcoon-2.2.0}/external/umat_plugin_ext.cpp +0 -0
  441. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/constitutive.hpp +0 -0
  442. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/contimech.hpp +0 -0
  443. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/damage.hpp +0 -0
  444. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/derivatives.hpp +0 -0
  445. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/fastor_bridge.hpp +0 -0
  446. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/hyperelastic.hpp +0 -0
  447. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/kinematics.hpp +0 -0
  448. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/recovery_props.hpp +0 -0
  449. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/stress.hpp +0 -0
  450. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/transfer.hpp +0 -0
  451. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/cylinder_multi.hpp +0 -0
  452. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/eshelby.hpp +0 -0
  453. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/layer_multi.hpp +0 -0
  454. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/phase_multi.hpp +0 -0
  455. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Material/crystallo.hpp +0 -0
  456. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Material/variant.hpp +0 -0
  457. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Micromechanics/multiphase.hpp +0 -0
  458. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Micromechanics/schemes.hpp +0 -0
  459. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/generic_hyper_invariants.hpp +0 -0
  460. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/generic_hyper_pstretch.hpp +0 -0
  461. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/hypoelastic_orthotropic.hpp +0 -0
  462. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/neo_hookean_incomp.hpp +0 -0
  463. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/saint_venant.hpp +0 -0
  464. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Damage/damage_LLD_0.hpp +0 -0
  465. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Damage/damage_weibull.hpp +0 -0
  466. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/External/external_umat.hpp +0 -0
  467. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/SMA_mono.hpp +0 -0
  468. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/sma_flow.hpp +0 -0
  469. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/unified_T.hpp +0 -0
  470. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/unified_TR.hpp +0 -0
  471. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Prony_Nfast.hpp +0 -0
  472. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_Nfast.hpp +0 -0
  473. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_fast.hpp +0 -0
  474. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/linear_viscoelastic.hpp +0 -0
  475. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/internal_variable_collection.hpp +0 -0
  476. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/legacy_adapters.hpp +0 -0
  477. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/yield_criterion.hpp +0 -0
  478. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_isotropic.hpp +0 -0
  479. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_orthotropic.hpp +0 -0
  480. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_transverse_isotropic.hpp +0 -0
  481. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/External/external_umat.hpp +0 -0
  482. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/SMA/unified_T.hpp +0 -0
  483. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Prony_Nfast.hpp +0 -0
  484. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_Nfast.hpp +0 -0
  485. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_fast.hpp +0 -0
  486. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/fea_transfer.hpp +0 -0
  487. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_L_elastic.hpp +0 -0
  488. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_plugin_api.hpp +0 -0
  489. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/cylinder.hpp +0 -0
  490. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/ellipsoid.hpp +0 -0
  491. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/geometry.hpp +0 -0
  492. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/layer.hpp +0 -0
  493. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/lagrange.hpp +0 -0
  494. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/random.hpp +0 -0
  495. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/solve.hpp +0 -0
  496. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/stats.hpp +0 -0
  497. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/isv.hpp +0 -0
  498. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/output.hpp +0 -0
  499. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/phase_characteristics.hpp +0 -0
  500. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/block.hpp +0 -0
  501. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/output.hpp +0 -0
  502. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/solver_assembly.hpp +0 -0
  503. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/solver_sink.hpp +0 -0
  504. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/step.hpp +0 -0
  505. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/step_meca.hpp +0 -0
  506. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/step_thermomeca.hpp +0 -0
  507. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/exception.hpp +0 -0
  508. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/parallel.hpp +0 -0
  509. {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/simcoon_doxygen_groups.hpp +0 -0
  510. {simcoon-2.1.0 → simcoon-2.2.0}/install_conda.md +0 -0
  511. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/__version__.py +0 -0
  512. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/_deprecated.py +0 -0
  513. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/ashby.py +0 -0
  514. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/base.py +0 -0
  515. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/clean_data.py +0 -0
  516. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/constant.py +0 -0
  517. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/doctor.py +0 -0
  518. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/identify.py +0 -0
  519. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/modular.py +0 -0
  520. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/parameter.py +0 -0
  521. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/pyumat.py +0 -0
  522. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/rotation.py +0 -0
  523. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/blocks.py +0 -0
  524. {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/micromechanics.py +0 -0
  525. {simcoon-2.1.0 → simcoon-2.2.0}/scripts/legacy_to_json.py +0 -0
  526. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/CMakeLists.txt +0 -0
  527. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/FindNumPy.cmake +0 -0
  528. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/FindPackageHandleStandardArgs.cmake +0 -0
  529. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/FindPackageMessage.cmake +0 -0
  530. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/Findarma2numpy.cmake +0 -0
  531. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/Findsimcoon.cmake +0 -0
  532. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/LibFindMacros.cmake +0 -0
  533. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/README.txt +0 -0
  534. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_contimech.hpp +0 -0
  535. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_criteria.hpp +0 -0
  536. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_damage.hpp +0 -0
  537. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_hyperelastic.hpp +0 -0
  538. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_kinematics.hpp +0 -0
  539. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_recovery_props.hpp +0 -0
  540. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_transfer.hpp +0 -0
  541. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Homogenization/doc_eshelby.hpp +0 -0
  542. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Maths/doc_rotation.hpp +0 -0
  543. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/omp_compat.hpp +0 -0
  544. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/Leff.hpp +0 -0
  545. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/constitutive.hpp +0 -0
  546. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/contimech.hpp +0 -0
  547. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/criteria.hpp +0 -0
  548. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/damage.hpp +0 -0
  549. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/hyperelastic.hpp +0 -0
  550. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/kinematics.hpp +0 -0
  551. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/objective_rates.hpp +0 -0
  552. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/pyumat.hpp +0 -0
  553. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/recovery_props.hpp +0 -0
  554. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/stress.hpp +0 -0
  555. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/tensor.hpp +0 -0
  556. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/transfer.hpp +0 -0
  557. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Homogenization/eshelby.hpp +0 -0
  558. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Maths/lagrange.hpp +0 -0
  559. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Maths/rotation.hpp +0 -0
  560. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Phase/phases.hpp +0 -0
  561. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Solver/solver_run.hpp +0 -0
  562. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/arma_to_numpy.hpp +0 -0
  563. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/dict_get.hpp +0 -0
  564. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/numpy_to_arma.hpp +0 -0
  565. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/parallel_nogil.hpp +0 -0
  566. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/constitutive.cpp +0 -0
  567. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/contimech.cpp +0 -0
  568. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/criteria.cpp +0 -0
  569. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/damage.cpp +0 -0
  570. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/hyperelastic.cpp +0 -0
  571. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/kinematics.cpp +0 -0
  572. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/pyumat.cpp +0 -0
  573. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/recovery_props.cpp +0 -0
  574. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/transfer.cpp +0 -0
  575. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Homogenization/eshelby.cpp +0 -0
  576. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Maths/lagrange.cpp +0 -0
  577. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Maths/rotation.cpp +0 -0
  578. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Phase/phases.cpp +0 -0
  579. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/E_exp.txt +0 -0
  580. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/Nellipsoids0.dat +0 -0
  581. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/Nellipsoids1.dat +0 -0
  582. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/parameters.inp +0 -0
  583. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/keys/Nellipsoids0.dat +0 -0
  584. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/test.py +0 -0
  585. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/numpy_allocator_probe.c +0 -0
  586. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/solver_harness.py +0 -0
  587. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_arma_to_numpy.py +0 -0
  588. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_contimech.py +0 -0
  589. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_dR_drotvec.py +0 -0
  590. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_doctor.py +0 -0
  591. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_hyper_holzapfel.py +0 -0
  592. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_hypoelastic.py +0 -0
  593. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_identify_metrics.py +0 -0
  594. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_l_eff_phases.py +0 -0
  595. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_lt_convert.py +0 -0
  596. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_lt_convert_batch.py +0 -0
  597. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_lt_convert_memory.py +0 -0
  598. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_micromechanics.py +0 -0
  599. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_modular.py +0 -0
  600. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_modular_finite.py +0 -0
  601. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_modular_hyper.py +0 -0
  602. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_numpy_allocator.py +0 -0
  603. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_parallel_gil.py +0 -0
  604. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_pyumat.py +0 -0
  605. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_reference_cases.py +0 -0
  606. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_rotation.py +0 -0
  607. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_phases.py +0 -0
  608. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_robustness.py +0 -0
  609. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_thermomechanical_visco.py +0 -0
  610. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_umat_T.py +0 -0
  611. {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_umat_start.py +0 -0
  612. {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_externalM.cpp +0 -0
  613. {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_externalT.cpp +0 -0
  614. {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_singleM.cpp +0 -0
  615. {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_singleT.cpp +0 -0
  616. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/constitutive.cpp +0 -0
  617. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/contimech.cpp +0 -0
  618. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/damage.cpp +0 -0
  619. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/derivatives.cpp +0 -0
  620. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/hyperelastic.cpp +0 -0
  621. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/kinematics.cpp +0 -0
  622. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/recovery_props.cpp +0 -0
  623. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/stress.cpp +0 -0
  624. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/transfer.cpp +0 -0
  625. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/cylinder_multi.cpp +0 -0
  626. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/eshelby.cpp +0 -0
  627. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/layer_multi.cpp +0 -0
  628. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/phase_multi.cpp +0 -0
  629. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Material/crystallo.cpp +0 -0
  630. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Material/variant.cpp +0 -0
  631. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Micromechanics/multiphase.cpp +0 -0
  632. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/Neo_hookean_incomp.cpp +0 -0
  633. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/generic_hyper_invariants.cpp +0 -0
  634. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/generic_hyper_pstretch.cpp +0 -0
  635. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/hypoelastic_orthotropic.cpp +0 -0
  636. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/saint_venant.cpp +0 -0
  637. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Combined/Prony_Nfast_Plastic.cpp +0 -0
  638. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Damage/damage_LLD_0.cpp +0 -0
  639. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Damage/damage_weibull.cpp +0 -0
  640. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/SMA/SMA_mono.cpp +0 -0
  641. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Prony_Nfast.cpp +0 -0
  642. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_Nfast.cpp +0 -0
  643. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_fast.cpp +0 -0
  644. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/linear_viscoelastic.cpp +0 -0
  645. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/damage_mechanism.cpp +0 -0
  646. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/internal_variable.cpp +0 -0
  647. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/legacy_adapters.cpp +0 -0
  648. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/viscoelastic_mechanism.cpp +0 -0
  649. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/yield_criterion.cpp +0 -0
  650. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_isotropic.cpp +0 -0
  651. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_orthotropic.cpp +0 -0
  652. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_transverse_isotropic.cpp +0 -0
  653. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Prony_Nfast.cpp +0 -0
  654. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_Nfast.cpp +0 -0
  655. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_fast.cpp +0 -0
  656. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/fea_transfer.cpp +0 -0
  657. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/umat_L_elastic.cpp +0 -0
  658. {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/umat_callback.cpp +0 -0
  659. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/cylinder.cpp +0 -0
  660. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/ellipsoid.cpp +0 -0
  661. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/geometry.cpp +0 -0
  662. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/layer.cpp +0 -0
  663. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/lagrange.cpp +0 -0
  664. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/random.cpp +0 -0
  665. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/solve.cpp +0 -0
  666. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/stats.cpp +0 -0
  667. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/output.cpp +0 -0
  668. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/block.cpp +0 -0
  669. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/output.cpp +0 -0
  670. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/solver_assembly.cpp +0 -0
  671. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/solver_sink.cpp +0 -0
  672. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/step.cpp +0 -0
  673. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/step_meca.cpp +0 -0
  674. {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/step_thermomeca.cpp +0 -0
  675. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tconstitutive.cpp +0 -0
  676. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tcontimech.cpp +0 -0
  677. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tdamage.cpp +0 -0
  678. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tderivatives.cpp +0 -0
  679. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Thyperelastic.cpp +0 -0
  680. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tkinematics.cpp +0 -0
  681. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Trecovery_props.cpp +0 -0
  682. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tstress.cpp +0 -0
  683. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Ttransfer.cpp +0 -0
  684. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Tlagrange.cpp +0 -0
  685. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Tnum_solve.cpp +0 -0
  686. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Trotation.cpp +0 -0
  687. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Tstats.cpp +0 -0
  688. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/TAba2sim.cpp +0 -0
  689. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Treference_umats.cpp +0 -0
  690. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_EPHIL.cpp +0 -0
  691. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Tumat_conventions.cpp +0 -0
  692. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Tunified_TR.cpp +0 -0
  693. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Ani_chaboche_ccp.cpp +0 -0
  694. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Ani_chaboche_ccp.hpp +0 -0
  695. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/DFA_chaboche_ccp.cpp +0 -0
  696. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/DFA_chaboche_ccp.hpp +0 -0
  697. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Generic_chaboche_ccp.cpp +0 -0
  698. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Generic_chaboche_ccp.hpp +0 -0
  699. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_chaboche_ccp.cpp +0 -0
  700. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_chaboche_ccp.hpp +0 -0
  701. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh.cpp +0 -0
  702. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh.hpp +0 -0
  703. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh_Nfast.cpp +0 -0
  704. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh_Nfast.hpp +0 -0
  705. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_isotropic.cpp +0 -0
  706. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_isotropic.hpp +0 -0
  707. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_orthotropic.cpp +0 -0
  708. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_orthotropic.hpp +0 -0
  709. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_transverse_isotropic.cpp +0 -0
  710. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_transverse_isotropic.hpp +0 -0
  711. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/plastic_kin_iso_ccp.cpp +0 -0
  712. {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/plastic_kin_iso_ccp.hpp +0 -0
  713. {simcoon-2.1.0 → simcoon-2.2.0}/test/Umats/UMEXT/TUMEXT.cpp +0 -0
  714. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Libraries/Continuum_mechanics/init.txt +0 -0
  715. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Libraries/Homogenization/init.txt +0 -0
  716. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Libraries/Maths/init.txt +0 -0
  717. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/comparison/results_job_global-0.txt +0 -0
  718. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/comparison/results_job_local-0.txt +0 -0
  719. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/data/material.json +0 -0
  720. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/data/path.json +0 -0
  721. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/plot-simple.py +0 -0
  722. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/comparison/results_job_global-0.txt +0 -0
  723. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/comparison/results_job_local-0.txt +0 -0
  724. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/data/material.json +0 -0
  725. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/data/path.json +0 -0
  726. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/plot-simple.py +0 -0
  727. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/comparison/results_job_global-0.txt +0 -0
  728. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/comparison/results_job_local-0.txt +0 -0
  729. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/data/material.json +0 -0
  730. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/data/path.json +0 -0
  731. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/plot-simple.py +0 -0
  732. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/data/material.json +0 -0
  733. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/data/path.json +0 -0
  734. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/data/path_tab1.csv +0 -0
  735. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/plot-simple.py +0 -0
  736. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/comparison/simul_1.txt +0 -0
  737. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/data/material.json +0 -0
  738. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/data/path.json +0 -0
  739. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/data/path_tab1.csv +0 -0
  740. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/plot-simple.py +0 -0
  741. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/comparison/simul_1.txt +0 -0
  742. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/data/material.json +0 -0
  743. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/data/path.json +0 -0
  744. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/data/path_tab1.csv +0 -0
  745. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/plot-simple.py +0 -0
  746. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/comparison/results_job_local-0.txt +0 -0
  747. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/data/material.json +0 -0
  748. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/data/path.json +0 -0
  749. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/plot-simple.py +0 -0
  750. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/comparison/results_job_global-0.txt +0 -0
  751. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/comparison/results_job_local-0.txt +0 -0
  752. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/data/material.json +0 -0
  753. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/data/path.json +0 -0
  754. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/plot-simple.py +0 -0
  755. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_GT.dat +0 -0
  756. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_IS.dat +0 -0
  757. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_MR.dat +0 -0
  758. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_NH.dat +0 -0
  759. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_OG.dat +0 -0
  760. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_GT.json +0 -0
  761. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_IS.json +0 -0
  762. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_MR.json +0 -0
  763. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_NH.json +0 -0
  764. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_OG.json +0 -0
  765. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_all.json +0 -0
  766. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/path.json +0 -0
  767. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/plot-simple.py +0 -0
  768. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/LOG_int/data/material.json +0 -0
  769. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/LOG_int/data/path.json +0 -0
  770. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-0-0.txt +0 -0
  771. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-0-1.txt +0 -0
  772. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-0.txt +0 -0
  773. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-1.txt +0 -0
  774. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0.txt +0 -0
  775. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-0-0.txt +0 -0
  776. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-0-1.txt +0 -0
  777. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-0.txt +0 -0
  778. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-1.txt +0 -0
  779. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0.txt +0 -0
  780. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/ellipsoids0.json +0 -0
  781. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/ellipsoids1.json +0 -0
  782. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/material.json +0 -0
  783. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/path.json +0 -0
  784. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/plot-simple.py +0 -0
  785. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/comparison/results_job_global-0.txt +0 -0
  786. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/data/ellipsoids0.json +0 -0
  787. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/data/material.json +0 -0
  788. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/data/path.json +0 -0
  789. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_global-0-0.txt +0 -0
  790. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_global-0-1.txt +0 -0
  791. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_global-0.txt +0 -0
  792. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_local-0-0.txt +0 -0
  793. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_local-0-1.txt +0 -0
  794. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_local-0.txt +0 -0
  795. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/layers0.json +0 -0
  796. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/layers1.json +0 -0
  797. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/material.json +0 -0
  798. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/path.json +0 -0
  799. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/plot-simple.py +0 -0
  800. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/comparison/results_job_global-0.txt +0 -0
  801. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/comparison/results_job_local-0.txt +0 -0
  802. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/data/material.json +0 -0
  803. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/data/path.json +0 -0
  804. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/external/UMAT_ABAQUS_ELASTIC.f +0 -0
  805. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/external/umat_plugin_aba.cpp +0 -0
  806. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/plot-simple.py +0 -0
  807. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/comparison/results_job_global-0.txt +0 -0
  808. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/comparison/results_job_local-0.txt +0 -0
  809. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/data/material.json +0 -0
  810. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/data/path.json +0 -0
  811. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/external/umat_plugin_ext.cpp +0 -0
  812. {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/plot-simple.py +0 -0
  813. {simcoon-2.1.0 → simcoon-2.2.0}/test_extern/Umats/UMABA/TUMABA.cpp +0 -0
  814. {simcoon-2.1.0 → simcoon-2.2.0}/tests/test_fedoo_integration.py +0 -0
  815. {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01A-Composites/data/E_exp.txt +0 -0
  816. {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01A-Composites/data/parameters.inp +0 -0
  817. {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01A-Composites/test.py +0 -0
  818. {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01B-Composites/data/E_exp.txt +0 -0
  819. {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01B-Composites/data/parameters.inp +0 -0
  820. {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01B-Composites/test.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: simcoon
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Simulation in Mechanics and Materials: Interactive Tools - A library for the simulation of multiphysics systems and heterogeneous materials
5
5
  Keywords: simulation,mechanics,materials,composites,homogenization,constitutive-models,finite-element,micromechanics
6
6
  Author-Email: Yves Chemisky <yves.chemisky@gmail.com>
@@ -0,0 +1,308 @@
1
+ Typed Tensors (Tensor2 / Tensor4)
2
+ =================================
3
+
4
+ ``simcoon.Tensor2`` and ``simcoon.Tensor4`` are unified typed wrappers for 2nd-
5
+ and 4th-order tensors. A single object transparently represents either one tensor
6
+ or a batch (scipy ``Rotation`` style): shape ``(6,)`` / ``(6,6)`` is a single
7
+ tensor, ``(N,6)`` / ``(N,6,6)`` a batch. ``Tensor4`` stores its data internally
8
+ in the **Kelvin-Mandel** convention, so the double contraction, inverse and
9
+ composition of 4th-order tensors become ordinary 6x6 linear algebra; the
10
+ engineering Voigt form is recovered on demand via ``.mat`` / ``.voigt``.
11
+
12
+ Objects are built through typed factories, e.g. ``Tensor2.stress(v)``,
13
+ ``Tensor2.strain(v)``, ``Tensor4.stiffness(m)``, ``Tensor4.compliance(m)``,
14
+ ``Tensor4.from_voigt(v, type_str)``.
15
+
16
+ Batch operations
17
+ ----------------
18
+
19
+ Batch ``contract``, ``rotate``, ``push_forward``, ``pull_back`` and ``inverse``
20
+ dispatch to vectorised kernels over the ``(N, ...)`` data.
21
+
22
+ .. tip:: **Shared-tangent contraction is ~20x faster — pass a single Tensor4.**
23
+
24
+ When the same 4th-order tensor is contracted against many 2nd-order tensors
25
+ (a shared elastic tangent applied at every integration point), pass a
26
+ **single** ``Tensor4`` and contract it with a **batch** ``Tensor2``::
27
+
28
+ L = Tensor4.stiffness(L6x6) # single (6,6)
29
+ eps = Tensor2.strain(eps_Nx6) # batch (N,6)
30
+ sig = L.contract(eps) # one BLAS GEMM -> ~20x
31
+
32
+ This collapses to a single ``L @ X`` matrix-matrix product (BLAS ``dgemm``):
33
+ measured ~3.7 ns/point vs ~74 ns/point for the per-point path (N = 1e5).
34
+ The C++ ``batch_contract`` implements the same fast path when the tensor4
35
+ cube has a single slice (``N4 == 1``).
36
+
37
+ **Anti-pattern:** materialising the shared tangent as a *tiled* ``(N,6,6)``
38
+ batch of identical slices — that forces ``N`` independent 6x6 matrix-vector
39
+ products and the GEMM speed-up is lost. Tile the tangent **only** when it
40
+ genuinely differs per point (a distinct consistent tangent, e.g. plasticity);
41
+ there a GEMM collapse is not possible and per-point evaluation is correct.
42
+
43
+ .. note:: A dedicated symmetric ``symtensor2`` (Kelvin-Mandel 6-vector storage)
44
+ was benchmarked as a way to speed the general contraction path and
45
+ **rejected**: it yields only ~1.1x on a single contraction and ~1.07x on
46
+ realistic distinct-tangent batch work, and Armadillo fixed-size containers
47
+ negate the 6-vs-9-double storage saving. The real ~20x lever is the
48
+ shared-tangent GEMM path above, which needs no new type; the C++ ``tensor2``
49
+ stays the general 3x3 type (the only one able to hold a non-symmetric tensor
50
+ such as ``F``, ``L``, ``R``). The Python ``Tensor2`` stores the 6 Voigt
51
+ components for the symmetric types (``"stress"``, ``"strain"``,
52
+ ``"symmetric"``) and the 9 components of any 3x3 for the type ``"none"`` (no
53
+ Voigt convention); a non-symmetric matrix given to a
54
+ symmetric type is refused rather than silently symmetrised.
55
+
56
+ Basis: the reference system of the components
57
+ ---------------------------------------------
58
+
59
+ Objectivity implies that the physical laws are independent of the choice of reference frame.
60
+ The components of a tensor only mean something together with the basis they are
61
+ written in. By default that basis is the fixed orthonormal laboratory basis
62
+ :math:`\mathbf{e}_i`: ``t.basis`` is ``None`` and nothing is stored. A
63
+ ``simcoon.Basis`` makes another choice explicit. It holds the basis vectors
64
+ :math:`\mathbf{g}_i` through the matrix :math:`\mathbf{A}` whose columns are
65
+ their laboratory frame components, and comes in two kinds:
66
+
67
+ * **orthonormal**, built from a rotation, :math:`\mathbf{g}_i = \mathbf{R}\,\mathbf{e}_i`
68
+ (a material frame, a corotational frame). Its metric is the identity, so every
69
+ formula is the one of the lab.
70
+ * **natural**, any three independent vectors, typically the convected basis
71
+ :math:`\mathbf{g}_i = \mathbf{F}\,\mathbf{G}_i` (``Basis.from_F``). Its metric
72
+ :math:`g_{ij} = \mathbf{g}_i \cdot \mathbf{g}_j`, i.e.
73
+ :math:`\mathbf{g} = \mathbf{A}^T \mathbf{A}`, enters the invariants.
74
+ 'Natural' definition come from the convected basis of a material point.
75
+
76
+ The type tag gives the variance of the components: a stress is contravariant,
77
+ :math:`\boldsymbol{\sigma} = \sigma^{ij}\,\mathbf{g}_i \otimes \mathbf{g}_j`, a
78
+ strain covariant, :math:`\boldsymbol{\varepsilon} = \varepsilon_{ij}\,\mathbf{g}^i
79
+ \otimes \mathbf{g}^j`; a stiffness is contravariant on its four indices, a
80
+ compliance covariant, the concentration tensors mixed. The lab components follow:
81
+
82
+ .. math::
83
+
84
+ \boldsymbol{\sigma}_{lab} = \mathbf{A}\,\hat{\boldsymbol{\sigma}}\,\mathbf{A}^T,
85
+ \qquad
86
+ \boldsymbol{\varepsilon}_{lab} = \mathbf{A}^{-T}\,\hat{\boldsymbol{\varepsilon}}\,\mathbf{A}^{-1}.
87
+
88
+ .. list-table:: Default variance of each type (``t.variance``)
89
+ :header-rows: 1
90
+ :widths: 30 22 48
91
+
92
+ * - Type
93
+ - Components
94
+ - Transport by :math:`\mathbf{F}` (``push_forward``)
95
+ * - ``Tensor2`` ``"stress"``
96
+ - :math:`\sigma^{ij}` (contravariant)
97
+ - :math:`\mathbf{F}\,\boldsymbol{\sigma}\,\mathbf{F}^T`, weight :math:`1/J` with ``metric=True``
98
+ * - ``Tensor2`` ``"strain"``
99
+ - :math:`\varepsilon_{ij}` (covariant)
100
+ - :math:`\mathbf{F}^{-T}\,\boldsymbol{\varepsilon}\,\mathbf{F}^{-1}`
101
+ * - ``Tensor2`` ``"symmetric"``, ``"none"`` (any 3x3, no Voigt convention)
102
+ - lab or orthonormal-frame components only
103
+ - none: no variance, hence no natural basis and no transport
104
+ * - ``Tensor4`` ``"stiffness"``, ``"generic"``
105
+ - :math:`C^{ijkl}`
106
+ - :math:`\mathbf{F}` on the four indices, weight :math:`1/J`
107
+ * - ``Tensor4`` ``"compliance"``
108
+ - :math:`M_{ijkl}`
109
+ - :math:`\mathbf{F}^{-T}` on the four indices, weight :math:`J`
110
+ * - ``Tensor4`` concentrations
111
+ - mixed, :math:`A_{ij}{}^{kl}` / :math:`B^{ij}{}_{kl}`
112
+ - pair-wise: :math:`\mathbf{F}^{-T}` on the covariant pair, :math:`\mathbf{F}` on the contravariant one
113
+
114
+ The variance is a tag of the components, ``t.variance``, carried next to the type
115
+ and the basis: ``"contravariant"`` or ``"covariant"`` for a ``Tensor2``, a pair
116
+ ``(output, input)`` for a ``Tensor4``. The table gives its default; it is read,
117
+ not the type, by the transports, by ``to_basis`` and by the metric invariants.
118
+ Two things the default is **not**:
119
+
120
+ * It is not the only possible representation. Variance is a choice made for the
121
+ components, not a property of the tensor: with the metric any tensor can be
122
+ given contravariant or covariant components (``det`` and ``eigvals`` use the
123
+ mixed ones :math:`T^i{}_j = T^{ik} g_{kj}` internally). The default is the
124
+ one under which the conjugate pairs :math:`\mathbf{S} : \mathbf{E}` and
125
+ :math:`\boldsymbol{\tau} : \mathbf{e}` contract without a metric and the
126
+ convected components stay constant under transport. ``t.to_variance(v)``
127
+ gives the same tensor with components of the other variance: a retag in the
128
+ lab or an orthonormal basis (the numbers do not change), a contraction with
129
+ the metric in a natural basis, :math:`\sigma_{ij} = g_{ik}\,\sigma^{kl}\,g_{lj}`
130
+ (or its inverse), pair by pair for a ``Tensor4``. The Voigt shear factors stay
131
+ those of the type. Mixed components of a single pair are not representable in
132
+ 6 components (they are not symmetric), hence a tag per pair. The variance is
133
+ part of what a transport means: a covariantly tagged stiffness pushes forward
134
+ with :math:`\mathbf{F}^{-T}` on its four indices, which is another tensor than
135
+ the push-forward of the contravariant one. A ``"symmetric"`` ``Tensor2`` has no
136
+ default variance: ``to_variance`` declares it before any transport or natural
137
+ basis; type ``"none"`` has none.
138
+ * It is not a statement about every strain measure. The covariant transport is
139
+ that of the Green-Lagrange / Almansi pair. A logarithmic strain is a tensor
140
+ function of a stretch, not the transport of anything: ``push_forward`` on a
141
+ strain-typed :math:`\ln \mathbf{V}` is accepted by the type tag and has no
142
+ meaning.
143
+
144
+ Two-point tensors have no basis
145
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
146
+
147
+ The deformation gradient :math:`\mathbf{F} = F^i{}_J\,\mathbf{g}_i \otimes
148
+ \mathbf{G}^J` has one index in each configuration, so there is no single basis
149
+ to attach it to; in the convected pair :math:`(\mathbf{G}_i, \mathbf{g}_i =
150
+ \mathbf{F}\,\mathbf{G}_i)` its mixed components are :math:`\delta^i_J`: it *is*
151
+ the relation between the two bases. This is why ``F`` is always a plain array of
152
+ lab components in the API, consumed by ``Basis.from_F`` and by the transports,
153
+ never wrapped. The same holds for the rotation :math:`\mathbf{R}` of the polar
154
+ decomposition, the rotation increment :math:`\Delta\mathbf{R}` and the first
155
+ Piola-Kirchhoff stress. They can be held in a ``Tensor2`` of type ``"none"`` (no
156
+ Voigt convention: 9 components, lab-lab). Such a tensor has no variance, hence no
157
+ transport and no natural basis (re-expressing its components would need the
158
+ variance of each leg); it does accept an orthonormal ``Basis``, both legs being
159
+ read in that frame, since :math:`\mathbf{Q}^T \mathbf{X}\,\mathbf{Q}` is the same
160
+ for every variance. It offers the trace, determinant, norm and eigenvalues, but
161
+ no Voigt vector.
162
+
163
+ Three operations, three meanings:
164
+
165
+ .. list-table::
166
+ :header-rows: 1
167
+ :widths: 28 72
168
+
169
+ * - Call
170
+ - Meaning
171
+ * - ``t.to_basis(b)``
172
+ - The same tensor, its components re-expressed in ``b`` (``None`` = lab).
173
+ * - ``t.with_basis(b)``
174
+ - The same components in another basis: a transport, hence another tensor.
175
+ No arithmetic, no copy.
176
+ * - ``t.rotate(R, active=False)``
177
+ - The same tensor in the frame turned by ``R``; the result carries that basis.
178
+
179
+ Tensors written in different bases cannot be combined: ``+``, ``-``, ``@``,
180
+ ``%`` and the dyadic products raise ``ValueError("Mixed basis")``. A ``name``
181
+ given to a basis is a label for ``repr`` and error messages; two bases are the
182
+ same when their vectors are.
183
+
184
+ .. code-block:: python
185
+
186
+ import numpy as np
187
+ import simcoon as sim
188
+
189
+ material = sim.Basis(rotation=sim.Rotation.from_euler("z", 30, degrees=True),
190
+ name="material")
191
+ sigma = sim.Tensor2.stress(np.array([100., 0., 0., 0., 0., 0.]))
192
+ sigma_m = sigma.to_basis(material) # material-frame components
193
+ sigma + sigma_m # ValueError: Mixed basis
194
+ sigma_m.to_basis(None) # lab components again
195
+
196
+ One basis can serve a whole batch (it is stored once and shared by reference by
197
+ every tensor derived from it), or a batch of N bases can give one per tensor.
198
+
199
+ A basis also knows its reciprocal vectors :math:`\mathbf{g}^i` (``reciprocal``,
200
+ the columns of :math:`\mathbf{A}^{-T}`, on which covariant components live), its
201
+ right stretch :math:`\mathbf{U} = \sqrt{\mathbf{g}}` (``stretch``) and the
202
+ orthonormal basis closest to it, the rotation of the polar decomposition
203
+ :math:`\mathbf{A} = \mathbf{R}\,\mathbf{U}` (``polar``). For a convected basis
204
+ these are the right stretch and the rotation of :math:`\mathbf{F}`; ``polar`` is
205
+ the rotated orthonormal frame a convected tensor is often read in.
206
+
207
+ Push-forward and pull-back carry the basis along
208
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
209
+
210
+ A push-forward is a transport, not a change of basis: the result is another
211
+ tensor, living in the current configuration. But in the convected basis its
212
+ components are those the original tensor had in the reference basis:
213
+
214
+ .. math::
215
+
216
+ \tau^{ij} = S^{IJ}, \qquad e_{ij} = E_{IJ}, \qquad
217
+ (\mathcal{L}_v \boldsymbol{\tau})^{ij} = \mathbb{C}^{IJKL}\,\dot{E}_{KL},
218
+
219
+ with :math:`\boldsymbol{\tau}` the Kirchhoff stress, :math:`\mathbf{S}` the
220
+ second Piola-Kirchhoff stress, :math:`\mathbf{e}` the Almansi and
221
+ :math:`\mathbf{E}` the Green-Lagrange strain. Pushing forward carries the basis
222
+ :math:`\mathbf{G}_i` to :math:`\mathbf{g}_i = \mathbf{F}\,\mathbf{G}_i` and keeps
223
+ the components; the familiar :math:`\mathbf{F}\,\mathbf{S}\,\mathbf{F}^T` is that
224
+ statement followed by "write the result in the lab". Accordingly:
225
+
226
+ * on a lab tensor, ``push_forward(F)`` returns lab components, as before;
227
+ * on a tensor that has its own basis, it keeps the components and returns the
228
+ convected basis :math:`\mathbf{F}\,\mathbf{A}` (``pull_back``:
229
+ :math:`\mathbf{F}^{-1}\mathbf{A}`). Only the weight :math:`1/J` of
230
+ ``metric=True`` (Kirchhoff to Cauchy, a density) touches the numbers.
231
+
232
+ .. code-block:: python
233
+
234
+ F = np.array([[1., 0.5, 0.], [0., 1., 0.], [0., 0., 1.]]) # simple shear
235
+ S = sim.Tensor2.stress(np.array([0., 80., 0., 0., 0., 0.])) # PK2 components
236
+ tau = S.with_basis(sim.Basis.from_F(F)) # Kirchhoff stress, same numbers
237
+ tau.to_basis(None) # == S.push_forward(F, metric=False)
238
+ tau.trace() # 100.0 = g_22 * 80, not 80
239
+
240
+ The same holds for an active rotation: a lab tensor is rotated in the lab, a
241
+ tensor with its own basis keeps its components while its basis vectors turn
242
+ (:math:`\mathbf{A} \to \mathbf{Q}\,\mathbf{A}`), which leaves the metric and
243
+ every invariant unchanged.
244
+
245
+ Invariants with the metric
246
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
247
+
248
+ Contractions between dual variances need no metric and act on the components in
249
+ any basis: :math:`\boldsymbol{\sigma} : \boldsymbol{\varepsilon} = \sigma^{ij}
250
+ \varepsilon_{ij}`, :math:`\mathbb{L} : \boldsymbol{\varepsilon}`, the inverse of
251
+ a stiffness. Contracting two indices of the same variance does. For
252
+ contravariant components (covariant ones exchange :math:`\mathbf{g}` and
253
+ :math:`\mathbf{g}^{-1}`):
254
+
255
+ .. math::
256
+
257
+ \mathrm{tr}\,\mathbf{T} = g_{ij}\,T^{ij}, \qquad
258
+ \mathrm{dev}\,\hat{\mathbf{T}} = \hat{\mathbf{T}} - \tfrac13\,(\mathrm{tr}\,\mathbf{T})\,\mathbf{g}^{-1}, \qquad
259
+ \mathbf{a} : \mathbf{b} = \mathrm{tr}(\hat{\mathbf{a}}\,\mathbf{g}\,\hat{\mathbf{b}}\,\mathbf{g}),
260
+
261
+ .. math::
262
+
263
+ \sigma_{eq} = \sqrt{\tfrac32\,\mathbf{s} : \mathbf{s}}, \qquad
264
+ \det\mathbf{T} = \det\hat{\mathbf{T}}\,\det\mathbf{g}, \qquad
265
+ \det(\hat{\mathbf{T}} - \lambda\,\mathbf{g}^{-1}) = 0 .
266
+
267
+ ``trace``, ``dev``, ``mises``, ``norm``, ``det``, ``eigvals`` and ``%`` use these
268
+ forms in a natural basis and the usual ones otherwise. The identity tensor is the
269
+ metric itself: ``Tensor2.identity("stress", basis=b)`` has components
270
+ :math:`g^{ij}`, ``Tensor2.identity("strain", basis=b)`` has :math:`g_{ij}`. For
271
+ fourth-order tensors, ``Tensor4.identity``, ``volumetric`` and ``deviatoric``
272
+ take the same ``basis`` argument; the stiffness-type identity becomes
273
+ :math:`\tfrac12 (g^{ik} g^{jl} + g^{il} g^{jk})` and the volumetric projector
274
+ :math:`\tfrac13\,g^{ij} g^{kl}`.
275
+
276
+ .. note::
277
+
278
+ The Kelvin-Mandel form is an isometry only in an orthonormal basis. In a
279
+ natural basis ``.mandel`` and ``.voigt`` still return the stored components,
280
+ but ``eye(6)`` is no longer the stiffness-type identity and the plain
281
+ Frobenius norm of the 6x6 is not the norm of the tensor.
282
+
283
+ Cost: with ``basis=None`` nothing changes. A basis costs one reference per
284
+ tensor object, not per point; ``with_basis`` and the transports of a tensor with
285
+ its own basis are free; ``to_basis`` costs one transport (the same kernel as
286
+ ``push_forward``); the metric of a natural basis is computed on first use and
287
+ cached, and its invariants cost about one 3x3 product per point more than in the
288
+ lab.
289
+
290
+ API reference
291
+ -------------
292
+
293
+ .. autoclass:: simcoon.Basis
294
+ :members:
295
+
296
+ .. autoclass:: simcoon.Tensor2
297
+ :members:
298
+ :inherited-members:
299
+
300
+ .. autoclass:: simcoon.Tensor4
301
+ :members:
302
+ :inherited-members:
303
+
304
+ .. autofunction:: simcoon.dyadic
305
+ .. autofunction:: simcoon.auto_dyadic
306
+ .. autofunction:: simcoon.sym_dyadic
307
+ .. autofunction:: simcoon.auto_sym_dyadic
308
+ .. autofunction:: simcoon.double_contract
@@ -23,7 +23,6 @@ Mathematical functions and tensor operations that form the foundation of continu
23
23
  - **recovery_props.hpp** - Material property recovery from stiffness/compliance tensors
24
24
  - **transfer.hpp** - Conversions between tensor and Voigt notations
25
25
  - **derivatives.hpp** - Tensor derivatives for sensitivity analysis
26
- - **natural_basis.hpp** - Natural basis transformations for curvilinear coordinates
27
26
 
28
27
  ### 2. **Homogenization** - Effective Property Calculations
29
28
 
@@ -59,8 +58,9 @@ User Material subroutines (UMAT) for finite element analysis, organized by strai
59
58
  - Isotropic, Orthotropic, Transversely Isotropic
60
59
 
61
60
  **Plasticity:**
62
- - `plastic_isotropic_ccp` - J2 plasticity with isotropic hardening (kept as a readable reference implementation)
63
- - `plastic_chaboche_ccp` - Chaboche multi-kinematic hardening model (kept as a readable reference implementation)
61
+ - `plastic_isotropic` - J2 plasticity with isotropic hardening (kept as a readable reference implementation)
62
+ - `plastic_chaboche` - Chaboche multi-kinematic hardening model (kept as a readable reference implementation)
63
+ - `plastic_johnson_cook_ccp` - Johnson-Cook rate- and temperature-dependent J2 plasticity (`EPJCK`, mechanical and thermomechanical kernels)
64
64
  - All other plasticity variants (kinematic-isotropic `EPKCP`, Hill `EPHIL`/`EPTRI`/`EPHIN`,
65
65
  Hill-Chaboche `EPHAC`, anisotropic Chaboche `EPANI`/`EPDFA`/`EPCHG`) are served since 2.0
66
66
  by the **modular UMAT engine** through `umat_legacy_modular` name adapters — legacy names
@@ -202,7 +202,7 @@ vec eta = eta_stress(sigma); // Returns 3/2 * s / sigma_eq
202
202
  ### UMAT Integration
203
203
 
204
204
  ```cpp
205
- #include <simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_isotropic_ccp.hpp>
205
+ #include <simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_isotropic.hpp>
206
206
 
207
207
  using namespace simcoon;
208
208
 
@@ -216,7 +216,7 @@ vec statev = zeros(8);
216
216
  vec DEtot = {0.001, 0, 0, 0, 0, 0};
217
217
 
218
218
  // Call UMAT
219
- umat_plasticity_iso_CCP(Etot, DEtot, sigma, Lt, L, sigma_in, DR,
219
+ umat_plasticity_iso(Etot, DEtot, sigma, Lt, L, sigma_in, DR,
220
220
  6, props, 8, statev, T, DT, Time, DTime,
221
221
  Wm, Wm_r, Wm_ir, Wm_d, 3, 3, false, 0, tnew_dt);
222
222
  ```
@@ -325,6 +325,10 @@ The following constitutive models are available through ``select_umat_M()``:
325
325
  - Von Mises + Voce + 2× Armstrong-Frederick
326
326
  - :math:`E, \nu, \alpha, \sigma_Y, Q, b, C_1, D_1, C_2, D_2`
327
327
  - 33
328
+ * - EPJCK
329
+ - Von Mises + Johnson-Cook yield stress (rate and temperature dependent)
330
+ - :math:`E, \nu, \alpha, A, B, n, C, \dot{\varepsilon}_0, m, T_{\mathrm{ref}}, T_{\mathrm{melt}}`
331
+ - 9 (T_init, p, EP, edot_p)
328
332
  * - EPHIL / EPTRI
329
333
  - Hill yield + power-law isotropic hardening
330
334
  - :math:`E, \nu, \alpha, \sigma_Y, k, m, F, G, H, L, M, N`
@@ -142,6 +142,10 @@ Model Codes
142
142
  - EPCHA
143
143
  - Von Mises + Voce + 2× Armstrong-Frederick
144
144
  - :math:`E, \nu, \alpha, \sigma_Y, Q, b, C_1, D_1, C_2, D_2`
145
+ * - 29
146
+ - EPJCK
147
+ - Von Mises + Johnson-Cook yield stress (rate and temperature dependent)
148
+ - :math:`E, \nu, \alpha, A, B, n, C, \dot{\varepsilon}_0, m, T_{\mathrm{ref}}, T_{\mathrm{melt}}`
145
149
  * - 8
146
150
  - SMADI
147
151
  - SMA unified model
@@ -74,10 +74,16 @@ run gives every conjugate pair:
74
74
  - Content
75
75
  * - ``Strain``
76
76
  - (6, N)
77
- - Eulerian strain integrated along the path with the objective rate of the run (``corate``): the strain the constitutive law sees. With the logarithmic rates (``"logarithmic"``, ``"logarithmic_R"``, the default, ``"logarithmic_F"``) it is the logarithmic strain :math:`\ln \mathbf{V}` up to the integration error; with ``"jaumann"`` or ``"green_naghdi"`` it is the integral of :math:`\mathbf{D}` along the spin of the rate: path dependent, not a function of :math:`\mathbf{F}`, equal to :math:`\ln\mathbf{V}` only on paths whose principal axes do not rotate (in simple shear it departs at third order in :math:`\gamma`); with ``"truesdell"`` it is the **Almansi strain** :math:`\mathbf{e}_A = \frac{1}{2}(\mathbf{I} - \mathbf{b}^{-1})`, exactly, not a logarithmic strain
77
+ - Eulerian strain integrated along the path with the objective rate of the run (``corate``): the strain the constitutive law sees. With the logarithmic rates (``"logarithmic"``, ``"logarithmic_R"``, the default, ``"logarithmic_F"``) it is the logarithmic strain :math:`\ln \mathbf{V}` up to the integration error; with ``"jaumann"`` or ``"green_naghdi"`` it is the integral of :math:`\mathbf{D}` along the spin of the rate: path dependent, not a function of :math:`\mathbf{F}`, equal to :math:`\ln\mathbf{V}` only on paths whose principal axes do not rotate (in simple shear it departs at third order in :math:`\gamma`); with ``"truesdell"`` it is the **Almansi strain** :math:`\mathbf{e}_A = \frac{1}{2}(\mathbf{I} - \mathbf{b}^{-1})`, exactly, not a logarithmic strain. Under ``kinematic_form="total"`` no rate is involved: it is the material logarithmic strain :math:`\ln \mathbf{U}` in reference components, exact at any step size
78
78
  * - ``LogStrain``
79
79
  - (6, N)
80
- - Logarithmic strain :math:`\ln \mathbf{V} = \frac{1}{2}\ln(\mathbf{F}\mathbf{F}^T)`, computed from :math:`\mathbf{F}`: exact whatever the rate. Use it, not ``Strain``, when the logarithmic strain is wanted under ``"truesdell"``, ``"jaumann"`` or ``"green_naghdi"``
80
+ - Logarithmic strain :math:`\ln \mathbf{V} = \frac{1}{2}\ln(\mathbf{F}\mathbf{F}^T)`, computed from :math:`\mathbf{F}`: exact whatever the rate. Under ``kinematic_form="total"`` it is the spatial counterpart of ``Strain``, which then holds the material :math:`\ln \mathbf{U}` in reference components. ``LogStrainV`` is the same field. Use it, not ``Strain``, when the logarithmic strain is wanted under ``"truesdell"``, ``"jaumann"`` or ``"green_naghdi"``
81
+ * - ``LogStrainU``
82
+ - (6, N)
83
+ - Material logarithmic strain :math:`\ln \mathbf{U} = \frac{1}{2}\ln(\mathbf{F}^T\mathbf{F})`, computed from :math:`\mathbf{F}`, in reference components: the strain of the total formulation. :math:`\ln\mathbf{V} = \mathbf{R}\,\ln\mathbf{U}\,\mathbf{R}^T`. Offered (policy) under ``kinematic_form="total"`` and under the rates whose strain is a function of :math:`\mathbf{F}`, exactly or in the limit of small steps: ``"logarithmic"``, ``"logarithmic_R"`` and ``"truesdell"``
84
+ * - ``LogStressU``
85
+ - (6, N)
86
+ - Stress :math:`\mathbf{T}` dual to :math:`\ln \mathbf{U}` (:math:`\mathbf{T}:\mathrm{d}\ln\mathbf{U} = \boldsymbol{\tau}:\mathbf{D}`), computed from ``Kirchhoff`` and :math:`\mathbf{F}`, in reference components: the stress of the total formulation. A change of measure of the stress of the run, whatever its formulation: it is what the law returned only under ``kinematic_form="total"`` (and, to first order in the step, under ``"logarithmic_R"`` for a log-strain box law), and not what a total run would have given. Offered with ``LogStrainU``
81
87
  * - ``GreenLagrange``
82
88
  - (6, N)
83
89
  - Green-Lagrange strain :math:`\mathbf{E} = \frac{1}{2}(\mathbf{F}^T\mathbf{F} - \mathbf{I})`, from :math:`\mathbf{F}`: exact whatever the rate
@@ -95,10 +101,10 @@ run gives every conjugate pair:
95
101
  - 2nd Piola-Kirchhoff stress :math:`\mathbf{S}`
96
102
  * - ``R``
97
103
  - (3, 3, N)
98
- - Rotation accumulated by the objective rate of the run; it is the :math:`\mathbf{R}` of the polar decomposition :math:`\mathbf{F} = \mathbf{R}\mathbf{U}` for ``"green_naghdi"`` and ``"logarithmic_R"``, differs from it for ``"jaumann"`` and ``"logarithmic"``, and for the convected rates ``"truesdell"`` and ``"logarithmic_F"`` it is not a rotation: it accumulates the frame increments :math:`\Delta\mathbf{F}`, i.e. it is :math:`\mathbf{F}` itself (to round-off: runs start at :math:`\mathbf{F} = \mathbf{I}`)
104
+ - Rotation accumulated by the objective rate of the run; it is the :math:`\mathbf{R}` of the polar decomposition :math:`\mathbf{F} = \mathbf{R}\mathbf{U}` for ``"green_naghdi"`` and ``"logarithmic_R"``, differs from it for ``"jaumann"`` and ``"logarithmic"``, and for the convected rates ``"truesdell"`` and ``"logarithmic_F"`` it is not a rotation: it accumulates the frame increments :math:`\Delta\mathbf{F}`, i.e. it is :math:`\mathbf{F}` itself (to round-off: runs start at :math:`\mathbf{F} = \mathbf{I}`). Under ``kinematic_form="total"`` no frame is carried and it is the identity: take the polar rotation from ``F``
99
105
  * - ``DR``
100
106
  - (3, 3, N)
101
- - Frame increment of the objective rate over the increment: the rotation :math:`\Delta\mathbf{R}`, or :math:`\Delta\mathbf{F} = \mathbf{F}_1\mathbf{F}_0^{-1}` for ``"truesdell"`` and ``"logarithmic_F"``
107
+ - Frame increment of the objective rate over the increment: the rotation :math:`\Delta\mathbf{R}`, or :math:`\Delta\mathbf{F} = \mathbf{F}_1\mathbf{F}_0^{-1}` for ``"truesdell"`` and ``"logarithmic_F"``; the identity under ``kinematic_form="total"``
102
108
 
103
109
  .. note::
104
110
 
@@ -52,7 +52,7 @@ The last part is to define the loading path. Create a folder ``data`` and a file
52
52
 
53
53
  {
54
54
  "initial_temperature": 293.5,
55
- "corate": "logarithmic_R",
55
+ "kinematic_form": "logarithmic_R",
56
56
  "blocks": [
57
57
  {
58
58
  "control_type": "small_strain",
@@ -132,9 +132,12 @@ Solver parameters
132
132
  * - T_init
133
133
  - float
134
134
  - Initial temperature in Kelvin (default 293.15); ``load_path_json`` returns the value read from the path file
135
+ * - kinematic_form
136
+ - string or int
137
+ - ``"total"``, an objective rate, or ``"rate"`` (default, the rate ``"logarithmic_R"``): see below
135
138
  * - corate
136
- - int or string
137
- - Corotational spin rate type (see below)
139
+ - string or int
140
+ - Former name of ``kinematic_form``: the same value under either name
138
141
  * - tangent_mode
139
142
  - int
140
143
  - Tangent-operator mode (default 2): see below
@@ -184,8 +187,11 @@ constitutive models (also exposed as named constants:
184
187
  renumbering)
185
188
  * - 3
186
189
  - closest-point
187
- - Reserved for the closest-point-projection exact operator (future
188
- release); currently raises an error
190
+ - Closest-point-projection integrator: the plastic strain uses the flow of
191
+ the converged state, so the consistent operator is the exact Jacobian
192
+ of the discrete update for every criterion and hardening law the
193
+ integrator supports (rolling out law by law in this version; a law
194
+ without it returns the algorithmic operator of mode 2)
189
195
 
190
196
  .. note::
191
197
  **Scope of the algorithmic tangent (2.1).** The plastic return mapping is a
@@ -197,22 +203,68 @@ constitutive models (also exposed as named constants:
197
203
  path, and no tangent can be its exact derivative: the algorithmic operator is
198
204
  then a close approximation (about :math:`10^{-4}` to :math:`10^{-2}` relative,
199
205
  more for Tresca), which slows the global Newton iteration but leaves the
200
- converged response unchanged. The closest-point integrator that makes it exact
201
- (mode 3) is planned for the next version.
206
+ converged response unchanged. Mode 3 replaces the cutting-plane scheme by a
207
+ closest-point projection, which makes the operator exact for the laws that
208
+ carry it.
202
209
 
203
210
  .. note::
204
211
  **2.0 renumbering.** Pre-2.0, ``tangent_mode 0`` meant *continuum* and
205
- ``1`` meant *algorithmic*; there was no "none" mode. The converged
206
- response is identical in every mode (the tangent steers the global
207
- Newton iteration, not the residual) — only iteration counts and run
208
- time change. Scripts passing explicit values should shift them by +1;
212
+ ``1`` meant *algorithmic*; there was no "none" mode. Modes 0, 1 and 2
213
+ share the same integrator, so their converged response is identical (the
214
+ tangent steers the global Newton iteration, not the residual) — only
215
+ iteration counts and run time change; mode 3 integrates differently and
216
+ its converged response differs from theirs by the increment's second
217
+ order wherever the flow direction rotates within the step. Scripts
218
+ passing explicit values should shift them by +1;
209
219
  scripts relying on the default silently upgrade from continuum to the
210
220
  (faster) algorithmic operator.
211
221
 
222
+ .. _finite-strain-formulation:
223
+
224
+ Finite-strain formulation
225
+ ^^^^^^^^^^^^^^^^^^^^^^^^^
226
+
227
+ The ``kinematic_form`` parameter selects how a law is updated at finite strain. It fixes the pair
228
+ of measures the law works on. It is one value: ``"total"``, or an objective rate of the table
229
+ below (by name or by code), which means the rate formulation with that rate, or ``"rate"``, the
230
+ rate formulation with its default rate ``"logarithmic_R"`` (also the default when nothing is
231
+ given). ``corate`` is the former name of the same parameter and takes the same values; given
232
+ together, the two must agree.
233
+
234
+ .. list-table::
235
+ :header-rows: 1
236
+ :widths: 14 22 22 42
237
+
238
+ * - kinematic_form
239
+ - Strain of the law
240
+ - Stress of the law
241
+ - Update
242
+ * - ``"rate"`` or an objective rate
243
+ - :math:`\ln\mathbf{V}` (spatial) under the logarithmic rates, the default included
244
+ - Kirchhoff :math:`\boldsymbol{\tau}`
245
+ - Integrated with the objective rate (table below); the stored state is
246
+ transported with the frame increment of that rate
247
+ * - ``"total"``
248
+ - :math:`\ln\mathbf{U}` (material)
249
+ - :math:`\mathbf{T}`, dual to :math:`\ln\mathbf{U}`
250
+ - No rate: the strain is a state function of :math:`\mathbf{F}` in reference components,
251
+ exact at any step size, and nothing is transported
252
+
253
+ ``"total"`` is the strain-space framework of Miehe, Apel and Lambrecht (2002). It involves no
254
+ objective rate, serves the laws listed in
255
+ :ref:`the total formulation <strain-space-route>`, and refuses ``"logarithmic"`` and
256
+ ``"small_strain"`` control. **Its**
257
+ ``Strain`` **output is** :math:`\ln\mathbf{U}`. Under the default rate ``"logarithmic_R"`` the two
258
+ formulations run a log-strain box law on the same strain and read its output differently; on a
259
+ path of prescribed :math:`\mathbf{F}` they coincide whenever the stress is coaxial with the
260
+ stretch, up to the first-order quadrature of the log_R strain. A hyperelastic law built on
261
+ :math:`\mathbf{F}` gives the same stress in both. The outputs ``LogStrainU``, ``LogStrainV`` and
262
+ ``LogStressU`` express either run in the measures of the other (see :doc:`output`).
263
+
212
264
  Corotational spin rate types
213
265
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
214
266
 
215
- The ``corate`` parameter controls the corotational formulation used in finite deformation problems:
267
+ As an objective rate, ``kinematic_form`` (or ``corate``) controls the corotational formulation used in finite deformation problems:
216
268
 
217
269
  .. list-table::
218
270
  :header-rows: 1
@@ -278,7 +330,7 @@ General structure
278
330
 
279
331
  {
280
332
  "initial_temperature": 293.15,
281
- "corate": "logarithmic_R",
333
+ "kinematic_form": "logarithmic_R",
282
334
  "blocks": [
283
335
  {
284
336
  "control_type": "small_strain",
@@ -295,7 +347,9 @@ Path and block parameters
295
347
 
296
348
  **initial_temperature**: initial temperature of the simulation (Kelvin); ``load_path_json`` returns it as ``T_init`` for ``solve``.
297
349
 
298
- **corate**: objective rate of the finite-strain control types (``"jaumann"``, ``"green_naghdi"``, ``"logarithmic"``, ``"logarithmic_R"``, ``"truesdell"``, ``"logarithmic_F"``, see the table above); returned by ``load_path_json`` for ``solve(corate=...)``.
350
+ **kinematic_form**: ``"total"``, or the objective rate of the finite-strain control types (``"jaumann"``, ``"green_naghdi"``, ``"logarithmic"``, ``"logarithmic_R"``, ``"truesdell"``, ``"logarithmic_F"``, see the table above), or ``"rate"`` for the default rate ``"logarithmic_R"`` (also when absent). ``load_path_json`` returns it as its third element, for ``solve(kinematic_form=...)``.
351
+
352
+ **corate**: former name of ``kinematic_form``, still read.
299
353
 
300
354
  **blocks**: the loading blocks, run in order. A block is mechanical or thermomechanical (coupled heat equation) according to its steps: all the steps of a block are :class:`~simcoon.solver.StepMeca` (``"thermomechanical": false``) or all are :class:`~simcoon.solver.StepThermomeca` (``"thermomechanical": true``).
301
355
 
@@ -347,7 +401,10 @@ Path and block parameters
347
401
  With ``"jaumann"``, ``"logarithmic"`` (XBM) or ``"logarithmic_F"`` under combined
348
402
  stretching and rotation, strain-controlled components are approximate and a difference
349
403
  is expected; this is one more reason to run with ``"logarithmic_R"`` (see the corate
350
- table above).
404
+ table above). Under ``kinematic_form="total"`` the stored strain is :math:`\ln\mathbf{U}` and the
405
+ law's tangent is :math:`\partial\mathbf{T}/\partial\mathbf{H}`, so ``"logarithmic"`` control
406
+ is refused, and ``"small_strain"`` blocks as well (their strain is not carried by
407
+ :math:`\mathbf{F}`): use ``"green_lagrange"``, ``"biot"``, ``"F"`` or ``"gradU"``.
351
408
 
352
409
  **ncycle**: number of times the step sequence of the block is repeated (cyclic loading). A block holding a tabular step cannot be cycled.
353
410
 
@@ -497,7 +554,7 @@ Stress-controlled tension/compression cycle, 1000 increments per step:
497
554
 
498
555
  {
499
556
  "initial_temperature": 293.15,
500
- "corate": "logarithmic_R",
557
+ "kinematic_form": "logarithmic_R",
501
558
  "blocks": [
502
559
  {
503
560
  "control_type": "small_strain",
@@ -540,7 +597,7 @@ Hyperelasticity with deformation gradient control
540
597
 
541
598
  {
542
599
  "initial_temperature": 293.5,
543
- "corate": "logarithmic_R",
600
+ "kinematic_form": "logarithmic_R",
544
601
  "blocks": [
545
602
  {
546
603
  "control_type": "F",
@@ -575,7 +632,7 @@ Finite deformation with spin (logarithmic strain)
575
632
 
576
633
  {
577
634
  "initial_temperature": 290.0,
578
- "corate": "logarithmic_R",
635
+ "kinematic_form": "logarithmic_R",
579
636
  "blocks": [
580
637
  {
581
638
  "control_type": "logarithmic",
@@ -607,7 +664,7 @@ Adiabatic strain-controlled loading/unloading (heat equation on, no heat flux):
607
664
 
608
665
  {
609
666
  "initial_temperature": 290.0,
610
- "corate": "logarithmic_R",
667
+ "kinematic_form": "logarithmic_R",
611
668
  "blocks": [
612
669
  {
613
670
  "control_type": "small_strain",