Davout 0.1.1.dev181__tar.gz → 0.1.1.dev183__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.
- {davout-0.1.1.dev181/source/Davout.egg-info → davout-0.1.1.dev183}/PKG-INFO +1 -1
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/pyproject.toml +1 -1
- davout-0.1.1.dev183/source/Davout/CuboidGmsh/aa_tests/solids/notch_mesh.py +250 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/SVD_framework/dataset_generator.py +62 -13
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/SVD_framework/input_data_filler.py +13 -11
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/SVD_framework/kinematics_surrogate_model.py +64 -30
- davout-0.1.1.dev183/source/Davout/DeepMech/tool_box/gpu_tools.py +21 -0
- davout-0.1.1.dev183/source/Davout/GraphUtilities/aa_tests/linear_transformation_plot.py +165 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/physics_prototypes/compressible_hyperelasticity.py +14 -8
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/physics_prototypes/incompressible_hyperelasticity.py +8 -3
- davout-0.1.1.dev183/source/Davout/MultiMech/aa_tests_and_examples/physics_prototypes/infinitesimal_plasticity.py +239 -0
- davout-0.1.1.dev183/source/Davout/MultiMech/constitutive_models/hyperelasticity/infinitesimal_elasticity.py +146 -0
- davout-0.1.1.dev183/source/Davout/MultiMech/constitutive_models/plasticity/isotropic_infinitesimal_plasticity.py +636 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/boundary_conditions_tools.py +51 -8
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/constitutive_tools.py +42 -14
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/functional_tools.py +293 -22
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/mesh_handling_tools.py +14 -5
- davout-0.1.1.dev183/source/Davout/MultiMech/tool_box/newton_raphson_tools.py +310 -0
- davout-0.1.1.dev183/source/Davout/MultiMech/tool_box/projection_tools.py +652 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/pseudotime_stepping_tools.py +6 -6
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/read_write_tools.py +371 -113
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/surface_loading_tools.py +10 -4
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/variational_tools.py +1 -179
- {davout-0.1.1.dev181 → davout-0.1.1.dev183/source/Davout.egg-info}/PKG-INFO +1 -1
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout.egg-info/SOURCES.txt +8 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/LICENSE +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/README.md +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/setup.cfg +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/setup.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/RVE_artery.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/RVE_matrix_with_fiber.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/non_transfinite/elastin_fiber_creator.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/RVE_artery_transfinite.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/RVE_matrix_with_fiber_transfinite.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/elastin_fiber_creator.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/RVEs/transfinite/spherical_RVE.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/artery/artery_macroscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/artery/artery_macroscale_ellipsoid.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/micropolar_meshes/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/micropolar_meshes/beam_micropolar_case_1.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/artery_parameters.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/fiber_matrix_parameters.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/periodic_meshes/periodic_structure.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/solids/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/solids/intervertebral_disc.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/aa_tests/solids/whole_ensemble_of_geometries.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/solids/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/solids/cuboid_cylinders.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/solids/cuboid_ellipsoids.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/solids/cuboid_generator.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/solids/cuboid_helicoids.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/solids/cuboid_prisms.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/tool_box/geometric_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/tool_box/mesh_data_retriever.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/tool_box/meshing_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/tool_box/region_finder.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/CuboidGmsh/tool_box/verification_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/PINNs/Physics/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/PINNs/Physics/elasticity_equation.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/PINNs/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/SVD_framework/box_with_imposed_displacement_gradient.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/SVD_framework/box_with_young_modulus_field.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/SVD_framework/young_modulus_field_generator.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/heat_equation.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/box_with_imposed_displacement_gradient.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/box_with_young_modulus_field.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/dataset_generator.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/input_data_filler.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/neural_network_trainer.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/mecsol_2026_quotient_space/young_modulus_field_generator.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_ANN_optimization.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_ANN_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_SVD_based_NNs.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_SVD_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_convex_and_partially_convex_input_NNs.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_math_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_quotient_space_NNs.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/aa_tests/tests_tool_box/test_tensor_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/custom_architectures/SVD_quotient_space.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/custom_architectures/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/custom_architectures/convexity_concerned_NNs.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/custom_architectures/gated_quotient_space.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/custom_architectures/generic_feed_forward.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/ANN_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/FEM_surrogate_testing_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/SVD_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/activation_function_utilities.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/custom_activation_functions.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/differentiation_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/loss_assembler_classes.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/loss_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/math_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/numerical_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/parameters_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/tensor_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/DeepMech/tool_box/training_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/REPL_experiments.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/optimization/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/optimization/tests_optimization_methods.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/tests_batching.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/tests_finite_elements.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/tests_loss_function.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/tests_physics.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/unidimensional/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/unidimensional/bar_fea.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/unidimensional/hyperelastic_1D_energies.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/aa_tests/unidimensional/variational_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/assembly/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/assembly/body_forces_work.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/assembly/dirichlet_boundary_conditions_enforcer.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/assembly/hyperelastic_internal_work.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/assembly/surface_forces_work.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/constitutive_models/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/constitutive_models/hyperelastic_isotropic_models.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/finite_elements/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/finite_elements/elements_manager.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/finite_elements/finite_element_dispatcher.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/finite_elements/surface_elements/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/finite_elements/surface_elements/triangles.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/finite_elements/volume_elements/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/finite_elements/volume_elements/tetrahedrons.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/optimization/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/optimization/conditioning_matrices.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/optimization/loss_functions.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/optimization/neural_network_assembler.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/optimization/objective_function.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/physics/compressible_cauchy_hyperelasticy.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/constitutive_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/dirichlet_loading_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/math_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/mesh_info_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/mesh_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/neumann_loading_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/node_ordering.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/optimization_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/parametric_curves_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/sensitivity_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/FENN/tool_box/tensorflow_utilities.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/cauchy_tetrahedron.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/continuum_mechanics_potato_collage.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/fake_book_spines.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/null_space_architecture.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/positive_orthant_modulating_function.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/strain_tensors.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/tests_collage_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/tests_delaunay.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/tests_paraview_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/aa_tests/tests_plotting_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/collage_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/paraview_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/plotting_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/arrows_lines_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/box_and_markers_classes.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/box_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/collage_classes.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/curves_setter.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/image_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/interactivity_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/paraview_scripts.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/perspective_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/GraphUtilities/tool_box/text_excerpt_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/LaTeXUtilities.sty +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/aa_tests/latex_parser_tests.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/latex_parser.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/tool_box/command_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/tool_box/parsing_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/LaTeXUtilities/tool_box/sty_file_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/heat_transfer/heat_box.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/beam_with_fibers.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/box_with_young_modulus_field.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_HGO.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_neo_hookean.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/disc_neo_hookean_incompressible.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/hyperelastic_box.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/incompressible_hyperelastic_box.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/cylindrical_coordinates_material_property.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/disc_HGO.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/intervertebral_disc/local_coordinate_system_generation.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/parallel_hyperelastic_box.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/parallel_incompressible_box.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/read_dofs_in_volume.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/hyperelasticity/young_modulus_field.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/bending_case/beam_with_fibers_macroscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/bending_case/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/deformation_laboratory/microscale_deformation_lab.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/disc_micropolar_neo_hookean.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean_pure_dolfin.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Bauer_et_al/beam_neo_hookean_pure_dolfin_old.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/Suh_et_al/suh_implementation.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/micropolar_with_homogenization.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/micropolar_with_homogenization_original.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/tools_homogenization.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/old_tests/tools_io.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/stress_plots.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/numerical_differentiation.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/numerical_differentiation_second_elasticity_tensor.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/tangent_operators/tangent_operator_plotter.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/torsion_case/beam_with_fibers_macroscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/torsion_case/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/traction_case/beam_with_fibers_macroscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/micropolar/traction_case/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/curve_fitting.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/cylindrical_coordinates_field.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/cylindrical_coordinates_material_property.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/elasticity_tensor.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/incompressible.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/linear_expression_test.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/petsc_2D.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_periodic.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_periodic_class.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/test_shifted_field.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/teste_afim.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/minimal_working_examples_forum/working_example_dictionaries.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/multiscale/hyperelasticity/beam_with_fibers_microscale.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/test_meshes/beam_gmsh.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/test_meshes_paths.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/aa_tests_and_examples/various_physics_tests.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/constitutive_models/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/constitutive_models/heat_transfer/isotropic_heat_conduction.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/constitutive_models/hyperelasticity/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/constitutive_models/hyperelasticity/anisotropic_hyperelasticity.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/constitutive_models/hyperelasticity/isotropic_hyperelasticity.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/constitutive_models/hyperelasticity/micropolar_hyperelasticity.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/multiscale/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/multiscale_classes.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/multiscale/multiscale_boundary_conditions/multiscale_expressions.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/multiscale/multiscale_hyperelasticity.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/multiscale/multiscale_micropolar.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/physics/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/physics/hyperelastic_cauchy_continuum.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/physics/hyperelastic_incompressible_cauchy_continuum.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/physics/hyperelastic_micropolar_continuum.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/physics/steady_state_heat_transfer.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/post_processes/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/post_processes/post_processes_classes.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/post_processes/post_processes_functions.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/binary_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/body_forces_loading_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/dirichlet_load_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/expressions_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/homogenization_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/multiscale_boundary_conditions_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/numerical_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/parallelization_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/post_processing_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/tensor_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/MultiMech/tool_box/weak_boundary_conditions_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/aa_tests/tests_template.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/aa_tests/txt_tests.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/coordinate_systems_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/dictionary_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/error_and_type_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/file_handling_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/fonts/CMU_Serif_Roman.ttf +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/function_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/interpolation_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/math_experiments.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/numpy_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/package_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/path_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/programming_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/recursion_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/string_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/tensor_and_math_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/testing_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/PythonicUtilities/user_interaction_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/aa_tests/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/aa_tests/test_delaunay_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/domain_decomposition/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/tool_box/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/tool_box/delaunay_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/tool_box/sampling_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/StochasticUtilities/tool_box/statistics_tools.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout/__init__.py +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout.egg-info/dependency_links.txt +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout.egg-info/requires.txt +0 -0
- {davout-0.1.1.dev181 → davout-0.1.1.dev183}/source/Davout.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Routine to generate an interchangeble mesh both for thrird medium
|
|
2
|
+
# contact and for notch-based crack propagation.
|
|
3
|
+
#
|
|
4
|
+
# Mesh made by Bianca Grahl Reyes
|
|
5
|
+
|
|
6
|
+
import h5py
|
|
7
|
+
|
|
8
|
+
import numpy as np
|
|
9
|
+
|
|
10
|
+
from .....Davout.CuboidGmsh.solids import cuboid_prisms as prisms
|
|
11
|
+
|
|
12
|
+
from .....Davout.CuboidGmsh.tool_box import meshing_tools as tools
|
|
13
|
+
|
|
14
|
+
from .....Davout.PythonicUtilities.path_tools import get_parent_path_of_file
|
|
15
|
+
|
|
16
|
+
# Defines a function to generate the mesh from a set of geometrical pa-
|
|
17
|
+
# rametres. L is the length of the box, W is the width of the box, H is
|
|
18
|
+
# the height of the box, theta is the notch opening angle, and
|
|
19
|
+
# half_W_notch is the notch width.
|
|
20
|
+
|
|
21
|
+
def generate_mesh(L, W, H, theta, half_W_notch, L_notch, transfinite_x,
|
|
22
|
+
transfinite_y, transfinite_z, transfinite_radial, mesh_file_name,
|
|
23
|
+
bias_x, bias_y, bias_z, bias_radial, include_drittes_medium=True,
|
|
24
|
+
verbose=True):
|
|
25
|
+
|
|
26
|
+
# Verifies whether the notch opening angle of the notch is between 0
|
|
27
|
+
# and 90 degrees
|
|
28
|
+
|
|
29
|
+
if theta<0.0 or theta>90.0:
|
|
30
|
+
|
|
31
|
+
raise ValueError("The notch opening angle should be between 0 "+
|
|
32
|
+
"and 90 degrees. Currently, 'theta' is "+str(theta))
|
|
33
|
+
|
|
34
|
+
# Converts the theta angle to radians
|
|
35
|
+
|
|
36
|
+
theta = theta*(np.pi/180.0)
|
|
37
|
+
|
|
38
|
+
# Verifies whether the notch width is confined within the box width
|
|
39
|
+
|
|
40
|
+
if (2*half_W_notch*np.sin(theta))>=W:
|
|
41
|
+
|
|
42
|
+
raise ValueError("The notch width, 'half_W_notch', and the not"+
|
|
43
|
+
"ch opening angle, 'theta', should be such that 2*half_W_notch"+
|
|
44
|
+
"*sin(theta) < W. So that the notch fits into the width of the"+
|
|
45
|
+
" box")
|
|
46
|
+
|
|
47
|
+
# Verifies whether the notch length is confined within the box length
|
|
48
|
+
|
|
49
|
+
# Defines the surfaces and volumes regions names for imposition of
|
|
50
|
+
# boundary conditions and integration of constitutive models
|
|
51
|
+
|
|
52
|
+
surfaces_regions_names = ["top", "front_solid", "front_third", "back", "bottom"]
|
|
53
|
+
|
|
54
|
+
volumes_regions_names = ["third medium", "solid"]
|
|
55
|
+
|
|
56
|
+
# Initializes the mesh
|
|
57
|
+
|
|
58
|
+
geometric_data = tools.gmsh_initialization(surface_regionsNames=
|
|
59
|
+
surfaces_regions_names, volume_regionsNames=volumes_regions_names)
|
|
60
|
+
|
|
61
|
+
# Creates the upper half of the notch (filled with third medium)
|
|
62
|
+
|
|
63
|
+
# Sets the corner points
|
|
64
|
+
|
|
65
|
+
corner_points = np.array([[L-L_notch, 0.5*W, 0.0], [L, 0.5*W, 0.0],
|
|
66
|
+
[L, (0.5*W)+(half_W_notch*np.sin(theta)), 0.0], [L-L_notch+(
|
|
67
|
+
half_W_notch*np.cos(theta)), (0.5*W)+(half_W_notch*np.sin(theta)),
|
|
68
|
+
0.0],
|
|
69
|
+
[L-L_notch, 0.5*W, H], [L, 0.5*W, H],
|
|
70
|
+
[L, (0.5*W)+(half_W_notch*np.sin(theta)), H], [L-L_notch+(
|
|
71
|
+
half_W_notch*np.cos(theta)), (0.5*W)+(half_W_notch*np.sin(theta)),
|
|
72
|
+
H]])
|
|
73
|
+
|
|
74
|
+
# Generates this cuboid
|
|
75
|
+
|
|
76
|
+
if include_drittes_medium:
|
|
77
|
+
|
|
78
|
+
geometric_data = prisms.hexahedron_from_corners(corner_points,
|
|
79
|
+
transfinite_directions = [transfinite_y, transfinite_x,
|
|
80
|
+
transfinite_z], geometric_data=geometric_data,
|
|
81
|
+
explicit_volume_physical_group_name = "third medium",
|
|
82
|
+
explicit_surface_physical_group_name = {3: "front_third"},
|
|
83
|
+
bias_directions = {"x": bias_y, "y": bias_x, "z": bias_z})
|
|
84
|
+
|
|
85
|
+
# Creates the upper section of the solid
|
|
86
|
+
|
|
87
|
+
# Sets the corner points
|
|
88
|
+
|
|
89
|
+
corner_points = np.array([[L-L_notch+(half_W_notch*np.cos(theta)),
|
|
90
|
+
(0.5*W)+(half_W_notch*np.sin(theta)), 0.0],
|
|
91
|
+
[L, (0.5*W)+(half_W_notch*np.sin(theta)), 0.0],
|
|
92
|
+
[L, W, 0.0], [0.0, W, 0.0],
|
|
93
|
+
[L-L_notch+(half_W_notch*np.cos(theta)),
|
|
94
|
+
(0.5*W)+(half_W_notch*np.sin(theta)), H],
|
|
95
|
+
[L, (0.5*W)+(half_W_notch*np.sin(theta)), H],
|
|
96
|
+
[L, W, H], [0.0, W, H]])
|
|
97
|
+
|
|
98
|
+
# Generates this cuboid
|
|
99
|
+
|
|
100
|
+
geometric_data = prisms.hexahedron_from_corners(corner_points,
|
|
101
|
+
transfinite_directions = [transfinite_radial, transfinite_x,
|
|
102
|
+
transfinite_z], geometric_data=geometric_data,
|
|
103
|
+
explicit_volume_physical_group_name = "solid",
|
|
104
|
+
explicit_surface_physical_group_name = {3: "front_solid", 4: "top"},
|
|
105
|
+
bias_directions = {"x": bias_radial, "y": bias_x, "z": bias_z})
|
|
106
|
+
|
|
107
|
+
# Creates the upper section of the back of the solid
|
|
108
|
+
|
|
109
|
+
# Sets the corner points
|
|
110
|
+
|
|
111
|
+
corner_points = np.array([[0.0, 0.5*W, 0.0], [L-L_notch, 0.5*W, 0.0],
|
|
112
|
+
[L-L_notch+(half_W_notch*np.cos(theta)), (0.5*W)+(half_W_notch*
|
|
113
|
+
np.sin(theta)), 0.0], [0.0, W, 0.0],
|
|
114
|
+
[0.0, 0.5*W, H], [L-L_notch, 0.5*W, H],
|
|
115
|
+
[L-L_notch+(half_W_notch*np.cos(theta)), (0.5*W)+(half_W_notch*
|
|
116
|
+
np.sin(theta)), H], [0.0, W, H]])
|
|
117
|
+
|
|
118
|
+
# Generates this cuboid
|
|
119
|
+
|
|
120
|
+
geometric_data = prisms.hexahedron_from_corners(corner_points,
|
|
121
|
+
transfinite_directions = [transfinite_y, transfinite_x,
|
|
122
|
+
transfinite_z], geometric_data=geometric_data,
|
|
123
|
+
explicit_volume_physical_group_name = "solid",
|
|
124
|
+
explicit_surface_physical_group_name = {5: "back"},
|
|
125
|
+
bias_directions = {"x": bias_y, "y": bias_radial, "z": bias_z})
|
|
126
|
+
|
|
127
|
+
# Creates the botton section of the back of the solid (6)
|
|
128
|
+
|
|
129
|
+
# Sets the corner points
|
|
130
|
+
|
|
131
|
+
corner_points = np.array([[0.0, 0.0, 0.0], [(L-L_notch)+(
|
|
132
|
+
half_W_notch*np.cos(theta)), 0.5*W-(half_W_notch*np.sin(theta)), 0.0],
|
|
133
|
+
[L-L_notch, 0.5*W, 0.0], [0.0, 0.5*W, 0.0],
|
|
134
|
+
[0.0, 0.0, H], [(L-L_notch)+(half_W_notch*np.cos(theta)),
|
|
135
|
+
0.5*W-(half_W_notch*np.sin(theta)), H],
|
|
136
|
+
[L-L_notch, 0.5*W, H], [0.0, 0.5*W, H]])
|
|
137
|
+
|
|
138
|
+
# Generates this cuboid
|
|
139
|
+
|
|
140
|
+
geometric_data = prisms.hexahedron_from_corners(corner_points,
|
|
141
|
+
transfinite_directions = [transfinite_y, transfinite_radial,
|
|
142
|
+
transfinite_z], geometric_data=geometric_data,
|
|
143
|
+
explicit_volume_physical_group_name = "solid",
|
|
144
|
+
explicit_surface_physical_group_name = {5: "back"},
|
|
145
|
+
bias_directions = {"x": -bias_y, "y": bias_radial, "z": bias_z})
|
|
146
|
+
|
|
147
|
+
# Creates the botton part of the third medium (2)
|
|
148
|
+
|
|
149
|
+
# Sets the corner points
|
|
150
|
+
|
|
151
|
+
corner_points = np.array([[(L-L_notch)+(half_W_notch*np.cos(theta)),
|
|
152
|
+
0.5*W-(half_W_notch*np.sin(theta)), 0.0], [L, 0.5*W-(half_W_notch*
|
|
153
|
+
np.sin(theta)), 0.0], [L, 0.5*W, 0.0], [L-L_notch, 0.5*W, 0.0],
|
|
154
|
+
[(L-L_notch)+(half_W_notch*np.cos(theta)), 0.5*W-(half_W_notch*
|
|
155
|
+
np.sin(theta)), H], [L, 0.5*W-(half_W_notch*np.sin(theta)), H],
|
|
156
|
+
[L, 0.5*W, H], [L-L_notch, 0.5*W, H]])
|
|
157
|
+
|
|
158
|
+
# Generates this cuboid
|
|
159
|
+
|
|
160
|
+
if include_drittes_medium:
|
|
161
|
+
|
|
162
|
+
geometric_data = prisms.hexahedron_from_corners(corner_points,
|
|
163
|
+
transfinite_directions = [transfinite_y, transfinite_x,
|
|
164
|
+
transfinite_z], geometric_data=geometric_data,
|
|
165
|
+
explicit_volume_physical_group_name = "third medium",
|
|
166
|
+
explicit_surface_physical_group_name = {3: "front_third"},
|
|
167
|
+
bias_directions = {"x": -bias_y, "y": bias_x, "z": bias_z})
|
|
168
|
+
|
|
169
|
+
# Creates the botton part of the solid (4)
|
|
170
|
+
|
|
171
|
+
# Sets the corner points
|
|
172
|
+
|
|
173
|
+
corner_points = np.array([[0.0, 0.0, 0.0], [L, 0.0, 0.0],
|
|
174
|
+
[L, (0.5*W)-(half_W_notch*np.sin(theta)), 0.0], [L-L_notch+(
|
|
175
|
+
half_W_notch*np.cos(theta)), (0.5*W)-(half_W_notch*np.sin(theta)), 0.0],
|
|
176
|
+
[0.0, 0.0, H], [L, 0.0, H], [L, (0.5*W)-(half_W_notch*np.sin(theta)),
|
|
177
|
+
H], [L-L_notch+(half_W_notch*np.cos(theta)), (0.5*W)-(half_W_notch*
|
|
178
|
+
np.sin(theta)), H]])
|
|
179
|
+
|
|
180
|
+
# Generates this cuboid
|
|
181
|
+
|
|
182
|
+
geometric_data = prisms.hexahedron_from_corners(corner_points,
|
|
183
|
+
transfinite_directions = [transfinite_y, transfinite_x,
|
|
184
|
+
transfinite_z], geometric_data=geometric_data,
|
|
185
|
+
explicit_volume_physical_group_name = "solid",
|
|
186
|
+
explicit_surface_physical_group_name = {3: "front_solid", 2: "bottom"},
|
|
187
|
+
bias_directions = {"x": -bias_radial, "y": bias_x, "z": bias_z})
|
|
188
|
+
|
|
189
|
+
####################################################################
|
|
190
|
+
# Mesh generation #
|
|
191
|
+
####################################################################
|
|
192
|
+
|
|
193
|
+
tools.gmsh_finalize(geometric_data=geometric_data, file_name=
|
|
194
|
+
mesh_file_name, file_directory="", verbose=verbose)
|
|
195
|
+
|
|
196
|
+
# Testing block
|
|
197
|
+
|
|
198
|
+
if __name__ == "__main__":
|
|
199
|
+
|
|
200
|
+
# Example parameters for the mesh generation
|
|
201
|
+
|
|
202
|
+
L = 10.0
|
|
203
|
+
|
|
204
|
+
W = 5.0
|
|
205
|
+
|
|
206
|
+
H = 3.0
|
|
207
|
+
|
|
208
|
+
theta = 30.0
|
|
209
|
+
|
|
210
|
+
half_W_notch = 1.0
|
|
211
|
+
|
|
212
|
+
L_notch = 8.0
|
|
213
|
+
|
|
214
|
+
# Sets the number of elements of each direction
|
|
215
|
+
|
|
216
|
+
transfinite_x = 10
|
|
217
|
+
|
|
218
|
+
transfinite_y = 4
|
|
219
|
+
|
|
220
|
+
transfinite_z = 5
|
|
221
|
+
|
|
222
|
+
transfinite_radial = 5
|
|
223
|
+
|
|
224
|
+
# Sets the bias factors. When the bias is 1.0, nothing happens and
|
|
225
|
+
# the finite elements are uniformly distributed
|
|
226
|
+
|
|
227
|
+
bias_x = 1.1
|
|
228
|
+
|
|
229
|
+
bias_y = 1.2
|
|
230
|
+
|
|
231
|
+
bias_z = 1.0
|
|
232
|
+
|
|
233
|
+
bias_radial = -1.5
|
|
234
|
+
|
|
235
|
+
# Defines the name of the mesh and appends the whole path to it.
|
|
236
|
+
# Uses a function from Davout to automatically retrieve the path to
|
|
237
|
+
# this file (notch_mesh.py)
|
|
238
|
+
|
|
239
|
+
mesh_file_name = get_parent_path_of_file()+"//notch_mesh"
|
|
240
|
+
|
|
241
|
+
# Sets a flag to add or not the mesh of the third medium
|
|
242
|
+
|
|
243
|
+
include_drittes_medium = True
|
|
244
|
+
|
|
245
|
+
# Calls the mesh generation function
|
|
246
|
+
|
|
247
|
+
generate_mesh(L, W, H, theta, half_W_notch, L_notch, transfinite_x,
|
|
248
|
+
transfinite_y, transfinite_z, transfinite_radial, mesh_file_name,
|
|
249
|
+
bias_x, bias_y, bias_z, bias_radial, include_drittes_medium=
|
|
250
|
+
include_drittes_medium)
|
|
@@ -14,6 +14,8 @@ from .....Davout.DeepMech.aa_tests.mecsol_2026_quotient_space.box_with_imposed_d
|
|
|
14
14
|
|
|
15
15
|
from .....Davout.DeepMech.aa_tests.mecsol_2026_quotient_space.young_modulus_field_generator import generate_field
|
|
16
16
|
|
|
17
|
+
from input_data_filler import fill_load_steps
|
|
18
|
+
|
|
17
19
|
import numpy as np
|
|
18
20
|
|
|
19
21
|
import traceback
|
|
@@ -26,7 +28,8 @@ def generate_dataset(n_samples, limits_list, p_norm_list, results_path,
|
|
|
26
28
|
displacement_file_name, young_modulus_file, mesh_file_name, cube_size,
|
|
27
29
|
influence_radius, damping_factor, radius_power, mesh_data_class,
|
|
28
30
|
lagrange_multiplier_file_name, strain_energy_file_name,
|
|
29
|
-
|
|
31
|
+
displacement_matrix_file_name, strain_energy_matrix_file_name,
|
|
32
|
+
input_matrix_file_name, save_snapshot_displacement=False):
|
|
30
33
|
|
|
31
34
|
# Initializes the list of samples
|
|
32
35
|
|
|
@@ -193,14 +196,14 @@ save_snapshot_displacement=False):
|
|
|
193
196
|
|
|
194
197
|
# Saves the lists into binary and txt files
|
|
195
198
|
|
|
196
|
-
np.save(results_path+"//
|
|
197
|
-
|
|
199
|
+
np.save(results_path+"//"+displacement_matrix_file_name,
|
|
200
|
+
np.array(succesful_displacement))
|
|
198
201
|
|
|
199
|
-
np.save(results_path+"//
|
|
200
|
-
|
|
202
|
+
np.save(results_path+"//"+strain_energy_matrix_file_name,
|
|
203
|
+
np.array(succesful_strain_energy))
|
|
201
204
|
|
|
202
|
-
np.save(results_path+"//
|
|
203
|
-
|
|
205
|
+
np.save(results_path+"//"+input_matrix_file_name, np.array(
|
|
206
|
+
succesful_data))
|
|
204
207
|
|
|
205
208
|
list_toTxt(completed_simulations, "00_completed_simulations",
|
|
206
209
|
parent_path=results_path)
|
|
@@ -372,6 +375,31 @@ if __name__=="__main__":
|
|
|
372
375
|
|
|
373
376
|
mesh_file_name = "box_mesh_mecsol"
|
|
374
377
|
|
|
378
|
+
# Sets the file name of the data matrices
|
|
379
|
+
|
|
380
|
+
displacement_matrix_file_name = ("00_successful_displacement_matri"+
|
|
381
|
+
"x.npy")
|
|
382
|
+
|
|
383
|
+
strain_energy_matrix_file_name = ("00_successful_strain_energy_mat"+
|
|
384
|
+
"rix.npy")
|
|
385
|
+
|
|
386
|
+
input_matrix_file_name = "00_successful_data_matrix.npy"
|
|
387
|
+
|
|
388
|
+
# Sets the file names of the completed (filled-in with load-steps)
|
|
389
|
+
# data matrices and the filtered counterpart
|
|
390
|
+
|
|
391
|
+
complete_data_matrix_file_name = ("00_successful_complete_data_mat"+
|
|
392
|
+
"rix.npy")
|
|
393
|
+
|
|
394
|
+
complete_and_filtered_data_matrix_file_name = ("00_successful_comp"+
|
|
395
|
+
"lete_and_filtered_data_matrix.npy")
|
|
396
|
+
|
|
397
|
+
# Sets the initial and final time points for the simulation
|
|
398
|
+
|
|
399
|
+
initial_time = 0.2
|
|
400
|
+
|
|
401
|
+
final_time = 1.0
|
|
402
|
+
|
|
375
403
|
# Constructs the mesh
|
|
376
404
|
|
|
377
405
|
mesh_data_class = read_mshMesh({"length x": cube_size, "length y":
|
|
@@ -382,10 +410,31 @@ if __name__=="__main__":
|
|
|
382
410
|
"bias x": ["Bump", bias_factor], "bias y": ["Bump", bias_factor],
|
|
383
411
|
"bias z": ["Bump", bias_factor]})
|
|
384
412
|
|
|
385
|
-
#
|
|
413
|
+
# Defines a flag fo generating the dataset and another flag for ge-
|
|
414
|
+
# nerating the dataset with the intermediate load steps and its fil-
|
|
415
|
+
# tered version as well
|
|
416
|
+
|
|
417
|
+
flag_generate_dataset = False
|
|
418
|
+
|
|
419
|
+
flag_fill_in_load_steps = True
|
|
420
|
+
|
|
421
|
+
# Generates the dataset from skretch
|
|
422
|
+
|
|
423
|
+
if flag_generate_dataset:
|
|
424
|
+
|
|
425
|
+
generate_dataset(n_samples, limits_list, p_norm_list,
|
|
426
|
+
results_path, displacement_file_name, young_modulus_file,
|
|
427
|
+
mesh_file_name, cube_size, influence_radius, damping_factor,
|
|
428
|
+
radius_power, mesh_data_class, lagrange_multiplier_file_name,
|
|
429
|
+
strain_energy_file_name, displacement_matrix_file_name,
|
|
430
|
+
strain_energy_matrix_file_name, input_matrix_file_name,
|
|
431
|
+
save_snapshot_displacement=False)
|
|
432
|
+
|
|
433
|
+
# Fills the load-steps and generates the filtered dataset from it
|
|
434
|
+
|
|
435
|
+
if flag_fill_in_load_steps:
|
|
386
436
|
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
save_snapshot_displacement=False)
|
|
437
|
+
fill_load_steps(input_matrix_file_name,
|
|
438
|
+
displacement_matrix_file_name, complete_data_matrix_file_name,
|
|
439
|
+
complete_and_filtered_data_matrix_file_name, results_path,
|
|
440
|
+
initial_time, final_time)
|
|
@@ -60,10 +60,10 @@ final_time):
|
|
|
60
60
|
|
|
61
61
|
# Recovers the displacement gradient
|
|
62
62
|
|
|
63
|
-
displacement_gradient = np.array([[sample_data[
|
|
64
|
-
sample_data[
|
|
65
|
-
sample_data[
|
|
66
|
-
sample_data[
|
|
63
|
+
displacement_gradient = np.array([[sample_data[0],
|
|
64
|
+
sample_data[1], sample_data[2]], [sample_data[3],
|
|
65
|
+
sample_data[4], sample_data[5]], [sample_data[6],
|
|
66
|
+
sample_data[7], sample_data[8]]])
|
|
67
67
|
|
|
68
68
|
# Gets the corresponding deformation gradient
|
|
69
69
|
|
|
@@ -118,7 +118,7 @@ final_time):
|
|
|
118
118
|
new_disp_grad[0,1], new_disp_grad[0,2], new_disp_grad[
|
|
119
119
|
1,0], new_disp_grad[1,1], new_disp_grad[1,2],
|
|
120
120
|
new_disp_grad[2,0], new_disp_grad[2,1], new_disp_grad[
|
|
121
|
-
2,2], sample_data[
|
|
121
|
+
2,2], sample_data[9], sample_data[10]])
|
|
122
122
|
|
|
123
123
|
# Adds this sample to the filtered input data. Inserts
|
|
124
124
|
# the load-based data as the first columns, since this
|
|
@@ -137,18 +137,20 @@ final_time):
|
|
|
137
137
|
new_input_list = np.array(new_input_list)
|
|
138
138
|
|
|
139
139
|
print("The new input data matrix has shape "+str(
|
|
140
|
-
new_input_list.shape)+", whereas it had "+str(
|
|
141
|
-
|
|
142
|
-
" has "+str(displacement_matrix.shape
|
|
140
|
+
new_input_list.shape)+", whereas it had the shape "+str(
|
|
141
|
+
input_data.shape)+" before.\nThe displacement matrix, on the o"+
|
|
142
|
+
"ther hand, has shape equal to "+str(displacement_matrix.shape)+
|
|
143
|
+
"\n")
|
|
143
144
|
|
|
144
145
|
np.save(results_path+"//"+new_input_file, new_input_list)
|
|
145
146
|
|
|
146
147
|
new_filtered_input_list = np.array(new_filtered_input_list)
|
|
147
148
|
|
|
148
149
|
print("The new filtered input data matrix has shape "+str(
|
|
149
|
-
new_filtered_input_list.shape)+", whereas it had "+str(
|
|
150
|
-
input_data.shape
|
|
151
|
-
"
|
|
150
|
+
new_filtered_input_list.shape)+", whereas it had the shape "+str(
|
|
151
|
+
input_data.shape)+" before.\nThe displacement matrix, on th"+
|
|
152
|
+
"e other hand, has shape equal to "+str(displacement_matrix.shape
|
|
153
|
+
)+"\n")
|
|
152
154
|
|
|
153
155
|
np.save(results_path+"//"+new_filtered_input_file,
|
|
154
156
|
new_filtered_input_list)
|
|
@@ -5,6 +5,10 @@ import numpy as np
|
|
|
5
5
|
|
|
6
6
|
import tensorflow as tf
|
|
7
7
|
|
|
8
|
+
from .....Davout.DeepMech.tool_box.gpu_tools import give_access_of_gpu_to_tensorflow
|
|
9
|
+
|
|
10
|
+
give_access_of_gpu_to_tensorflow(True)
|
|
11
|
+
|
|
8
12
|
from time import time
|
|
9
13
|
|
|
10
14
|
from .....Davout.DeepMech.tool_box import ANN_tools, training_tools
|
|
@@ -28,8 +32,7 @@ class RVEKinematicsSurrogateModel:
|
|
|
28
32
|
maximum_training_iterations, verbose_delta_iterations,
|
|
29
33
|
mesh_file_name, optimizer, subdofs_to_learn, parameters_dtype="flo"+
|
|
30
34
|
"at32", householder_epsilon=1.0, verbose=True, integer_dtype="int3"+
|
|
31
|
-
"2",
|
|
32
|
-
non_orthogonal_matrices=False, device_type="CPU",
|
|
35
|
+
"2", non_orthogonal_matrices=False, device_type="CPU",
|
|
33
36
|
input_data_regularization_method=None):
|
|
34
37
|
|
|
35
38
|
# Saves the needed information
|
|
@@ -38,9 +41,6 @@ class RVEKinematicsSurrogateModel:
|
|
|
38
41
|
|
|
39
42
|
self.device_type = device_type
|
|
40
43
|
|
|
41
|
-
self.get_all_inputs_to_zeroth_order_of_magnitude = (
|
|
42
|
-
get_all_inputs_to_zeroth_order_of_magnitude)
|
|
43
|
-
|
|
44
44
|
self.activations_list_main_network = activations_list_main_network
|
|
45
45
|
|
|
46
46
|
self.activations_list_auxiliar_network = (
|
|
@@ -89,7 +89,7 @@ class RVEKinematicsSurrogateModel:
|
|
|
89
89
|
# Converts the tensor of DOFs to a tensorflow integer tensor
|
|
90
90
|
|
|
91
91
|
self.subdofs_to_learn = tf.convert_to_tensor(subdofs_to_learn,
|
|
92
|
-
dtype=tf.as_dtype(self.
|
|
92
|
+
dtype=tf.as_dtype(self.integer_dtype))
|
|
93
93
|
|
|
94
94
|
# Gets the number of output neurons from the tensor of the indi-
|
|
95
95
|
# ces of the DOFs that will actually be learnt
|
|
@@ -98,13 +98,31 @@ class RVEKinematicsSurrogateModel:
|
|
|
98
98
|
|
|
99
99
|
# Reads the output data
|
|
100
100
|
|
|
101
|
-
self.
|
|
101
|
+
self.whole_output_data = np.load(self.results_path+"//"+
|
|
102
102
|
self.displacement_data_file)
|
|
103
103
|
|
|
104
104
|
# Gets the numbers of samples and of total of DOFs
|
|
105
105
|
|
|
106
106
|
self.number_of_samples, self.total_number_of_dofs = (
|
|
107
|
-
self.
|
|
107
|
+
self.whole_output_data.shape)
|
|
108
|
+
|
|
109
|
+
# Checks whether subdofs to learn has any DOF index that is lar-
|
|
110
|
+
# ger than the number of DOFs of the output data
|
|
111
|
+
|
|
112
|
+
if tf.reduce_max(self.subdofs_to_learn).numpy(
|
|
113
|
+
)>=self.total_number_of_dofs:
|
|
114
|
+
|
|
115
|
+
raise IndexError("The maximum DOF index requested by 'subd"+
|
|
116
|
+
"ofs_to_learn' is "+str(tf.reduce_max(self.subdofs_to_learn
|
|
117
|
+
).numpy())+". But the output data at\n"+str(
|
|
118
|
+
self.results_path+"//"+self.displacement_data_file)+"\nhas"+
|
|
119
|
+
" only "+str(self.total_number_of_dofs)+" columns")
|
|
120
|
+
|
|
121
|
+
# Otherwise, uses the subdofs to learn to retrieve the needed
|
|
122
|
+
# DOFs for training
|
|
123
|
+
|
|
124
|
+
self.output_data = self.whole_output_data[:,
|
|
125
|
+
self.subdofs_to_learn]
|
|
108
126
|
|
|
109
127
|
# Gets the input data
|
|
110
128
|
|
|
@@ -343,9 +361,26 @@ class RVEKinematicsSurrogateModel:
|
|
|
343
361
|
|
|
344
362
|
if __name__=="__main__":
|
|
345
363
|
|
|
364
|
+
# Sets the number of transfinite divisions in the RVE mesh
|
|
365
|
+
|
|
366
|
+
n_divisions = 10
|
|
367
|
+
|
|
368
|
+
# Sets component to be learnt
|
|
369
|
+
|
|
370
|
+
component_to_be_learnt = "Y"
|
|
371
|
+
|
|
372
|
+
# Sets a dictionary for the number of DOFs in the mesh for each num-
|
|
373
|
+
# ber of divisions
|
|
374
|
+
|
|
375
|
+
dofs_per_number_of_divisions = {6: 3993, 8: 10125, 10: 20577}
|
|
376
|
+
|
|
346
377
|
# Defines the array with the DOFs to be learnt
|
|
347
378
|
|
|
348
|
-
|
|
379
|
+
components_dictionary = {"X": 0, "Y": 1, "Z": 2}
|
|
380
|
+
|
|
381
|
+
subdofs_to_learn = np.arange(components_dictionary[
|
|
382
|
+
component_to_be_learnt], dofs_per_number_of_divisions[n_divisions],
|
|
383
|
+
3)
|
|
349
384
|
|
|
350
385
|
# Defines the number of input neurons of the main network. Remember
|
|
351
386
|
# that the data matrix is a tensor [n_samples, n_input_variables].
|
|
@@ -358,7 +393,7 @@ if __name__=="__main__":
|
|
|
358
393
|
# Defines the number of neurons of the different hidden layers and of
|
|
359
394
|
# the output layer
|
|
360
395
|
|
|
361
|
-
n_neurons_per_layer = [100, 1000,
|
|
396
|
+
n_neurons_per_layer = [100, 1000, subdofs_to_learn.shape[0]]
|
|
362
397
|
|
|
363
398
|
# Sets a list of layers and the activation functions
|
|
364
399
|
|
|
@@ -366,11 +401,12 @@ if __name__=="__main__":
|
|
|
366
401
|
n_neurons_per_layer[0]}}, {"elu": {"number of neurons":
|
|
367
402
|
n_neurons_per_layer[1]}}, {"linear": n_neurons_per_layer[2]}]
|
|
368
403
|
|
|
369
|
-
activations_list_auxiliar_network = [{"quadratic": {"number"+
|
|
370
|
-
"
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
404
|
+
activations_list_auxiliar_network = [{"quadratic": {"number of neu"+
|
|
405
|
+
"rons": min(quotient_space_dimension, n_neurons_per_layer[0]), "a2":
|
|
406
|
+
1.0}},
|
|
407
|
+
{"quadratic": {"number of neurons": min(n_neurons_per_layer[0],
|
|
408
|
+
n_neurons_per_layer[1]), "a2": 1.0}},
|
|
409
|
+
{"quadratic": {"number of neurons": min(n_neurons_per_layer[1],
|
|
374
410
|
n_neurons_per_layer[2])}}]
|
|
375
411
|
|
|
376
412
|
# Sets the modulating function for the weights matrices
|
|
@@ -387,21 +423,25 @@ if __name__=="__main__":
|
|
|
387
423
|
|
|
388
424
|
verbose_delta_iterations = 50
|
|
389
425
|
|
|
390
|
-
n_monte_carlo_realizations =
|
|
426
|
+
n_monte_carlo_realizations = 1000
|
|
391
427
|
|
|
392
|
-
n_best_models =
|
|
428
|
+
n_best_models = 30
|
|
393
429
|
|
|
394
|
-
n_best_samples =
|
|
430
|
+
n_best_samples = 20
|
|
395
431
|
|
|
396
432
|
loss_metric = "MeanSquaredError"
|
|
397
433
|
|
|
434
|
+
loss_metric = {"name": "LpNormError", "p": 12, "use_stable_impleme"+
|
|
435
|
+
"ntation": True}
|
|
436
|
+
|
|
398
437
|
parameters_dtype = "float32"
|
|
399
438
|
|
|
400
|
-
saved_model_file = "
|
|
439
|
+
saved_model_file = "RVE_kinematics_model_"+str(component_to_be_learnt)
|
|
401
440
|
|
|
402
441
|
# Sets the path for the data
|
|
403
442
|
|
|
404
|
-
results_path = get_parent_path_of_file()+"//
|
|
443
|
+
results_path = (get_parent_path_of_file()+"//results_n_divisions_"+
|
|
444
|
+
str(n_divisions))
|
|
405
445
|
|
|
406
446
|
displacement_data_file = "00_successful_displacement_matrix.npy"
|
|
407
447
|
|
|
@@ -411,12 +451,8 @@ if __name__=="__main__":
|
|
|
411
451
|
|
|
412
452
|
# Sets the method to regularize the input data matrix
|
|
413
453
|
|
|
414
|
-
input_data_regularization_method =
|
|
415
|
-
|
|
416
|
-
# Sets if the input data must be put into the same order of magnitu-
|
|
417
|
-
# de
|
|
418
|
-
|
|
419
|
-
get_all_inputs_to_zeroth_order_of_magnitude = False
|
|
454
|
+
input_data_regularization_method = ("maximum_absolute_order_normal"+
|
|
455
|
+
"ization")
|
|
420
456
|
|
|
421
457
|
# Sets the device type where the training will be performed
|
|
422
458
|
|
|
@@ -425,7 +461,7 @@ if __name__=="__main__":
|
|
|
425
461
|
# Sets whether the constraint on orthogonality of the SVD matrices
|
|
426
462
|
# will not be enforced
|
|
427
463
|
|
|
428
|
-
non_orthogonal_matrices =
|
|
464
|
+
non_orthogonal_matrices = True
|
|
429
465
|
|
|
430
466
|
# Instantiates the class that owns all information about training
|
|
431
467
|
# and testing models
|
|
@@ -438,9 +474,7 @@ if __name__=="__main__":
|
|
|
438
474
|
n_best_models, n_best_samples, maximum_training_iterations,
|
|
439
475
|
verbose_delta_iterations, mesh_file_name, optimizer,
|
|
440
476
|
subdofs_to_learn, parameters_dtype=parameters_dtype,
|
|
441
|
-
householder_epsilon=1.0, verbose=True,
|
|
442
|
-
get_all_inputs_to_zeroth_order_of_magnitude=
|
|
443
|
-
get_all_inputs_to_zeroth_order_of_magnitude, device_type=
|
|
477
|
+
householder_epsilon=1.0, verbose=True, device_type=
|
|
444
478
|
device_type, non_orthogonal_matrices=non_orthogonal_matrices,
|
|
445
479
|
input_data_regularization_method=input_data_regularization_method)
|
|
446
480
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Routine to store methods to set the GPU for tensorflow
|
|
2
|
+
|
|
3
|
+
import tensorflow as tf
|
|
4
|
+
|
|
5
|
+
# Defines a function to set the access of tensorflow to the GPU
|
|
6
|
+
|
|
7
|
+
def give_access_of_gpu_to_tensorflow(flag_to_use_gpu):
|
|
8
|
+
|
|
9
|
+
# Checks whether the flag for tensorflow to use the GPU is false
|
|
10
|
+
|
|
11
|
+
if not flag_to_use_gpu:
|
|
12
|
+
|
|
13
|
+
# Disables the GPU if necessary
|
|
14
|
+
|
|
15
|
+
tf.config.set_visible_devices([], 'GPU')
|
|
16
|
+
|
|
17
|
+
print(tf.config.list_physical_devices('CPU'))
|
|
18
|
+
|
|
19
|
+
print(tf.config.list_physical_devices('GPU'))
|
|
20
|
+
|
|
21
|
+
print("Visible GPUs:", tf.config.get_visible_devices("GPU"))
|