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.
- {simcoon-2.1.0 → simcoon-2.2.0}/PKG-INFO +1 -1
- simcoon-2.2.0/docs/continuum_mechanics/functions/doc_tensor.rst +308 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics_overview.md +5 -5
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/abaqus.rst +4 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/ansys.rst +4 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/output.rst +10 -4
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/solver.rst +76 -19
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/umat_catalog.rst +132 -9
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/README.rst +2 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/tensor.py +18 -0
- simcoon-2.2.0/examples/continuum_mechanics/tensor_basis.py +513 -0
- simcoon-2.2.0/examples/data/EPJCK_path.json +87 -0
- simcoon-2.2.0/examples/data/EPJCK_path_fast.json +37 -0
- simcoon-2.2.0/examples/data/EPJCK_path_slow.json +37 -0
- simcoon-2.2.0/examples/data/THERM_EPJCK_path.json +38 -0
- simcoon-2.2.0/examples/data/THERM_EPJCK_path_slow.json +38 -0
- simcoon-2.2.0/examples/mechanical/EPJCK.py +169 -0
- simcoon-2.2.0/examples/mechanical/MODUL_closest_point.py +261 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/README.rst +2 -0
- simcoon-2.2.0/examples/thermomechanical/EPJCK.py +137 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/README.rst +1 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/umats/external/umat_plugin_ext_EPICP.cpp +1 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/criteria.hpp +33 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/objective_rates.hpp +67 -4
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/tensor.hpp +61 -19
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/ellipsoid_multi.hpp +46 -3
- 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
- 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
- simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_johnson_cook_ccp.hpp +175 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/damage_mechanism.hpp +1 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/elasticity_module.hpp +23 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/hardening.hpp +35 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/internal_variable.hpp +2 -2
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/modular_umat.hpp +153 -15
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/plasticity_mechanism.hpp +52 -5
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/strain_mechanism.hpp +72 -12
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/viscoelastic_mechanism.hpp +1 -0
- 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
- simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_johnson_cook_ccp.hpp +144 -0
- 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
- simcoon-2.2.0/include/simcoon/Continuum_mechanics/Umat/return_mapping.hpp +282 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/tangent_assembly.hpp +12 -4
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_callback.hpp +1 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_smart.hpp +37 -3
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/num_solve.hpp +19 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/rotation.hpp +53 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/material_characteristics.hpp +20 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/state_variables.hpp +31 -28
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/state_variables_M.hpp +12 -11
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/state_variables_T.hpp +27 -18
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/parameter.hpp +13 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/pyproject.toml +1 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/__init__.py +1 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/__init__.py +2 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/core.py +25 -13
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/io.py +19 -13
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/maps.py +39 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/results.py +81 -16
- simcoon-2.2.0/python-setup/simcoon/tensor.py +2382 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_constitutive.hpp +19 -6
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_stress.hpp +5 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/umat.hpp +1 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/Leff.cpp +1 -3
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/objective_rates.cpp +11 -109
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/stress.cpp +17 -3
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/tensor.cpp +4 -3
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/umat.cpp +104 -25
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Solver/solver_run.cpp +2 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/python_module.cpp +6 -3
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/run_test.py +113 -0
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_closest_point_kernels.py +196 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_finite_objectivity.py +19 -10
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_finite_tangents.py +1 -0
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_johnson_cook.py +132 -0
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_lazy_derivations.py +106 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_legacy_to_json.py +1 -1
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_modular_closest_point.py +206 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_sma_unified_TR.py +22 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_io.py +47 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_run.py +62 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_tensor.py +8 -6
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_tensor_basis.py +344 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_tensor_batch.py +7 -8
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_tensor_none.py +89 -0
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_tensor_variance.py +130 -0
- simcoon-2.2.0/simcoon-python-builder/test/test_core/test_total_formulation.py +504 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_umat_tangent_output.py +29 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/software/usermat_singleM.cpp +1 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/CMakeLists.txt +7 -5
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/criteria.cpp +62 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/objective_rates.cpp +144 -3
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/tensor.cpp +16 -38
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/ellipsoid_multi.cpp +54 -6
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Micromechanics/schemes.cpp +18 -6
- 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
- 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
- simcoon-2.2.0/src/Continuum_mechanics/Umat/Mechanical/Plasticity/plastic_johnson_cook_ccp.cpp +289 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/SMA/unified_T.cpp +185 -4
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/SMA/unified_TR.cpp +243 -3
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/elasticity_module.cpp +8 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/hardening.cpp +27 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/internal_variable_collection.cpp +5 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/modular_umat.cpp +239 -54
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/plasticity_mechanism.cpp +88 -20
- 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
- simcoon-2.2.0/src/Continuum_mechanics/Umat/Thermomechanical/Plasticity/plastic_johnson_cook_ccp.cpp +387 -0
- 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
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/SMA/unified_T.cpp +10 -4
- simcoon-2.2.0/src/Continuum_mechanics/Umat/return_mapping.cpp +317 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/tangent_assembly.cpp +45 -14
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/umat_smart.cpp +68 -20
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/num_solve.cpp +25 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/rotation.cpp +43 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/material_characteristics.cpp +26 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/phase_characteristics.cpp +5 -5
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/state_variables.cpp +40 -118
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/state_variables_M.cpp +11 -34
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/state_variables_T.cpp +17 -50
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/solver.cpp +21 -8
- {simcoon-2.1.0 → simcoon-2.2.0}/test/CMakeLists.txt +6 -1
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tcriteria.cpp +29 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tobjective_rates.cpp +165 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Ttensor.cpp +10 -4
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Homogenization/Teshelby.cpp +22 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Trotation_class.cpp +46 -0
- simcoon-2.2.0/test/Libraries/Phase/Tmaterial_characteristics.cpp +70 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Modular/Tmodular_umat.cpp +47 -0
- simcoon-2.2.0/test/Libraries/Umat/Tcpp_ccp_robustness.cpp +327 -0
- simcoon-2.2.0/test/Libraries/Umat/Treturn_mapping.cpp +287 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_EPCHA.cpp +2 -2
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_EPICP.cpp +3 -3
- simcoon-2.2.0/test/Libraries/Umat/Ttangent_EPJCK.cpp +370 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_assembly.cpp +95 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttutorial_umat.cpp +2 -2
- simcoon-2.2.0/testBin/Umats/EPCHA/comparison/simul_1.txt +201 -0
- simcoon-2.2.0/testBin/Umats/EPICP/comparison/results_job_global-0.txt +3000 -0
- simcoon-2.1.0/docs/continuum_mechanics/functions/doc_tensor.rst +0 -67
- simcoon-2.1.0/include/simcoon/Continuum_mechanics/Functions/natural_basis.hpp +0 -210
- simcoon-2.1.0/python-setup/simcoon/tensor.py +0 -1405
- simcoon-2.1.0/src/Continuum_mechanics/Functions/natural_basis.cpp +0 -283
- simcoon-2.1.0/test/Libraries/Continuum_mechanics/Tnatural_basis.cpp +0 -166
- simcoon-2.1.0/testBin/Umats/EPCHA/comparison/simul_1.txt +0 -201
- simcoon-2.1.0/testBin/Umats/EPICP/comparison/results_job_global-0.txt +0 -3000
- {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/build-doc.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/build.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/ci.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/conda-packaging.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/fedoo-integration.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/release.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.github/workflows/wheels.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.gitignore +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/.readthedocs.yaml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/CMakeLists.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/Install.bat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/Install.sh +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/LICENSE +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/README.md +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/bench/bench_legacy_vs_modular.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/benchmark/README.md +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/benchmark/benchmark_solver.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/cmake/simcoonConfig.cmake.in +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/bld.bat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/build.sh +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/conda_build_config.yaml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/conda.recipe/meta.yaml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/Doxyfile +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/Makefile +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/README.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/Armadillo_logo.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/CMake.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/CNRS_logo_med.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/ENSAM_logo_med.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/TU_Bergakademie_Freiberg_logo_med.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/UB.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/UGA.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/boost_logo.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoonLogos_ss_fond.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoon_logo_small.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoon_logo_text_original.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/simcoon_overview.pdf +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_static/thumbnails/sphx_glr_constitutive_relations_thumb.png.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_templates/custom-class-template.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/_templates/layout.html +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/about.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/conf.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_constitutive.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_contimech.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_criteria.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_damage.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_hyperelastic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_hyperelastic.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_kinematics.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_recovery_props.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_rotation.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_stress.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/doc_transfer.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/functions/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/continuum_mechanics/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/constitutive.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/contimech.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/criteria.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/damage.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/hyperelastic.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/kinematics.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/objective_rates.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/recovery_props.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/stress.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/functions/transfer.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/material.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/continuum_mechanics/micromechanics.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/homogenization/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/maths.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/phase.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/rotation.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation/solver.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/simulation_overview.md +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/finite.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/mechanical.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/cpp_api/umat/thermomechanical.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/external.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/homogenization/doc_eshelby.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/homogenization/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/installation.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/requirements.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/fea_integration.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/identification.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/modular_python.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/python_solver.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/python_umat.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs/simulation/umat_tutorial.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/constitutive.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/contimech.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/criteria.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/damage.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/derivatives.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/func_N.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/kinematics.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/natural_basis.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/recovery_props.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/stress.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Functions/transfer.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Homogenization/eshelby.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Homogenization/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Material/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Micromechanics/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Micromechanics/schemes.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Umat/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/Unit_cell/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Continuum_Mechanics/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Geometry/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Maths/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Maths/rotation.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Maths/stats.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Phase/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Solver/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Solver/solver.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/Solver/step.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/Simulation/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Cpp/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/constitutive.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/contimech.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/criteria.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/damage.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/func_N.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/kinematics.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/recovery_props.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Functions/transfer.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Homogenization/eshelby.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Homogenization/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Material/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Micromechanics/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Micromechanics/schemes.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Umat/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/Unit_cell/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/Continuum_Mechanics/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/docs_old/Python/index.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/environment.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/environment_arm64.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/environment_doc.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/environment_win.yml +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/GALLERY_HEADER.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/README.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/convergence_study.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/directional_stiffness.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/eshelby_numerical_vs_analytical.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/hyperelastic_parameter_identification.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/analysis/objective_rates.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/constitutive_relations.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/images/thumb/sphx_glr_constitutive_relations_thumb.png +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/neo_hookean_tensor.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/rotation.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/stress_measures.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/stress_transfer_helpers.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/continuum_mechanics/yield_criteria.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path_2.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELISO_path_3.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELIST_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ELORT_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPCHA_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPICP_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/EPKCP_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/MODUL_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/PRONK_path_10000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/Prony_raw.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SHEAR_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/SMADI_path_20.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path_2.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ELISO_path_3.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPICP_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_EPKCP_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_SMADI_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/THERM_ZENER_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENER_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_10.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_100.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_1000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/ZENNK_path_10000.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/data/Zener_raw.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/README.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/composite_parameter_identification.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/data/E_exp.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/effective_props.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/eshelby_tensors.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/heterogeneous/homogenization.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/HYPER_numerical.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/HYPER_umat.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/README.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/comparison/Treloar.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_ET.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_ET_id.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_PS.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_PS_id.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_UT.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/data/path_UT_id.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/hyperelasticity/hyperelastic_umat_identification.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/README.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/chaboche_cyclic_identification.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/constants.inp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/parameters.inp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_1_tab1.csv +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_2.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_2_tab1.csv +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_3.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/data/path_id_3_tab1.csv +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/exp_data/exp_file_1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/exp_data/exp_file_15.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/exp_data/exp_file_2.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/json_keys_identification.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/identification/keys/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ELISO.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ELIST.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ELORT.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/EPCHA.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/EPICP.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/EPKCP.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/MODUL.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/MODUL_finite.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/MODUL_hyper_visco.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/PRONY_N.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/SMA_T.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/SMA_TR.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ZENER.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/ZENER_N.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/results/results_SMADI_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/mechanical/results/results_SMADI_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/ml/README.rst +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/ml/pyumat_numpy_j2.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/solver/python_solver.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ELISO.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ELIST.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ELORT.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/EPICP.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/EPKCP.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/SMA_T.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/thermomechanical/ZENER.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/umat_tutorial/umat_tutorial_J2.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/umat_tutorial/umat_tutorial_J2.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/examples/umats/external/umat_plugin_ext_NEOHC.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/external/UMAT_ABAQUS_ELASTIC.f +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/external/USERMAT_ANSYS_ELASTIC.for +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/external/readme.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/external/umat_plugin_aba.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/external/umat_plugin_ans.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/external/umat_plugin_ext.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/constitutive.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/contimech.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/damage.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/derivatives.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/fastor_bridge.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/hyperelastic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/kinematics.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/recovery_props.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/stress.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Functions/transfer.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/cylinder_multi.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/eshelby.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/layer_multi.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Homogenization/phase_multi.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Material/crystallo.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Material/variant.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Micromechanics/multiphase.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Micromechanics/schemes.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/generic_hyper_invariants.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/generic_hyper_pstretch.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/hypoelastic_orthotropic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/neo_hookean_incomp.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Finite/saint_venant.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Damage/damage_LLD_0.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Damage/damage_weibull.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/External/external_umat.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/SMA_mono.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/sma_flow.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/unified_T.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/SMA/unified_TR.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Prony_Nfast.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_Nfast.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_fast.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/linear_viscoelastic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/internal_variable_collection.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/legacy_adapters.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Modular/yield_criterion.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_isotropic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_orthotropic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_transverse_isotropic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/External/external_umat.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/SMA/unified_T.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Prony_Nfast.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_Nfast.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_fast.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/fea_transfer.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_L_elastic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Continuum_mechanics/Umat/umat_plugin_api.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/cylinder.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/ellipsoid.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/geometry.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Geometry/layer.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/lagrange.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/random.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/solve.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Maths/stats.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/isv.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/output.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Phase/phase_characteristics.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/block.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/output.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/solver_assembly.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/solver_sink.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/step.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/step_meca.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/Simulation/Solver/step_thermomeca.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/exception.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/parallel.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/include/simcoon/simcoon_doxygen_groups.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/install_conda.md +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/__version__.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/_deprecated.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/ashby.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/base.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/clean_data.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/constant.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/doctor.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/identify.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/modular.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/parameter.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/pyumat.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/rotation.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/blocks.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/python-setup/simcoon/solver/micromechanics.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/scripts/legacy_to_json.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/CMakeLists.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/FindNumPy.cmake +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/FindPackageHandleStandardArgs.cmake +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/FindPackageMessage.cmake +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/Findarma2numpy.cmake +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/Findsimcoon.cmake +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/LibFindMacros.cmake +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/cmake/README.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_contimech.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_criteria.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_damage.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_hyperelastic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_kinematics.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_recovery_props.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Continuum_mechanics/doc_transfer.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Homogenization/doc_eshelby.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/docs/Libraries/Maths/doc_rotation.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/omp_compat.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/Leff.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/constitutive.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/contimech.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/criteria.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/damage.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/hyperelastic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/kinematics.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/objective_rates.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/pyumat.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/recovery_props.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/stress.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/tensor.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Continuum_mechanics/transfer.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Homogenization/eshelby.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Maths/lagrange.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Maths/rotation.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Phase/phases.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/Libraries/Solver/solver_run.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/arma_to_numpy.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/dict_get.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/numpy_to_arma.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/include/simcoon/python_wrappers/parallel_nogil.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/constitutive.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/contimech.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/criteria.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/damage.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/hyperelastic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/kinematics.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/pyumat.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/recovery_props.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Continuum_mechanics/transfer.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Homogenization/eshelby.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Maths/lagrange.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Maths/rotation.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/src/python_wrappers/Libraries/Phase/phases.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/E_exp.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/Nellipsoids0.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/Nellipsoids1.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/data/parameters.inp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/keys/Nellipsoids0.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/parameter_test/test.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/numpy_allocator_probe.c +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/solver_harness.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_arma_to_numpy.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_contimech.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_dR_drotvec.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_doctor.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_hyper_holzapfel.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_hypoelastic.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_identify_metrics.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_l_eff_phases.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_lt_convert.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_lt_convert_batch.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_lt_convert_memory.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_micromechanics.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_modular.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_modular_finite.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_modular_hyper.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_numpy_allocator.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_parallel_gil.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_pyumat.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_reference_cases.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_rotation.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_phases.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_solver_robustness.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_thermomechanical_visco.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_umat_T.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/simcoon-python-builder/test/test_core/test_umat_start.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_externalM.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_externalT.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_singleM.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/software/umat_singleT.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/constitutive.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/contimech.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/damage.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/derivatives.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/hyperelastic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/kinematics.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/recovery_props.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/stress.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Functions/transfer.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/cylinder_multi.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/eshelby.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/layer_multi.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Homogenization/phase_multi.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Material/crystallo.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Material/variant.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Micromechanics/multiphase.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/Neo_hookean_incomp.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/generic_hyper_invariants.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/generic_hyper_pstretch.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/hypoelastic_orthotropic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Finite/saint_venant.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Combined/Prony_Nfast_Plastic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Damage/damage_LLD_0.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Damage/damage_weibull.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/SMA/SMA_mono.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Prony_Nfast.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_Nfast.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/Zener_fast.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Mechanical/Viscoelasticity/linear_viscoelastic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/damage_mechanism.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/internal_variable.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/legacy_adapters.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/viscoelastic_mechanism.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Modular/yield_criterion.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_isotropic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_orthotropic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Elasticity/elastic_transverse_isotropic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Prony_Nfast.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_Nfast.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/Thermomechanical/Viscoelasticity/Zener_fast.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/fea_transfer.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/umat_L_elastic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Continuum_mechanics/Umat/umat_callback.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/cylinder.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/ellipsoid.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/geometry.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Geometry/layer.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/lagrange.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/random.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/solve.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Maths/stats.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Phase/output.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/block.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/output.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/solver_assembly.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/solver_sink.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/step.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/step_meca.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/src/Simulation/Solver/step_thermomeca.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tconstitutive.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tcontimech.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tdamage.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tderivatives.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Thyperelastic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tkinematics.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Trecovery_props.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Tstress.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Continuum_mechanics/Ttransfer.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Tlagrange.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Tnum_solve.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Trotation.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Maths/Tstats.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/TAba2sim.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Treference_umats.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Ttangent_EPHIL.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Tumat_conventions.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/Tunified_TR.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Ani_chaboche_ccp.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Ani_chaboche_ccp.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/DFA_chaboche_ccp.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/DFA_chaboche_ccp.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Generic_chaboche_ccp.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Generic_chaboche_ccp.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_chaboche_ccp.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_chaboche_ccp.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh_Nfast.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/Hill_isoh_Nfast.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_isotropic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_isotropic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_orthotropic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_orthotropic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_transverse_isotropic.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/elastic_transverse_isotropic.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/plastic_kin_iso_ccp.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Libraries/Umat/reference_kernels/plastic_kin_iso_ccp.hpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test/Umats/UMEXT/TUMEXT.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Libraries/Continuum_mechanics/init.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Libraries/Homogenization/init.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Libraries/Maths/init.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELISO/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELIST/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/ELORT/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/data/path_tab1.csv +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHA/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/comparison/simul_1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/data/path_tab1.csv +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPCHG/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/comparison/simul_1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/data/path_tab1.csv +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPHAC/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPICP/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/EPKCP/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_GT.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_IS.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_MR.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_NH.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/comparison/results_OG.dat +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_GT.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_IS.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_MR.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_NH.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_OG.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/material_all.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/HYPER/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/LOG_int/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/LOG_int/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-0-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-0-1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0-1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-0-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-0-1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0-1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/ellipsoids0.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/ellipsoids1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTN/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/data/ellipsoids0.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIMTP/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_global-0-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_global-0-1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_local-0-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_local-0-1.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/layers0.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/layers1.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/MIPLN/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/external/UMAT_ABAQUS_ELASTIC.f +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/external/umat_plugin_aba.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMABA/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/comparison/results_job_global-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/comparison/results_job_local-0.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/data/material.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/data/path.json +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/external/umat_plugin_ext.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/testBin/Umats/UMEXT/plot-simple.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/test_extern/Umats/UMABA/TUMABA.cpp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/tests/test_fedoo_integration.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01A-Composites/data/E_exp.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01A-Composites/data/parameters.inp +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01A-Composites/test.py +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01B-Composites/data/E_exp.txt +0 -0
- {simcoon-2.1.0 → simcoon-2.2.0}/tutorials/01B-Composites/data/parameters.inp +0 -0
- {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.
|
|
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
|
-
- `
|
|
63
|
-
- `
|
|
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/
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
-
-
|
|
137
|
-
-
|
|
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
|
-
-
|
|
188
|
-
|
|
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.
|
|
201
|
-
|
|
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.
|
|
206
|
-
|
|
207
|
-
Newton iteration, not the residual) — only
|
|
208
|
-
|
|
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
|
-
|
|
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
|
-
"
|
|
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
|
-
**
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
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
|
-
"
|
|
667
|
+
"kinematic_form": "logarithmic_R",
|
|
611
668
|
"blocks": [
|
|
612
669
|
{
|
|
613
670
|
"control_type": "small_strain",
|