Davout 0.1.1.dev168__tar.gz → 0.1.1.dev170__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (294) hide show
  1. {davout-0.1.1.dev168/source/Davout.egg-info → davout-0.1.1.dev170}/PKG-INFO +3 -3
  2. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/README.md +2 -2
  3. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/pyproject.toml +1 -1
  4. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/neural_network_trainer.py +9 -5
  5. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/training_tools.py +356 -46
  6. davout-0.1.1.dev170/source/Davout/PythonicUtilities/function_tools.py +175 -0
  7. davout-0.1.1.dev170/source/Davout/PythonicUtilities/user_interaction_tools.py +295 -0
  8. {davout-0.1.1.dev168 → davout-0.1.1.dev170/source/Davout.egg-info}/PKG-INFO +3 -3
  9. davout-0.1.1.dev168/source/Davout/PythonicUtilities/function_tools.py +0 -91
  10. davout-0.1.1.dev168/source/Davout/PythonicUtilities/user_interaction_tools.py +0 -120
  11. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/LICENSE +0 -0
  12. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/setup.cfg +0 -0
  13. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/setup.py +0 -0
  14. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/__init__.py +0 -0
  15. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/__init__.py +0 -0
  16. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/RVE_artery.py +0 -0
  17. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/RVE_matrix_with_fiber.py +0 -0
  18. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/__init__.py +0 -0
  19. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/elastin_fiber_creator.py +0 -0
  20. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/RVE_artery_transfinite.py +0 -0
  21. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/RVE_matrix_with_fiber_transfinite.py +0 -0
  22. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/__init__.py +0 -0
  23. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/elastin_fiber_creator.py +0 -0
  24. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/spherical_RVE.py +0 -0
  25. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/__init__.py +0 -0
  26. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/artery/artery_macroscale.py +0 -0
  27. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/artery/artery_macroscale_ellipsoid.py +0 -0
  28. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/micropolar_meshes/__init__.py +0 -0
  29. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/micropolar_meshes/beam_micropolar_case_1.py +0 -0
  30. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/__init__.py +0 -0
  31. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/artery_parameters.py +0 -0
  32. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/fiber_matrix_parameters.py +0 -0
  33. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/periodic_structure.py +0 -0
  34. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/solids/__init__.py +0 -0
  35. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/solids/intervertebral_disc.py +0 -0
  36. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/aa_tests/solids/whole_ensemble_of_geometries.py +0 -0
  37. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/solids/__init__.py +0 -0
  38. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/solids/cuboid_cylinders.py +0 -0
  39. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/solids/cuboid_ellipsoids.py +0 -0
  40. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/solids/cuboid_generator.py +0 -0
  41. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/solids/cuboid_helicoids.py +0 -0
  42. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/solids/cuboid_prisms.py +0 -0
  43. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/tool_box/__init__.py +0 -0
  44. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/tool_box/geometric_tools.py +0 -0
  45. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/tool_box/mesh_data_retriever.py +0 -0
  46. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/tool_box/meshing_tools.py +0 -0
  47. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/tool_box/region_finder.py +0 -0
  48. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/CuboidGmsh/tool_box/verification_tools.py +0 -0
  49. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/PINNs/Physics/__init__.py +0 -0
  50. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/PINNs/Physics/elasticity_equation.py +0 -0
  51. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/PINNs/__init__.py +0 -0
  52. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/__init__.py +0 -0
  53. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/SVD_framework/box_with_imposed_displacement_gradient.py +0 -0
  54. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/SVD_framework/box_with_young_modulus_field.py +0 -0
  55. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/SVD_framework/dataset_generator.py +0 -0
  56. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/SVD_framework/input_data_filler.py +0 -0
  57. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/SVD_framework/kinematics_surrogate_model.py +0 -0
  58. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/SVD_framework/young_modulus_field_generator.py +0 -0
  59. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/heat_equation.py +0 -0
  60. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/box_with_imposed_displacement_gradient.py +0 -0
  61. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/box_with_young_modulus_field.py +0 -0
  62. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/dataset_generator.py +0 -0
  63. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/input_data_filler.py +0 -0
  64. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/young_modulus_field_generator.py +0 -0
  65. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_ANN_optimization.py +0 -0
  66. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_ANN_tools.py +0 -0
  67. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_SVD_based_NNs.py +0 -0
  68. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_SVD_tools.py +0 -0
  69. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_convex_and_partially_convex_input_NNs.py +0 -0
  70. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_math_tools.py +0 -0
  71. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_quotient_space_NNs.py +0 -0
  72. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_tensor_tools.py +0 -0
  73. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/custom_architectures/SVD_quotient_space.py +0 -0
  74. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/custom_architectures/__init__.py +0 -0
  75. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/custom_architectures/convexity_concerned_NNs.py +0 -0
  76. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/custom_architectures/gated_quotient_space.py +0 -0
  77. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/custom_architectures/generic_feed_forward.py +0 -0
  78. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/ANN_tools.py +0 -0
  79. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/SVD_tools.py +0 -0
  80. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/__init__.py +0 -0
  81. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/activation_function_utilities.py +0 -0
  82. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/custom_activation_functions.py +0 -0
  83. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/differentiation_tools.py +0 -0
  84. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/loss_assembler_classes.py +0 -0
  85. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/loss_tools.py +0 -0
  86. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/math_tools.py +0 -0
  87. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/numerical_tools.py +0 -0
  88. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/parameters_tools.py +0 -0
  89. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/DeepMech/tool_box/tensor_tools.py +0 -0
  90. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/__init__.py +0 -0
  91. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/REPL_experiments.py +0 -0
  92. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/__init__.py +0 -0
  93. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/optimization/__init__.py +0 -0
  94. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/optimization/tests_optimization_methods.py +0 -0
  95. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/tests_batching.py +0 -0
  96. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/tests_finite_elements.py +0 -0
  97. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/tests_loss_function.py +0 -0
  98. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/tests_physics.py +0 -0
  99. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/unidimensional/__init__.py +0 -0
  100. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/unidimensional/bar_fea.py +0 -0
  101. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/unidimensional/hyperelastic_1D_energies.py +0 -0
  102. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/aa_tests/unidimensional/variational_tools.py +0 -0
  103. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/assembly/__init__.py +0 -0
  104. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/assembly/body_forces_work.py +0 -0
  105. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/assembly/dirichlet_boundary_conditions_enforcer.py +0 -0
  106. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/assembly/hyperelastic_internal_work.py +0 -0
  107. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/assembly/surface_forces_work.py +0 -0
  108. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/constitutive_models/__init__.py +0 -0
  109. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/constitutive_models/hyperelastic_isotropic_models.py +0 -0
  110. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/finite_elements/__init__.py +0 -0
  111. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/finite_elements/elements_manager.py +0 -0
  112. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/finite_elements/finite_element_dispatcher.py +0 -0
  113. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/finite_elements/surface_elements/__init__.py +0 -0
  114. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/finite_elements/surface_elements/triangles.py +0 -0
  115. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/finite_elements/volume_elements/__init__.py +0 -0
  116. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/finite_elements/volume_elements/tetrahedrons.py +0 -0
  117. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/optimization/__init__.py +0 -0
  118. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/optimization/conditioning_matrices.py +0 -0
  119. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/optimization/loss_functions.py +0 -0
  120. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/optimization/neural_network_assembler.py +0 -0
  121. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/optimization/objective_function.py +0 -0
  122. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/physics/compressible_cauchy_hyperelasticy.py +0 -0
  123. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/__init__.py +0 -0
  124. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/constitutive_tools.py +0 -0
  125. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/dirichlet_loading_tools.py +0 -0
  126. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/math_tools.py +0 -0
  127. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/mesh_info_tools.py +0 -0
  128. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/mesh_tools.py +0 -0
  129. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/neumann_loading_tools.py +0 -0
  130. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/node_ordering.py +0 -0
  131. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/optimization_tools.py +0 -0
  132. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/parametric_curves_tools.py +0 -0
  133. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/sensitivity_tools.py +0 -0
  134. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/FENN/tool_box/tensorflow_utilities.py +0 -0
  135. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/__init__.py +0 -0
  136. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/__init__.py +0 -0
  137. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/cauchy_tetrahedron.py +0 -0
  138. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/continuum_mechanics_potato_collage.py +0 -0
  139. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/fake_book_spines.py +0 -0
  140. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/null_space_architecture.py +0 -0
  141. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/strain_tensors.py +0 -0
  142. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/tests_collage_tools.py +0 -0
  143. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/tests_delaunay.py +0 -0
  144. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/tests_paraview_tools.py +0 -0
  145. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/aa_tests/tests_plotting_tools.py +0 -0
  146. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/collage_tools.py +0 -0
  147. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/paraview_tools.py +0 -0
  148. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/plotting_tools.py +0 -0
  149. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/__init__.py +0 -0
  150. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/arrows_lines_tools.py +0 -0
  151. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/box_and_markers_classes.py +0 -0
  152. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/box_tools.py +0 -0
  153. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/collage_classes.py +0 -0
  154. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/curves_setter.py +0 -0
  155. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/image_tools.py +0 -0
  156. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/interactivity_tools.py +0 -0
  157. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/paraview_scripts.py +0 -0
  158. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/perspective_tools.py +0 -0
  159. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/GraphUtilities/tool_box/text_excerpt_tools.py +0 -0
  160. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/LaTeXUtilities.sty +0 -0
  161. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/__init__.py +0 -0
  162. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/aa_tests/__init__.py +0 -0
  163. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/aa_tests/latex_parser_tests.py +0 -0
  164. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/latex_parser.py +0 -0
  165. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/tool_box/__init__.py +0 -0
  166. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/tool_box/command_tools.py +0 -0
  167. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/tool_box/parsing_tools.py +0 -0
  168. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/LaTeXUtilities/tool_box/sty_file_tools.py +0 -0
  169. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/__init__.py +0 -0
  170. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/heat_transfer/heat_box.py +0 -0
  171. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/beam_with_fibers.py +0 -0
  172. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/box_with_young_modulus_field.py +0 -0
  173. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_HGO.py +0 -0
  174. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_neo_hookean.py +0 -0
  175. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_neo_hookean_incompressible.py +0 -0
  176. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/hyperelastic_box.py +0 -0
  177. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/incompressible_hyperelastic_box.py +0 -0
  178. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/cylindrical_coordinates_material_property.py +0 -0
  179. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/disc_HGO.py +0 -0
  180. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/local_coordinate_system_generation.py +0 -0
  181. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/parallel_hyperelastic_box.py +0 -0
  182. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/parallel_incompressible_box.py +0 -0
  183. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/read_dofs_in_volume.py +0 -0
  184. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/young_modulus_field.py +0 -0
  185. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/bending_case/beam_with_fibers_macroscale.py +0 -0
  186. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/bending_case/beam_with_fibers_microscale.py +0 -0
  187. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/deformation_laboratory/microscale_deformation_lab.py +0 -0
  188. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/disc_micropolar_neo_hookean.py +0 -0
  189. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam.py +0 -0
  190. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean.py +0 -0
  191. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean_pure_dolfin.py +0 -0
  192. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean_pure_dolfin_old.py +0 -0
  193. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Suh_et_al/suh_implementation.py +0 -0
  194. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/micropolar_with_homogenization.py +0 -0
  195. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/micropolar_with_homogenization_original.py +0 -0
  196. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/tools_homogenization.py +0 -0
  197. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/tools_io.py +0 -0
  198. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/stress_plots.py +0 -0
  199. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/numerical_differentiation.py +0 -0
  200. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/numerical_differentiation_second_elasticity_tensor.py +0 -0
  201. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/tangent_operator_plotter.py +0 -0
  202. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/torsion_case/beam_with_fibers_macroscale.py +0 -0
  203. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/torsion_case/beam_with_fibers_microscale.py +0 -0
  204. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/traction_case/beam_with_fibers_macroscale.py +0 -0
  205. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/traction_case/beam_with_fibers_microscale.py +0 -0
  206. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/curve_fitting.py +0 -0
  207. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/cylindrical_coordinates_field.py +0 -0
  208. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/cylindrical_coordinates_material_property.py +0 -0
  209. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/elasticity_tensor.py +0 -0
  210. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/incompressible.py +0 -0
  211. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/linear_expression_test.py +0 -0
  212. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/petsc_2D.py +0 -0
  213. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_periodic.py +0 -0
  214. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_periodic_class.py +0 -0
  215. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_shifted_field.py +0 -0
  216. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/teste_afim.py +0 -0
  217. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/working_example_dictionaries.py +0 -0
  218. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/multiscale/hyperelasticity/beam_with_fibers_microscale.py +0 -0
  219. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/physics_prototypes/compressible_hyperelasticity.py +0 -0
  220. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/physics_prototypes/incompressible_hyperelasticity.py +0 -0
  221. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/test_meshes/beam_gmsh.py +0 -0
  222. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/test_meshes_paths.py +0 -0
  223. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/aa_tests_and_examples/various_physics_tests.py +0 -0
  224. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/constitutive_models/__init__.py +0 -0
  225. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/constitutive_models/heat_transfer/isotropic_heat_conduction.py +0 -0
  226. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/constitutive_models/hyperelasticity/__init__.py +0 -0
  227. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/constitutive_models/hyperelasticity/anisotropic_hyperelasticity.py +0 -0
  228. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/constitutive_models/hyperelasticity/isotropic_hyperelasticity.py +0 -0
  229. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/constitutive_models/hyperelasticity/micropolar_hyperelasticity.py +0 -0
  230. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/multiscale/__init__.py +0 -0
  231. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/__init__.py +0 -0
  232. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/multiscale_classes.py +0 -0
  233. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/multiscale_expressions.py +0 -0
  234. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/multiscale/multiscale_hyperelasticity.py +0 -0
  235. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/multiscale/multiscale_micropolar.py +0 -0
  236. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/physics/__init__.py +0 -0
  237. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/physics/hyperelastic_cauchy_continuum.py +0 -0
  238. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/physics/hyperelastic_incompressible_cauchy_continuum.py +0 -0
  239. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/physics/hyperelastic_micropolar_continuum.py +0 -0
  240. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/physics/steady_state_heat_transfer.py +0 -0
  241. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/post_processes/__init__.py +0 -0
  242. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/post_processes/post_processes_classes.py +0 -0
  243. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/post_processes/post_processes_functions.py +0 -0
  244. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/__init__.py +0 -0
  245. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/binary_tools.py +0 -0
  246. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/body_forces_loading_tools.py +0 -0
  247. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/boundary_conditions_tools.py +0 -0
  248. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/constitutive_tools.py +0 -0
  249. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/dirichlet_load_tools.py +0 -0
  250. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/expressions_tools.py +0 -0
  251. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/functional_tools.py +0 -0
  252. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/homogenization_tools.py +0 -0
  253. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/mesh_handling_tools.py +0 -0
  254. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/multiscale_boundary_conditions_tools.py +0 -0
  255. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/numerical_tools.py +0 -0
  256. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/parallelization_tools.py +0 -0
  257. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/post_processing_tools.py +0 -0
  258. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/pseudotime_stepping_tools.py +0 -0
  259. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/read_write_tools.py +0 -0
  260. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/surface_loading_tools.py +0 -0
  261. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/tensor_tools.py +0 -0
  262. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/variational_tools.py +0 -0
  263. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/MultiMech/tool_box/weak_boundary_conditions_tools.py +0 -0
  264. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/__init__.py +0 -0
  265. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/aa_tests/__init__.py +0 -0
  266. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/aa_tests/tests_template.py +0 -0
  267. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/aa_tests/txt_tests.py +0 -0
  268. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/coordinate_systems_tools.py +0 -0
  269. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/dictionary_tools.py +0 -0
  270. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/file_handling_tools.py +0 -0
  271. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/fonts/CMU_Serif_Roman.ttf +0 -0
  272. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/interpolation_tools.py +0 -0
  273. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/math_experiments.py +0 -0
  274. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/numpy_tools.py +0 -0
  275. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/package_tools.py +0 -0
  276. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/path_tools.py +0 -0
  277. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/programming_tools.py +0 -0
  278. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/recursion_tools.py +0 -0
  279. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/string_tools.py +0 -0
  280. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/tensor_and_math_tools.py +0 -0
  281. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/PythonicUtilities/testing_tools.py +0 -0
  282. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/__init__.py +0 -0
  283. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/aa_tests/__init__.py +0 -0
  284. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/aa_tests/test_delaunay_tools.py +0 -0
  285. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/domain_decomposition/__init__.py +0 -0
  286. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/tool_box/__init__.py +0 -0
  287. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/tool_box/delaunay_tools.py +0 -0
  288. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/tool_box/sampling_tools.py +0 -0
  289. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/StochasticUtilities/tool_box/statistics_tools.py +0 -0
  290. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout/__init__.py +0 -0
  291. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout.egg-info/SOURCES.txt +0 -0
  292. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout.egg-info/dependency_links.txt +0 -0
  293. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout.egg-info/requires.txt +0 -0
  294. {davout-0.1.1.dev168 → davout-0.1.1.dev170}/source/Davout.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: Davout
3
- Version: 0.1.1.dev168
3
+ Version: 0.1.1.dev170
4
4
  Summary: Scientific computing utilities combining FEM, ANN and tooling
5
5
  Author: Matheus Janczkowski
6
6
  Author-email: Matheus Janczkowski <matheusj2009@hotmail.com>
@@ -23,11 +23,11 @@ to the repository and source files: https://github.com/Matheus-Janczkowski/Davou
23
23
 
24
24
  1. Link to the booklet on installation of a miscelaneous of software: https://www.overleaf.com/read/wbxhncmtnmkm#0eb73b
25
25
 
26
- 2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/blob/main/introduction_to_python_programming.pdf
26
+ 2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_python_programming
27
27
 
28
28
  3. Link to the booklet on writing using LaTeX: https://www.overleaf.com/read/sdrvfrpdjhft#66d6f9
29
29
 
30
- 4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/blob/main/introduction_to_continuum_mechanics.pdf
30
+ 4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_continuum_mechanics
31
31
 
32
32
  4. Link for the presentation template: https://www.overleaf.com/read/sbgxdphxswmm#6d7d64
33
33
 
@@ -4,11 +4,11 @@ to the repository and source files: https://github.com/Matheus-Janczkowski/Davou
4
4
 
5
5
  1. Link to the booklet on installation of a miscelaneous of software: https://www.overleaf.com/read/wbxhncmtnmkm#0eb73b
6
6
 
7
- 2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/blob/main/introduction_to_python_programming.pdf
7
+ 2. Link to the book on python programming: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_python_programming
8
8
 
9
9
  3. Link to the booklet on writing using LaTeX: https://www.overleaf.com/read/sdrvfrpdjhft#66d6f9
10
10
 
11
- 4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/blob/main/introduction_to_continuum_mechanics.pdf
11
+ 4. Link to the book on continuum mechanics: https://github.com/Matheus-Janczkowski/CompMechSelfStudy/tree/main/introduction_to_continuum_mechanics
12
12
 
13
13
  4. Link for the presentation template: https://www.overleaf.com/read/sbgxdphxswmm#6d7d64
14
14
 
@@ -63,7 +63,7 @@ build-backend = "setuptools.build_meta"
63
63
 
64
64
  [project]
65
65
  name = "Davout"
66
- version = "0.1.1.dev168"
66
+ version = "0.1.1.dev170"
67
67
  description = "Scientific computing utilities combining FEM, ANN and tooling"
68
68
  readme = "README.md"
69
69
  authors = [
@@ -24,7 +24,7 @@ class SurrogateModel:
24
24
  def __init__(self, displacement_data_file, input_data_file,
25
25
  saved_model_file, results_path, n_training_samples,
26
26
  quotient_space_dimension, n_monte_carlo_realizations, n_best_models,
27
- n_best_samples, mesh_file_name, screenshots_path):
27
+ n_best_samples, mesh_file_name, screenshots_path, optimizer):
28
28
 
29
29
  # Stores the data
30
30
 
@@ -50,6 +50,8 @@ class SurrogateModel:
50
50
 
51
51
  self.screenshots_path = screenshots_path
52
52
 
53
+ self.optimizer = optimizer
54
+
53
55
  # Reads the two files
54
56
 
55
57
  self.output_data = np.load(self.results_path+"//"+
@@ -60,7 +62,7 @@ class SurrogateModel:
60
62
  # Sets a list of layers and the activation functions
61
63
 
62
64
  self.activations_list = [{"elu": {"number of neurons": 100}}, {
63
- "elu": {"number of neurons": 1000}}, {"linear":
65
+ "elu": {"number of neurons": 100}}, {"linear":
64
66
  self.n_output_neurons}]
65
67
 
66
68
  # Defines a function to train the neural network model
@@ -113,7 +115,7 @@ class SurrogateModel:
113
115
  maximum_iterations, verbose_deltaIterations=
114
116
  verbose_delta_iterations, save_model_file=self.saved_model_file,
115
117
  match_data_float_type_to_trainables=True, parent_path=
116
- self.results_path)
118
+ self.results_path, optimizer=self.optimizer)
117
119
 
118
120
  t_initial = time()
119
121
 
@@ -515,7 +517,9 @@ if __name__=="__main__":
515
517
 
516
518
  n_best_samples = 10
517
519
 
518
- training_flag = False
520
+ optimizer = "Adam"
521
+
522
+ training_flag = True
519
523
 
520
524
  test_flag = False
521
525
 
@@ -532,7 +536,7 @@ if __name__=="__main__":
532
536
  surrogate_model_class = SurrogateModel(displacement_data_file,
533
537
  input_data_file, saved_model_file, results_path, n_training_samples,
534
538
  quotient_space_dimension, n_monte_carlo_realizations, n_best_models,
535
- n_best_samples, mesh_file_name, screenshots_path)
539
+ n_best_samples, mesh_file_name, screenshots_path, optimizer)
536
540
 
537
541
  # Sets training forth if it is the case
538
542
 
@@ -4,6 +4,8 @@ import tensorflow as tf
4
4
 
5
5
  import sys
6
6
 
7
+ import inspect
8
+
7
9
  import numpy as np
8
10
 
9
11
  from tqdm import tqdm
@@ -14,7 +16,7 @@ import time
14
16
 
15
17
  from copy import deepcopy
16
18
 
17
- from scipy.optimize import minimize
19
+ from scipy.optimize import minimize, _minimize
18
20
 
19
21
  from scipy import stats
20
22
 
@@ -26,6 +28,10 @@ from ...PythonicUtilities import path_tools
26
28
 
27
29
  from ...PythonicUtilities import string_tools
28
30
 
31
+ from ...PythonicUtilities.function_tools import verify_dictionary_as_function_argument
32
+
33
+ from ...PythonicUtilities.user_interaction_tools import PrintForLoopInfo
34
+
29
35
  # Defines a class to optimize the model's parameters
30
36
 
31
37
  class ModelTraining:
@@ -33,8 +39,8 @@ class ModelTraining:
33
39
  def __init__(self, model, training_inputArray, training_trueArray,
34
40
  loss_metric=tf.keras.losses.MeanAbsoluteError(), optimizer=
35
41
  tf.keras.optimizers.SGD(learning_rate=0.01, momentum=0.9, nesterov=
36
- True), n_iterations=1000, gradient_tolerance=1E-3,
37
- float_type=tf.float32, verbose_deltaIterations=100, verbose=False,
42
+ True), n_iterations=1000, gradient_tolerance=1E-3, float_type=
43
+ tf.float32, verbose_deltaIterations=100, verbose=False,
38
44
  save_model_file="trained_model.keras", parent_path="get current pa"+
39
45
  "th"):
40
46
 
@@ -99,7 +105,6 @@ class ModelTraining:
99
105
  # tor to create a map for compilation, hence, speeding it up
100
106
 
101
107
  @tf.function
102
-
103
108
  def train_step(self):
104
109
 
105
110
  with tf.GradientTape() as tape:
@@ -111,7 +116,7 @@ class ModelTraining:
111
116
  self.optimizer.apply_gradients(zip(gradients,
112
117
  self.model.trainable_variables))
113
118
 
114
- return loss, tf.linalg.global_norm(gradients)
119
+ return loss, gradients
115
120
 
116
121
  # Defines a method for the optimization loop. But names it call so
117
122
  # that it is called as soon as the class is created
@@ -130,7 +135,11 @@ class ModelTraining:
130
135
 
131
136
  for i in range(self.n_iterations):
132
137
 
133
- loss_value, gradient_norm = self.train_step()
138
+ loss_value, gradient_vector = self.train_step()
139
+
140
+ # Evaluates the gradient's norm
141
+
142
+ gradient_norm = tf.linalg.global_norm(gradient_vector)
134
143
 
135
144
  if gradient_norm.numpy()<=self.gradient_tolerance:
136
145
 
@@ -148,13 +157,18 @@ class ModelTraining:
148
157
 
149
158
  if i%self.verbose_deltaIterations==0:
150
159
 
160
+ gradient_maximum_component = tf.reduce_max(tf.abs(
161
+ gradient_vector)).numpy()
162
+
151
163
  print("Iteration "+integer_toString(i, max_digits)+
152
164
  ": loss="+format(loss_value.numpy(), '.5e')+", gra"+
153
165
  "dient norm: "+format(gradient_norm.numpy(), '.5e')+
154
166
  ", gradient norm divided by the square root of the"+
155
167
  " number of trainable parameters: "+format(
156
168
  gradient_norm.numpy()/
157
- self.number_trainable_parameters, '.5e'))
169
+ self.number_trainable_parameters, '.5e')+"\nThe ma"+
170
+ "ximum component of the gradient in absolute value"+
171
+ " is: "+format(gradient_maximum_component, '.5e'))
158
172
 
159
173
  # Evaluates the elapsed time
160
174
 
@@ -303,14 +317,6 @@ class ModelCustomTraining:
303
317
  self.training_trueValues = tf.constant(training_trueArray, dtype
304
318
  =self.float_type)
305
319
 
306
- # Construct a class to give the loss function, its gradient, and
307
- # the instructions for parameters (weights and biases) flattening
308
- # and reconstruction
309
-
310
- self.loss_class, self.model_parameters = loss_tools.build_loss_gradient_varying_model_parameters(
311
- self.model, self.loss_metric, self.training_input,
312
- model_true_values=self.training_trueValues, verbose=verbose)
313
-
314
320
  # Gets the number of output neurons. Tries to get first via a
315
321
  # custom attribute
316
322
 
@@ -322,6 +328,198 @@ class ModelCustomTraining:
322
328
 
323
329
  self.n_outputs = self.model.trainable_variables[-1].shape[0]
324
330
 
331
+ # Verifies if the optimizer is a dictionary
332
+
333
+ optimizer_name = None
334
+
335
+ optimizer_additional_info = {}
336
+
337
+ if isinstance(self.optimizer, dict):
338
+
339
+ # Verifies if there is a key for the optimizer's name
340
+
341
+ if "name" in self.optimizer:
342
+
343
+ # Gets the name
344
+
345
+ optimizer_name = self.optimizer["name"]
346
+
347
+ # Otherwise, throws an error
348
+
349
+ else:
350
+
351
+ raise KeyError("There is no key 'name' in the dictiona"+
352
+ "ry 'optimizer' in 'ModelCustomTraining'. The name mus"+
353
+ "t be provided to tell the optimization method")
354
+
355
+ # Copies all additional information
356
+
357
+ for key, value in self.optimizer.items():
358
+
359
+ # Excludes the key 'name'
360
+
361
+ if key!="name":
362
+
363
+ optimizer_additional_info[key] = value
364
+
365
+ # Verifies if the optimizer variable is a string
366
+
367
+ elif isinstance(self.optimizer, str):
368
+
369
+ # Copies the optimizer name
370
+
371
+ optimizer_name = str(self.optimizer)
372
+
373
+ # If an optimizer name was recovered, tracks if it is an optimi-
374
+ # zer native to Keras or native to scipy
375
+
376
+ if optimizer_name is not None:
377
+
378
+ # Verifies if it is from Keras
379
+
380
+ if hasattr(tf.keras.optimizers, optimizer_name):
381
+
382
+ # Sets the optimizer from Keras as an instance of the
383
+ # corresponding class
384
+
385
+ optimizer_class = getattr(tf.keras.optimizers,
386
+ optimizer_name)
387
+
388
+ # Verifies if the user-given parameters of the optimizer
389
+ # are consistent
390
+
391
+ verify_dictionary_as_function_argument(
392
+ optimizer_class.__init__, optimizer_additional_info,
393
+ list_of_arguments_not_to_be_verified=["self", "kwargs"])
394
+
395
+ # Sets the hyperparameters
396
+
397
+ self.optimizer = optimizer_class(
398
+ **optimizer_additional_info)
399
+
400
+ # Sets the training method as the wrapper for automatic
401
+ # differentiation and the keras optimizer
402
+
403
+ self.set_training = self.set_keras_training
404
+
405
+ # Sets the loss function as the one appropriate for Ke-
406
+ # ras optimizers
407
+
408
+ self.loss_function = self.loss_function_keras
409
+
410
+ # Sets the flag that tells if a scipy optimizer will be
411
+ # used to False
412
+
413
+ self.use_scipy_optimizer = False
414
+
415
+ # Verifies if it is a scipy method
416
+
417
+ else:
418
+
419
+ # Gets the optimization methods available at scipy
420
+
421
+ available_scipy_optimizers = getattr(_minimize,'MINIMI'+
422
+ 'ZE_METHODS',{})
423
+
424
+ # Verifies if the given optimizer name is in the list of
425
+ # available methods
426
+
427
+ if not (optimizer_name.lower() in (
428
+ available_scipy_optimizers)):
429
+
430
+ # Gets the available methods in Keras
431
+
432
+ native_keras_optimizers = ""
433
+
434
+ for name, optimizer_object in inspect.getmembers(
435
+ tf.keras.optimizers):
436
+
437
+ if inspect.isclass(optimizer_object) and (
438
+ issubclass(optimizer_object,
439
+ tf.keras.optimizers.Optimizer)):
440
+
441
+ native_keras_optimizers += ("\n'"+str(name)+
442
+ "'")
443
+
444
+ # Gets the available methods in scipy
445
+
446
+ native_scipy_methods = ""
447
+
448
+ for name in available_scipy_optimizers:
449
+
450
+ native_scipy_methods += "\n'"+str(name)+"'"
451
+
452
+ raise NameError("'"+str(optimizer_name)+"' was not"+
453
+ " found in the native Keras' optimizers nor in the"+
454
+ " available optimizers at scipy. Check the availab"+
455
+ "le methods in Keras:\n"+native_keras_optimizers+
456
+ "\n\nand the methods available in scipy:\n"+
457
+ native_scipy_methods)
458
+
459
+ # Sets the method and the dictionary of additional in-
460
+ # formation
461
+
462
+ self.optimizer = optimizer_name.lower()
463
+
464
+ self.optimizer_additional_info = (
465
+ optimizer_additional_info)
466
+
467
+ # Sets the training method as the wrapper for scipy
468
+
469
+ self.set_training = self.set_scipy_training
470
+
471
+ # Sets the loss function as the one appropriate for sci-
472
+ # py using a flat tensor of trainable parameters of the
473
+ # model as input
474
+
475
+ self.loss_function = self.loss_function_scipy
476
+
477
+ # Sets the flag that tells if a scipy optimizer will be
478
+ # used to False
479
+
480
+ self.use_scipy_optimizer = True
481
+
482
+ # Otherwise, treats the given optimizer as a keras-native opti-
483
+ # mizer
484
+
485
+ else:
486
+
487
+ # Sets the training method as the wrapper for automatic dif-
488
+ # ferentiation and the keras optimizer
489
+
490
+ self.set_training = self.set_keras_training
491
+
492
+ # Sets the loss function as the one appropriate for Keras
493
+ # optimizers
494
+
495
+ self.loss_function = self.loss_function_keras
496
+
497
+ # Sets the flag that tells if a scipy optimizer will be used
498
+ # to False
499
+
500
+ self.use_scipy_optimizer = False
501
+
502
+ # If a scipy optimizer will be used, instantiates the class for
503
+ # the loss function and automatic differentiation, then takes
504
+ # the flat tensor of model parameters
505
+
506
+ if self.use_scipy_optimizer:
507
+
508
+ # Constructs a class to give the loss function, its gra-
509
+ # dient, and the instructions for parameters (weights and
510
+ # biases) flattening and reconstruction
511
+
512
+ self.loss_class, self.model_parameters = loss_tools.build_loss_gradient_varying_model_parameters(
513
+ self.model, self.loss_metric, self.training_input,
514
+ model_true_values=self.training_trueValues, verbose=verbose)
515
+
516
+ # Otherwise, initializes the flat tensor of model parameters as
517
+ # a None object
518
+
519
+ else:
520
+
521
+ self.model_parameters = None
522
+
325
523
  # Defines a method to evaluate the hessian of each output neuron of
326
524
  # the model
327
525
 
@@ -382,9 +580,24 @@ class ModelCustomTraining:
382
580
 
383
581
  return hessian_matrices
384
582
 
385
- # Defines a method to evaluate the loss function
583
+ # Defines a function to evaluate the loss function from the input
584
+ # proper for use with Keras' optimizers
386
585
 
387
- def loss_function(self):
586
+ @tf.function
587
+ def loss_function_keras(self):
588
+
589
+ # Gets the model response
590
+
591
+ y_training = self.model(self.training_input)
592
+
593
+ # Gets the loss value
594
+
595
+ return self.loss_metric(self.training_trueValues, y_training)
596
+
597
+ # Defines a method to evaluate the loss function given the trainable
598
+ # parameters as input
599
+
600
+ def loss_function_scipy(self):
388
601
 
389
602
  # Gets the loss value and returns it
390
603
 
@@ -452,19 +665,91 @@ class ModelCustomTraining:
452
665
  # Defines a method for training, it assembles the optimization pro-
453
666
  # blem and runs it
454
667
 
455
- def set_training(self, n_max_iterations):
668
+ def set_scipy_training(self, n_max_iterations):
669
+
670
+ # Updates the dictionary of options
671
+
672
+ self.optimizer_additional_info["maxiter"] = n_max_iterations
456
673
 
457
674
  # Sets the minimization problem using the minimize class from
458
675
  # scipy
459
676
 
460
677
  minimization_problem = minimize(self.loss_class,
461
678
  self.model_parameters, method=self.optimizer, jac=True, tol=
462
- self.gradient_tolerance, options={"maxiter": n_max_iterations},
679
+ self.gradient_tolerance, options=self.optimizer_additional_info,
463
680
  callback=self.callback)
464
681
 
465
682
  # Updates the model parameters
466
683
 
467
684
  self.model_parameters = minimization_problem.x
685
+
686
+ return None, None
687
+
688
+ # Defines a method for the train step using native keras optimizers
689
+
690
+ def set_keras_training(self, n_max_iterations):
691
+
692
+ # Initializes the last evaluations of loss and gradient vectors
693
+
694
+ loss_evaluation = None
695
+
696
+ gradient_evaluation = None
697
+
698
+ # Iterates through the maximum number of iterations
699
+
700
+ for i in range(n_max_iterations):
701
+
702
+ loss_evaluation, gradient_evaluation = self.keras_training_step()
703
+
704
+ # Evaluates the gradient's norm
705
+
706
+ gradient_norm = tf.linalg.global_norm(gradient_evaluation)
707
+
708
+ if gradient_norm.numpy()<=self.gradient_tolerance:
709
+
710
+ print("The gradient's norm has reached the value of "+
711
+ str(gradient_norm.numpy())+", which is less than the t"+
712
+ "hreshold of "+str(self.gradient_tolerance)+". Thus, s"+
713
+ "tops the optimization procedure at iteration "+str(i)+
714
+ "\n")
715
+
716
+ break
717
+
718
+ # Prints the callback
719
+
720
+ self.callback(None)
721
+
722
+ # Updates the flat tensor of trainable parameters from the upda-
723
+ # ted parameters of the model
724
+
725
+ self.model_parameters, _ = parameters_tools.model_parameters_to_flat_tensor_and_shapes(
726
+ self.model)
727
+
728
+ # Returns the last evaluations of the loss function and of the
729
+ # gradient vector
730
+
731
+ return loss_evaluation, gradient_evaluation
732
+
733
+ # Defines a function to compute a single training step using a nati-
734
+ # ve keras optimizer
735
+
736
+ @tf.function
737
+ def keras_training_step(self):
738
+
739
+ # Computes the gradient using automatic differentiation
740
+
741
+ with tf.GradientTape() as tape:
742
+
743
+ loss = self.loss_function_keras()
744
+
745
+ gradients = tape.gradient(loss, self.model.trainable_variables)
746
+
747
+ # Applies the gradient vector to the optimizer
748
+
749
+ self.optimizer.apply_gradients(zip(gradients,
750
+ self.model.trainable_variables))
751
+
752
+ return loss, gradients
468
753
 
469
754
  # Defines a method for the optimization loop. But names it call so
470
755
  # that it is called as soon as the class is created
@@ -475,8 +760,7 @@ class ModelCustomTraining:
475
760
 
476
761
  start_time = time.time()
477
762
 
478
- initial_loss = self.loss_class.evaluate_scalar_function(
479
- self.model_parameters).numpy()
763
+ initial_loss = self.loss_function().numpy()
480
764
 
481
765
  # Iterates through the optimization loop
482
766
 
@@ -516,18 +800,34 @@ class ModelCustomTraining:
516
800
  # Calls the optimization procedure. Using the custom op-
517
801
  # timizer
518
802
 
519
- self.set_training(self.verbose_deltaIterations)
803
+ loss_value, evaluated_gradient = self.set_training(
804
+ self.verbose_deltaIterations)
805
+
806
+ # If the loss value is None, it signifies that a custom
807
+ # optimizer was used and the loss function and gradient
808
+ # vector must be evaluated from the model parameters
809
+
810
+ if self.use_scipy_optimizer:
811
+
812
+ # Gets the loss function value and the gradient
813
+
814
+ loss_value = self.loss_function()
520
815
 
521
- # Gets the loss function value and the gradient
816
+ # Gets the gradient from the second position of the
817
+ # call method
522
818
 
523
- loss_value = self.loss_class.evaluate_scalar_function(
524
- self.model_parameters)
819
+ evaluated_gradient = self.loss_class(
820
+ self.model_parameters)[1]
525
821
 
526
- # Gets the gradient from the second position of the call
527
- # method
822
+ # If it is a Keras' optimizer, the gradient must be
823
+ # flattened
528
824
 
529
- evaluated_gradient = self.loss_class(
530
- self.model_parameters)[1]
825
+ else:
826
+
827
+ evaluated_gradient = tf.concat([tf.reshape(tensor,
828
+ [-1]) for tensor in evaluated_gradient], axis=0)
829
+
830
+ # Gets the gradient norm
531
831
 
532
832
  gradient_value = tf.norm(evaluated_gradient).numpy()
533
833
 
@@ -544,11 +844,11 @@ class ModelCustomTraining:
544
844
 
545
845
  break
546
846
 
547
- print("Iteration group "+integer_toString(i, max_digits)
548
- +": loss="+format(loss_value.numpy(), '.5e')+", gradie"+
549
- "nt norm: "+format(gradient_value, '.5e')+",\ngradient"+
550
- " norm divided by the square root of the number of tra"+
551
- "inable parameters: "+format(gradient_value/
847
+ print("\nIteration group "+integer_toString(i,
848
+ max_digits)+": loss="+format(loss_value.numpy(), '.5e')+
849
+ ", gradient norm: "+format(gradient_value, '.5e')+",\n"+
850
+ "gradient norm divided by the square root of the numbe"+
851
+ "r of trainable parameters: "+format(gradient_value/
552
852
  self.number_trainable_parameters, '.5e')+"\nThe maximu"+
553
853
  "m component of the gradient in absolute value is: "+
554
854
  format(gradient_maximum_component, '.5e')+"\nThis cycl"+
@@ -573,8 +873,7 @@ class ModelCustomTraining:
573
873
 
574
874
  # Gets the final loss function
575
875
 
576
- final_loss = self.loss_class.evaluate_scalar_function(
577
- self.model_parameters).numpy()
876
+ final_loss = self.loss_function().numpy()
578
877
 
579
878
  print("\n#################################################"+
580
879
  "#######################\n# Trainin"+
@@ -588,10 +887,13 @@ class ModelCustomTraining:
588
887
 
589
888
  print("Training time: "+str(self.elapsed_time)+" seconds.\n")
590
889
 
591
- # Gets the trained parameters and reassigns them to the model
890
+ # Gets the trained parameters and reassigns them to the model if
891
+ # the model was trained using optimizers from scipy
592
892
 
593
- self.loss_class.model_output_given_parameters.update_model_parameters(
594
- self.model, self.model_parameters)
893
+ if self.use_scipy_optimizer:
894
+
895
+ self.loss_class.model_output_given_parameters.update_model_parameters(
896
+ self.model, self.model_parameters)
595
897
 
596
898
  # Saves the model automatically and returns it as well
597
899
 
@@ -645,7 +947,12 @@ class ModelCustomTraining:
645
947
 
646
948
  for i in range(best_models_rank_size):
647
949
 
648
- models_ranking_dict[i] = np.inf
950
+ models_ranking_dict[i+1] = np.inf
951
+
952
+ # Instantiates the class that prints information
953
+
954
+ print_class = PrintForLoopInfo(["Initializes the realization o"+
955
+ "f number "])
649
956
 
650
957
  # Initializes a variable to store the elapsed time for training
651
958
  # each model at each realization
@@ -657,6 +964,11 @@ class ModelCustomTraining:
657
964
  for i in tqdm(range(n_realizations), desc="Training realizatio"+
658
965
  "ns"):
659
966
 
967
+ # Prints information on terminal that tells that this reali-
968
+ # zatio is being initialized
969
+
970
+ print_class([i+1])
971
+
660
972
  # Reinitializes the model parameters using the same initia-
661
973
  # lizers that were assigned when the model was first created
662
974
 
@@ -703,13 +1015,11 @@ class ModelCustomTraining:
703
1015
  # Iterates through the best ranking models to check if the
704
1016
  # current one outperforms any of them
705
1017
 
706
- for model_number in models_ranking_dict.keys():
1018
+ for model_number, model_loss in models_ranking_dict.items():
707
1019
 
708
1020
  # Gets the model loss and compares it to the loss value
709
1021
  # of the current model
710
1022
 
711
- model_loss = models_ranking_dict[model_number]
712
-
713
1023
  if model_loss>training_loss:
714
1024
 
715
1025
  # Deletes the worst performing model, which is the
@@ -734,8 +1044,8 @@ class ModelCustomTraining:
734
1044
 
735
1045
  # And renames the model file
736
1046
 
737
- path_tools.rename_file(str(j)+"_best_"+
738
- model_base_name+".keras", str(j+1)+"_best_"+
1047
+ path_tools.rename_file(str(j-1)+"_best_"+
1048
+ model_base_name+".keras", str(j)+"_best_"+
739
1049
  model_base_name+".keras", parent_path=
740
1050
  self.parent_path, saving_function=
741
1051
  self.model.save)
@@ -748,7 +1058,7 @@ class ModelCustomTraining:
748
1058
  # Saves this model
749
1059
 
750
1060
  path_tools.rename_file(self.save_model_file, str(
751
- model_number+1)+"_best_"+model_base_name+".keras",
1061
+ model_number)+"_best_"+model_base_name+".keras",
752
1062
  saving_function=self.model.save)
753
1063
 
754
1064
  # Breaks the loop