From c92a678432ac0363fc47cd8ced7abc2c664eb347 Mon Sep 17 00:00:00 2001 From: Ivo Steinbrecher Date: Fri, 27 Mar 2026 09:35:58 +0000 Subject: [PATCH 1/2] Allow individual scaling parameters --- ...interaction_contact_submodel_evaluator.cpp | 9 ++- ...ct_submodel_evaluator_assembly_manager.hpp | 5 +- ...odel_evaluator_assembly_manager_direct.cpp | 3 +- ...odel_evaluator_assembly_manager_direct.hpp | 4 +- ...el_evaluator_assembly_manager_indirect.cpp | 68 ++++++++++++++++++- ...el_evaluator_assembly_manager_indirect.hpp | 4 +- ...nteraction_contact_beam_to_solid_input.cpp | 6 ++ ...n_contact_beam_to_solid_mortar_manager.hpp | 16 +++++ ...tion_contact_beam_to_solid_params_base.cpp | 8 +++ ...tion_contact_beam_to_solid_params_base.hpp | 20 ++++++ .../linalg/src/sparse/4C_linalg_fevector.hpp | 5 +- 11 files changed, 138 insertions(+), 10 deletions(-) diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp index 6cbe814910a..125060c9175 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp @@ -360,7 +360,8 @@ bool BeamInteraction::SubmodelEvaluator::BeamContact::evaluate_force() for (auto& assembly_manager : assembly_managers_) { assembly_manager->evaluate_force_stiff(discret_ptr(), beam_interaction_data_state_ptr(), - beam_interaction_data_state_ptr()->get_force_np(), nullptr); + beam_interaction_data_state_ptr()->get_force_np(), nullptr, + *beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); } return true; @@ -378,7 +379,8 @@ bool BeamInteraction::SubmodelEvaluator::BeamContact::evaluate_stiff() for (auto& assembly_manager : assembly_managers_) { assembly_manager->evaluate_force_stiff(discret_ptr(), beam_interaction_data_state_ptr(), - nullptr, beam_interaction_data_state_ptr()->get_stiff()); + nullptr, beam_interaction_data_state_ptr()->get_stiff(), + *beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); } return true; @@ -397,7 +399,8 @@ bool BeamInteraction::SubmodelEvaluator::BeamContact::evaluate_force_stiff() for (auto& assembly_manager : assembly_managers_) assembly_manager->evaluate_force_stiff(discret_ptr(), beam_interaction_data_state_ptr(), beam_interaction_data_state_ptr()->get_force_np(), - beam_interaction_data_state_ptr()->get_stiff()); + beam_interaction_data_state_ptr()->get_stiff(), + *beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); print_active_beam_contact_set(Core::IO::cout.os(Core::IO::debug)); diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp index da33bce58f3..8b18ba53541 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp @@ -11,6 +11,7 @@ #include "4C_config.hpp" +#include "4C_beaminteraction_contact_beam_to_solid_volume_meshtying_params.hpp" #include "4C_linalg_fevector.hpp" #include "4C_linalg_vector.hpp" #include "4C_utils_exceptions.hpp" @@ -73,7 +74,9 @@ namespace BeamInteraction virtual void evaluate_force_stiff(std::shared_ptr discret, const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, - std::shared_ptr fe_sysmat) + std::shared_ptr fe_sysmat, + const BeamInteraction::BeamToSolidVolumeMeshtyingParams& + beam_to_solid_volume_meshtying_params) { FOUR_C_THROW("Not implemented!"); } diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp index c5466c7b46a..982212f93c8 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp @@ -36,7 +36,8 @@ void BeamInteraction::SubmodelEvaluator::BeamContactAssemblyManagerDirect::evalu std::shared_ptr discret, const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, - std::shared_ptr fe_sysmat) + std::shared_ptr fe_sysmat, + const BeamInteraction::BeamToSolidVolumeMeshtyingParams& beam_to_solid_volume_meshtying_params) { // resulting discrete element force vectors of the two interacting elements std::vector eleforce(2); diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp index ddb92b3395a..3451d10679b 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp @@ -47,7 +47,9 @@ namespace BeamInteraction void evaluate_force_stiff(std::shared_ptr discret, const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, - std::shared_ptr fe_sysmat) override; + std::shared_ptr fe_sysmat, + const BeamInteraction::BeamToSolidVolumeMeshtyingParams& + beam_to_solid_volume_meshtying_params) override; /** * \brief Return a const reference to the contact pairs in this assembly manager. diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp index e5225785180..a3d51b3dd87 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp @@ -13,6 +13,9 @@ #include "4C_beaminteraction_str_model_evaluator_datastate.hpp" #include "4C_comm_mpi_utils.hpp" #include "4C_fem_discretization.hpp" +#include "4C_linalg_vector.hpp" + +#include FOUR_C_NAMESPACE_OPEN @@ -24,7 +27,8 @@ void BeamInteraction::SubmodelEvaluator::BeamContactAssemblyManagerInDirect::eva std::shared_ptr discret, const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, - std::shared_ptr fe_sysmat) + std::shared_ptr fe_sysmat, + const BeamInteraction::BeamToSolidVolumeMeshtyingParams& beam_to_solid_volume_meshtying_params) { if (mortar_manager_->have_lagrange_dofs()) { @@ -33,8 +37,68 @@ void BeamInteraction::SubmodelEvaluator::BeamContactAssemblyManagerInDirect::eva if (mortar_manager_->get_lagrange_formulation() == BeamToSolid::BeamToSolidLagrangeFormulation::augmented) { + const auto* dof_row_map = discret->dof_row_map(); + const auto* solid_map = &mortar_manager_->get_solid_dof_row_map(); + const auto* beam_map = &mortar_manager_->get_beam_dof_row_map(); + + // Create matrix and vector for the penalty regularization contributions. + std::shared_ptr sysmat_penalty = nullptr; + if (fe_sysmat != nullptr) + { + sysmat_penalty = std::make_shared( + *dof_row_map, 81); // TODO: Better way than doing it this way with setting the 81? + } + std::shared_ptr> sysvec_penalty = nullptr; + if (fe_sysvec != nullptr) + { + sysvec_penalty = std::make_shared>(*dof_row_map); + } + + // Evaluate the penalty coupling contributions. mortar_manager_->evaluate_force_stiff_penalty_regularization( - data_state, fe_sysmat, fe_sysvec); + data_state, sysmat_penalty, sysvec_penalty); + if (sysmat_penalty != nullptr) sysmat_penalty->complete(); + if (sysvec_penalty != nullptr) sysvec_penalty->complete(); + + // Create the scaling vector holding the diagonal entries for the augmentation scaling + // matrix. + Core::LinAlg::Vector augmentation_scaling_vector(*dof_row_map); + augmentation_scaling_vector.put_scalar(1.0); + + auto add_scaling_values_to_vector = [&](const Core::LinAlg::Map& sub_map, double val) + { + for (int i = 0; i < sub_map.num_my_elements(); ++i) + { + int gid = sub_map.gid(i); + int lid_dof_row_map = dof_row_map->lid(gid); + if (lid_dof_row_map != -1) + { + augmentation_scaling_vector.replace_local_value(lid_dof_row_map, val); + } + else + { + FOUR_C_THROW( + "Global ID {} from sub map is not found in dof row map. This is should not happen.", + gid); + } + } + }; + + add_scaling_values_to_vector(*solid_map, + beam_to_solid_volume_meshtying_params.get_augmentation_scaling_parameter_solid()); + add_scaling_values_to_vector(*beam_map, + beam_to_solid_volume_meshtying_params.get_augmentation_scaling_parameter_beam()); + + // Scale the penalty contributions and add them to the system matrix and vector. + if (fe_sysmat != nullptr) + { + sysmat_penalty->left_scale(augmentation_scaling_vector); + fe_sysmat->add(*sysmat_penalty, false, 1.0, 1.0); + } + if (fe_sysvec != nullptr) + { + fe_sysvec->multiply(1.0, augmentation_scaling_vector, *sysvec_penalty, 1.0); + } } } else diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp index 944e308b3dc..af108fa1917 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp @@ -53,7 +53,9 @@ namespace BeamInteraction void evaluate_force_stiff(std::shared_ptr discret, const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, - std::shared_ptr fe_sysmat) override; + std::shared_ptr fe_sysmat, + const BeamInteraction::BeamToSolidVolumeMeshtyingParams& + beam_to_solid_volume_meshtying_params) override; /** * \brief Return a const pointer to the mortar manager. diff --git a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp index 17563316ab3..3b4c52873f1 100644 --- a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp +++ b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp @@ -91,6 +91,12 @@ std::vector BeamToSolid::valid_parameters() {.description = "Penalty parameter for beam-to-solid volume meshtying", .default_value = 0.0}), + parameter("AUGMENTATION_SCALING_PARAMETER_BEAM", + {.description = "Augmentation scaling parameter for the beam row", .default_value = 1.0}), + + parameter("AUGMENTATION_SCALING_PARAMETER_SOLID", + {.description = "Augmentation scaling parameter for the solid row", + .default_value = 1.0}), // This option only has an effect during a restart simulation. // - No: (default) The coupling is treated the same way as during a non restart diff --git a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_mortar_manager.hpp b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_mortar_manager.hpp index 14c9c6574c2..32d39f5c59a 100644 --- a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_mortar_manager.hpp +++ b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_mortar_manager.hpp @@ -262,6 +262,22 @@ namespace BeamInteraction return lambda_dof_rowmap_; } + /** + * \brief Returns a const reference to the beam dof row map + */ + [[nodiscard]] const Core::LinAlg::Map& get_beam_dof_row_map() const + { + return *beam_dof_rowmap_; + } + + /** + * \brief Returns a const reference to the solid dof row map + */ + [[nodiscard]] const Core::LinAlg::Map& get_solid_dof_row_map() const + { + return *solid_dof_rowmap_; + } + /** * \brief Calculate the internal mortar penalty energy. * @return Global mortar energy. diff --git a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp index 3d4c2b53cb0..458f5e16ca9 100644 --- a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp +++ b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp @@ -25,6 +25,8 @@ BeamInteraction::BeamToSolidParamsBase::BeamToSolidParamsBase() contact_discretization_(BeamToSolid::BeamToSolidContactDiscretization::none), mortar_shape_function_(BeamToSolid::BeamToSolidMortarShapefunctions::none), penalty_parameter_(-1.0), + augmentation_scaling_parameter_beam_(-1.0), + augmentation_scaling_parameter_solid_(-1.0), gauss_rule_(Core::FE::GaussRule1D::undefined), rotational_coupling_(false), lagrange_formulation_(BeamToSolid::BeamToSolidLagrangeFormulation::none) @@ -69,6 +71,12 @@ void BeamInteraction::BeamToSolidParamsBase::set_base_params( if (penalty_parameter_ < 0.0) FOUR_C_THROW("beam-to-volume-meshtying penalty parameter must not be negative!"); + // Augmentation scaling parameters. + augmentation_scaling_parameter_beam_ = + beam_to_solid_params_list.get("AUGMENTATION_SCALING_PARAMETER_BEAM"); + augmentation_scaling_parameter_solid_ = + beam_to_solid_params_list.get("AUGMENTATION_SCALING_PARAMETER_SOLID"); + // Gauss rule for integration along the beam (segments). gauss_rule_ = GeometryPair::int_to_gauss_rule1_d(beam_to_solid_params_list.get("GAUSS_POINTS")); diff --git a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.hpp b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.hpp index a373b305198..13d6c71999f 100644 --- a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.hpp +++ b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.hpp @@ -117,6 +117,22 @@ namespace BeamInteraction */ inline double get_penalty_parameter() const { return penalty_parameter_; } + /** + * \brief Returns the augmentation scaling parameter for the beam DOFs. + */ + [[nodiscard]] inline double get_augmentation_scaling_parameter_beam() const + { + return augmentation_scaling_parameter_beam_; + } + + /** + * \brief Returns the augmentation scaling parameter for the solid DOFs. + */ + [[nodiscard]] inline double get_augmentation_scaling_parameter_solid() const + { + return augmentation_scaling_parameter_solid_; + } + /** * \brief Returns the Gauss rule. * @return gauss rule. @@ -157,6 +173,10 @@ namespace BeamInteraction //! Penalty parameter. double penalty_parameter_; + //! Augmentation scaling parameters + double augmentation_scaling_parameter_beam_; + double augmentation_scaling_parameter_solid_; + //! Gauss rule to be used. Core::FE::GaussRule1D gauss_rule_; diff --git a/src/core/linalg/src/sparse/4C_linalg_fevector.hpp b/src/core/linalg/src/sparse/4C_linalg_fevector.hpp index 7ce021f3d50..40ffd001851 100644 --- a/src/core/linalg/src/sparse/4C_linalg_fevector.hpp +++ b/src/core/linalg/src/sparse/4C_linalg_fevector.hpp @@ -201,7 +201,10 @@ namespace Core::LinAlg //! Multiply a Core::LinAlg::MultiVector with another, element-by-element. void multiply(double ScalarAB, const Epetra_MultiVector& A, const Epetra_MultiVector& B, - double ScalarThis); + double ScalarThis) + { + ASSERT_EPETRA_CALL(vector_->Multiply(ScalarAB, A, B, ScalarThis)); + } //! Imports an Epetra_DistObject using the Core::LinAlg::Import object. void import(const Epetra_SrcDistObject& A, const Core::LinAlg::Import& Importer, From 19d0d3c8edf186f82d483501d08eddbe41d59773 Mon Sep 17 00:00:00 2001 From: Max Firmbach Date: Mon, 30 Mar 2026 12:03:41 +0200 Subject: [PATCH 2/2] Fix mistakes to get pipeline running --- ...interaction_contact_submodel_evaluator.cpp | 6 +- ...ct_submodel_evaluator_assembly_manager.hpp | 2 +- ...odel_evaluator_assembly_manager_direct.cpp | 3 +- ...odel_evaluator_assembly_manager_direct.hpp | 2 +- ...el_evaluator_assembly_manager_indirect.cpp | 12 +- ...el_evaluator_assembly_manager_indirect.hpp | 2 +- ...nteraction_contact_beam_to_solid_input.cpp | 7 +- ...tion_contact_beam_to_solid_params_base.cpp | 14 +- ...range_individually_augmented_line3.4C.yaml | 589 ++++++++++++++++++ tests/list_of_tests.cmake | 1 + 10 files changed, 618 insertions(+), 20 deletions(-) create mode 100644 tests/input_files/beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_individually_augmented_line3.4C.yaml diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp index 125060c9175..3655227daba 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator.cpp @@ -361,7 +361,7 @@ bool BeamInteraction::SubmodelEvaluator::BeamContact::evaluate_force() { assembly_manager->evaluate_force_stiff(discret_ptr(), beam_interaction_data_state_ptr(), beam_interaction_data_state_ptr()->get_force_np(), nullptr, - *beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); + beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); } return true; @@ -380,7 +380,7 @@ bool BeamInteraction::SubmodelEvaluator::BeamContact::evaluate_stiff() { assembly_manager->evaluate_force_stiff(discret_ptr(), beam_interaction_data_state_ptr(), nullptr, beam_interaction_data_state_ptr()->get_stiff(), - *beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); + beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); } return true; @@ -400,7 +400,7 @@ bool BeamInteraction::SubmodelEvaluator::BeamContact::evaluate_force_stiff() assembly_manager->evaluate_force_stiff(discret_ptr(), beam_interaction_data_state_ptr(), beam_interaction_data_state_ptr()->get_force_np(), beam_interaction_data_state_ptr()->get_stiff(), - *beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); + beam_contact_params_ptr_->beam_to_solid_volume_meshtying_params()); print_active_beam_contact_set(Core::IO::cout.os(Core::IO::debug)); diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp index 8b18ba53541..89583f0e76f 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager.hpp @@ -75,7 +75,7 @@ namespace BeamInteraction const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, std::shared_ptr fe_sysmat, - const BeamInteraction::BeamToSolidVolumeMeshtyingParams& + const std::shared_ptr beam_to_solid_volume_meshtying_params) { FOUR_C_THROW("Not implemented!"); diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp index 982212f93c8..4803673ef26 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.cpp @@ -37,7 +37,8 @@ void BeamInteraction::SubmodelEvaluator::BeamContactAssemblyManagerDirect::evalu const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, std::shared_ptr fe_sysmat, - const BeamInteraction::BeamToSolidVolumeMeshtyingParams& beam_to_solid_volume_meshtying_params) + const std::shared_ptr + beam_to_solid_volume_meshtying_params) { // resulting discrete element force vectors of the two interacting elements std::vector eleforce(2); diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp index 3451d10679b..fca5e45a6b1 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_direct.hpp @@ -48,7 +48,7 @@ namespace BeamInteraction const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, std::shared_ptr fe_sysmat, - const BeamInteraction::BeamToSolidVolumeMeshtyingParams& + const std::shared_ptr beam_to_solid_volume_meshtying_params) override; /** diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp index a3d51b3dd87..e0c690ab66e 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.cpp @@ -28,7 +28,8 @@ void BeamInteraction::SubmodelEvaluator::BeamContactAssemblyManagerInDirect::eva const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, std::shared_ptr fe_sysmat, - const BeamInteraction::BeamToSolidVolumeMeshtyingParams& beam_to_solid_volume_meshtying_params) + const std::shared_ptr + beam_to_solid_volume_meshtying_params) { if (mortar_manager_->have_lagrange_dofs()) { @@ -45,8 +46,7 @@ void BeamInteraction::SubmodelEvaluator::BeamContactAssemblyManagerInDirect::eva std::shared_ptr sysmat_penalty = nullptr; if (fe_sysmat != nullptr) { - sysmat_penalty = std::make_shared( - *dof_row_map, 81); // TODO: Better way than doing it this way with setting the 81? + sysmat_penalty = std::make_shared(*dof_row_map, 81); } std::shared_ptr> sysvec_penalty = nullptr; if (fe_sysvec != nullptr) @@ -78,16 +78,16 @@ void BeamInteraction::SubmodelEvaluator::BeamContactAssemblyManagerInDirect::eva else { FOUR_C_THROW( - "Global ID {} from sub map is not found in dof row map. This is should not happen.", + "Global ID {} from sub map is not found in dof row map. This should not happen.", gid); } } }; add_scaling_values_to_vector(*solid_map, - beam_to_solid_volume_meshtying_params.get_augmentation_scaling_parameter_solid()); + beam_to_solid_volume_meshtying_params->get_augmentation_scaling_parameter_solid()); add_scaling_values_to_vector(*beam_map, - beam_to_solid_volume_meshtying_params.get_augmentation_scaling_parameter_beam()); + beam_to_solid_volume_meshtying_params->get_augmentation_scaling_parameter_beam()); // Scale the penalty contributions and add them to the system matrix and vector. if (fe_sysmat != nullptr) diff --git a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp index af108fa1917..7bfa6ab6c0c 100644 --- a/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp +++ b/src/beaminteraction/src/contact/4C_beaminteraction_contact_submodel_evaluator_assembly_manager_indirect.hpp @@ -54,7 +54,7 @@ namespace BeamInteraction const std::shared_ptr& data_state, std::shared_ptr> fe_sysvec, std::shared_ptr fe_sysmat, - const BeamInteraction::BeamToSolidVolumeMeshtyingParams& + const std::shared_ptr beam_to_solid_volume_meshtying_params) override; /** diff --git a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp index 3b4c52873f1..facb5946da0 100644 --- a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp +++ b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_input.cpp @@ -92,11 +92,14 @@ std::vector BeamToSolid::valid_parameters() .default_value = 0.0}), parameter("AUGMENTATION_SCALING_PARAMETER_BEAM", - {.description = "Augmentation scaling parameter for the beam row", .default_value = 1.0}), + {.description = "Augmentation scaling parameter for the beam row", + .default_value = 1.0, + .validator = Validators::positive()}), parameter("AUGMENTATION_SCALING_PARAMETER_SOLID", {.description = "Augmentation scaling parameter for the solid row", - .default_value = 1.0}), + .default_value = 1.0, + .validator = Validators::positive()}), // This option only has an effect during a restart simulation. // - No: (default) The coupling is treated the same way as during a non restart diff --git a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp index 458f5e16ca9..ffcb8cf2948 100644 --- a/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp +++ b/src/beaminteraction/src/contact/beam_to_solid/4C_beaminteraction_contact_beam_to_solid_params_base.cpp @@ -71,11 +71,15 @@ void BeamInteraction::BeamToSolidParamsBase::set_base_params( if (penalty_parameter_ < 0.0) FOUR_C_THROW("beam-to-volume-meshtying penalty parameter must not be negative!"); - // Augmentation scaling parameters. - augmentation_scaling_parameter_beam_ = - beam_to_solid_params_list.get("AUGMENTATION_SCALING_PARAMETER_BEAM"); - augmentation_scaling_parameter_solid_ = - beam_to_solid_params_list.get("AUGMENTATION_SCALING_PARAMETER_SOLID"); + if (beam_to_solid_params_list.isParameter("AUGMENTATION_SCALING_PARAMETER_BEAM") and + beam_to_solid_params_list.isParameter("AUGMENTATION_SCALING_PARAMETER_SOLID")) + { + // Augmentation scaling parameters. + augmentation_scaling_parameter_beam_ = + beam_to_solid_params_list.get("AUGMENTATION_SCALING_PARAMETER_BEAM"); + augmentation_scaling_parameter_solid_ = + beam_to_solid_params_list.get("AUGMENTATION_SCALING_PARAMETER_SOLID"); + } // Gauss rule for integration along the beam (segments). gauss_rule_ = diff --git a/tests/input_files/beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_individually_augmented_line3.4C.yaml b/tests/input_files/beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_individually_augmented_line3.4C.yaml new file mode 100644 index 00000000000..18a09b31ab4 --- /dev/null +++ b/tests/input_files/beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_individually_augmented_line3.4C.yaml @@ -0,0 +1,589 @@ +PROBLEM SIZE: + DIM: 3 +PROBLEM TYPE: + PROBLEMTYPE: Structure + RESTART: 0 +IO: + OUTPUT_BIN: false + STRUCT_DISP: false + FILESTEPS: 1000 + VERBOSITY: Standard +IO/RUNTIME VTK OUTPUT: + OUTPUT_DATA_FORMAT: binary + INTERVAL_STEPS: 1 + EVERY_ITERATION: true +IO/RUNTIME VTK OUTPUT/BEAMS: + OUTPUT_BEAMS: true + DISPLACEMENT: true + USE_ABSOLUTE_POSITIONS: true + TRIAD_VISUALIZATIONPOINT: false + STRAINS_GAUSSPOINT: true +STRUCTURAL DYNAMIC: + LINEAR_SOLVER: 1 + DYNAMICTYPE: Statics + RESULTSEVERY: 1 + NLNSOL: fullnewton + LOADLIN: true + TIMESTEP: 0.5 + NUMSTEP: 2 + MAXTIME: 1.0 +SOLVER 1: + NAME: Structure_Solver + SOLVER: Superlu +IO/RUNTIME VTK OUTPUT/STRUCTURE: + OUTPUT_STRUCTURE: true + DISPLACEMENT: true + ELEMENT_OWNER: true +BEAM INTERACTION: + REPARTITIONSTRATEGY: Everydt +BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING: + CONTACT_DISCRETIZATION: mortar + MORTAR_SHAPE_FUNCTION: line3 + CONSTRAINT_STRATEGY: lagrange + LAGRANGE_FORMULATION: augmented + PENALTY_PARAMETER: 1 + AUGMENTATION_SCALING_PARAMETER_SOLID: 1 + AUGMENTATION_SCALING_PARAMETER_BEAM: 100 + GEOMETRY_PAIR_STRATEGY: segmentation + GEOMETRY_PAIR_SEGMENTATION_SEARCH_POINTS: 2 +BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING/RUNTIME VTK OUTPUT: + WRITE_OUTPUT: true + NODAL_FORCES: true + MORTAR_LAMBDA_DISCRET: true + MORTAR_LAMBDA_CONTINUOUS: true + MORTAR_LAMBDA_CONTINUOUS_SEGMENTS: 5 + SEGMENTATION: true + INTEGRATION_POINTS: true +RESULT DESCRIPTION: + - STRUCTURE: + DIS: "structure" + NODE: 175 + QUANTITY: "dispx" + VALUE: -4.57285788661491721e-01 + TOLERANCE: 1e-10 + - STRUCTURE: + DIS: "structure" + NODE: 175 + QUANTITY: "dispy" + VALUE: -5.00952275932792790e-02 + TOLERANCE: 1e-10 + - STRUCTURE: + DIS: "structure" + NODE: 175 + QUANTITY: "dispz" + VALUE: 2.32173660064323428e+00 + TOLERANCE: 1e-10 + - STRUCTURE: + DIS: "structure" + NODE: 190 + QUANTITY: "dispx" + VALUE: -0.000961420450381 + TOLERANCE: 1e-10 + - STRUCTURE: + DIS: "structure" + NODE: 190 + QUANTITY: "dispy" + VALUE: -7.83470141794e-05 + TOLERANCE: 1e-10 + - STRUCTURE: + DIS: "structure" + NODE: 190 + QUANTITY: "dispz" + VALUE: 0.0146172875846 + TOLERANCE: 1e-10 +DESIGN SURF DIRICH CONDITIONS: + - E: 1 + NUMDOF: 3 + ONOFF: + - 1 + - 1 + - 1 + VAL: + - 0.0 + - 0.0 + - 0.0 + FUNCT: + - 0 + - 0 + - 0 +BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING VOLUME: + - E: 1 + COUPLING_ID: 1 +STRUCT NOX/Status Test: + XML File: "beam3r_herm2line3_static_beam_to_solid_volume_meshtying_mortar_lagrange.xml" +MATERIALS: + - MAT: 1 + MAT_Struct_StVenantKirchhoff: + YOUNG: 1 + NUE: 0.0 + DENS: 0.0 + - MAT: 2 + MAT_BeamKirchhoffTorsionFreeElastHyper: + YOUNG: 100 + DENS: 0.0 + CROSSAREA: 0.007853981633974483 + MOMIN: 4.9087385212340526e-06 +FUNCT1: + - SYMBOLIC_FUNCTION_OF_SPACE_TIME: t +DESIGN LINE NEUMANN CONDITIONS: + - E: 1 + NUMDOF: 6 + ONOFF: + - 1 + - 1 + - 1 + - 0 + - 0 + - 0 + VAL: + - 0 + - 0 + - 0.00025 + - 0 + - 0 + - 0 + FUNCT: + - 1 + - 1 + - 1 + - 0 + - 0 + - 0 +BEAM INTERACTION/BEAM TO SOLID VOLUME MESHTYING LINE: + - E: 1 + COUPLING_ID: 1 +DSURF-NODE TOPOLOGY: + - NODE 1 DSURFACE 1 + - NODE 2 DSURFACE 1 + - NODE 3 DSURFACE 1 + - NODE 4 DSURFACE 1 + - NODE 9 DSURFACE 1 + - NODE 10 DSURFACE 1 + - NODE 11 DSURFACE 1 + - NODE 12 DSURFACE 1 + - NODE 22 DSURFACE 1 +DVOL-NODE TOPOLOGY: + - NODE 1 DVOL 1 + - NODE 2 DVOL 1 + - NODE 3 DVOL 1 + - NODE 4 DVOL 1 + - NODE 5 DVOL 1 + - NODE 6 DVOL 1 + - NODE 7 DVOL 1 + - NODE 8 DVOL 1 + - NODE 9 DVOL 1 + - NODE 10 DVOL 1 + - NODE 11 DVOL 1 + - NODE 12 DVOL 1 + - NODE 13 DVOL 1 + - NODE 14 DVOL 1 + - NODE 15 DVOL 1 + - NODE 16 DVOL 1 + - NODE 17 DVOL 1 + - NODE 18 DVOL 1 + - NODE 19 DVOL 1 + - NODE 20 DVOL 1 + - NODE 21 DVOL 1 + - NODE 22 DVOL 1 + - NODE 23 DVOL 1 + - NODE 24 DVOL 1 + - NODE 25 DVOL 1 + - NODE 26 DVOL 1 + - NODE 27 DVOL 1 + - NODE 28 DVOL 1 + - NODE 29 DVOL 1 + - NODE 30 DVOL 1 + - NODE 31 DVOL 1 + - NODE 32 DVOL 1 + - NODE 33 DVOL 1 + - NODE 34 DVOL 1 + - NODE 35 DVOL 1 + - NODE 36 DVOL 1 + - NODE 37 DVOL 1 + - NODE 38 DVOL 1 + - NODE 39 DVOL 1 + - NODE 40 DVOL 1 + - NODE 41 DVOL 1 + - NODE 42 DVOL 1 + - NODE 43 DVOL 1 + - NODE 44 DVOL 1 + - NODE 45 DVOL 1 + - NODE 46 DVOL 1 + - NODE 47 DVOL 1 + - NODE 48 DVOL 1 + - NODE 49 DVOL 1 + - NODE 50 DVOL 1 + - NODE 51 DVOL 1 + - NODE 52 DVOL 1 + - NODE 53 DVOL 1 + - NODE 54 DVOL 1 + - NODE 55 DVOL 1 + - NODE 56 DVOL 1 + - NODE 57 DVOL 1 + - NODE 58 DVOL 1 + - NODE 59 DVOL 1 + - NODE 60 DVOL 1 + - NODE 61 DVOL 1 + - NODE 62 DVOL 1 + - NODE 63 DVOL 1 + - NODE 64 DVOL 1 + - NODE 65 DVOL 1 + - NODE 66 DVOL 1 + - NODE 67 DVOL 1 + - NODE 68 DVOL 1 + - NODE 69 DVOL 1 + - NODE 70 DVOL 1 + - NODE 71 DVOL 1 + - NODE 72 DVOL 1 + - NODE 73 DVOL 1 + - NODE 74 DVOL 1 + - NODE 75 DVOL 1 + - NODE 76 DVOL 1 + - NODE 77 DVOL 1 + - NODE 78 DVOL 1 + - NODE 79 DVOL 1 + - NODE 80 DVOL 1 + - NODE 81 DVOL 1 + - NODE 82 DVOL 1 + - NODE 83 DVOL 1 + - NODE 84 DVOL 1 + - NODE 85 DVOL 1 + - NODE 86 DVOL 1 + - NODE 87 DVOL 1 + - NODE 88 DVOL 1 + - NODE 89 DVOL 1 + - NODE 90 DVOL 1 + - NODE 91 DVOL 1 + - NODE 92 DVOL 1 + - NODE 93 DVOL 1 + - NODE 94 DVOL 1 + - NODE 95 DVOL 1 + - NODE 96 DVOL 1 + - NODE 97 DVOL 1 + - NODE 98 DVOL 1 + - NODE 99 DVOL 1 + - NODE 100 DVOL 1 + - NODE 101 DVOL 1 + - NODE 102 DVOL 1 + - NODE 103 DVOL 1 + - NODE 104 DVOL 1 + - NODE 105 DVOL 1 + - NODE 106 DVOL 1 + - NODE 107 DVOL 1 + - NODE 108 DVOL 1 + - NODE 109 DVOL 1 + - NODE 110 DVOL 1 + - NODE 111 DVOL 1 + - NODE 112 DVOL 1 + - NODE 113 DVOL 1 + - NODE 114 DVOL 1 + - NODE 115 DVOL 1 + - NODE 116 DVOL 1 + - NODE 117 DVOL 1 + - NODE 118 DVOL 1 + - NODE 119 DVOL 1 + - NODE 120 DVOL 1 + - NODE 121 DVOL 1 + - NODE 122 DVOL 1 + - NODE 123 DVOL 1 + - NODE 124 DVOL 1 + - NODE 125 DVOL 1 + - NODE 126 DVOL 1 + - NODE 127 DVOL 1 + - NODE 128 DVOL 1 + - NODE 129 DVOL 1 + - NODE 130 DVOL 1 + - NODE 131 DVOL 1 + - NODE 132 DVOL 1 + - NODE 133 DVOL 1 + - NODE 134 DVOL 1 + - NODE 135 DVOL 1 + - NODE 136 DVOL 1 + - NODE 137 DVOL 1 + - NODE 138 DVOL 1 + - NODE 139 DVOL 1 + - NODE 140 DVOL 1 + - NODE 141 DVOL 1 + - NODE 142 DVOL 1 + - NODE 143 DVOL 1 + - NODE 144 DVOL 1 + - NODE 145 DVOL 1 + - NODE 146 DVOL 1 + - NODE 147 DVOL 1 + - NODE 148 DVOL 1 + - NODE 149 DVOL 1 + - NODE 150 DVOL 1 + - NODE 151 DVOL 1 + - NODE 152 DVOL 1 + - NODE 153 DVOL 1 + - NODE 154 DVOL 1 + - NODE 155 DVOL 1 + - NODE 156 DVOL 1 + - NODE 157 DVOL 1 + - NODE 158 DVOL 1 + - NODE 159 DVOL 1 + - NODE 160 DVOL 1 + - NODE 161 DVOL 1 + - NODE 162 DVOL 1 + - NODE 163 DVOL 1 + - NODE 164 DVOL 1 + - NODE 165 DVOL 1 + - NODE 166 DVOL 1 + - NODE 167 DVOL 1 + - NODE 168 DVOL 1 + - NODE 169 DVOL 1 + - NODE 170 DVOL 1 + - NODE 171 DVOL 1 + - NODE 172 DVOL 1 + - NODE 173 DVOL 1 + - NODE 174 DVOL 1 + - NODE 175 DVOL 1 + - NODE 176 DVOL 1 + - NODE 177 DVOL 1 + - NODE 178 DVOL 1 + - NODE 179 DVOL 1 + - NODE 180 DVOL 1 + - NODE 181 DVOL 1 + - NODE 182 DVOL 1 + - NODE 183 DVOL 1 + - NODE 184 DVOL 1 + - NODE 185 DVOL 1 + - NODE 186 DVOL 1 + - NODE 187 DVOL 1 + - NODE 188 DVOL 1 + - NODE 189 DVOL 1 +DLINE-NODE TOPOLOGY: + - NODE 190 DLINE 1 + - NODE 191 DLINE 1 + - NODE 192 DLINE 1 + - NODE 193 DLINE 1 + - NODE 194 DLINE 1 + - NODE 195 DLINE 1 + - NODE 196 DLINE 1 + - NODE 197 DLINE 1 +NODE COORDS: + - NODE 1 COORD -5.0 -0.5 0.5 + - NODE 2 COORD -5.0 -0.5 -0.5 + - NODE 3 COORD -5.0 0.5 -0.5 + - NODE 4 COORD -5.0 0.5 0.5 + - NODE 5 COORD -4.0 -0.5 0.5 + - NODE 6 COORD -4.0 -0.5 -0.5 + - NODE 7 COORD -4.0 0.5 -0.5 + - NODE 8 COORD -4.0 0.5 0.5 + - NODE 9 COORD -5.0 -0.5 0.0 + - NODE 10 COORD -5.0 0.0 -0.5 + - NODE 11 COORD -5.0 0.5 0.0 + - NODE 12 COORD -5.0 0.0 0.5 + - NODE 13 COORD -4.5 -0.5 0.5 + - NODE 14 COORD -4.5 -0.5 -0.5 + - NODE 15 COORD -4.5 0.5 -0.5 + - NODE 16 COORD -4.5 0.5 0.5 + - NODE 17 COORD -4.0 -0.5 0.0 + - NODE 18 COORD -4.0 0.0 -0.5 + - NODE 19 COORD -4.0 0.5 0.0 + - NODE 20 COORD -4.0 0.0 0.5 + - NODE 21 COORD -4.5 0.0 0.0 + - NODE 22 COORD -5.0 0.0 0.0 + - NODE 23 COORD -4.0 0.0 0.0 + - NODE 24 COORD -4.5 0.0 0.5 + - NODE 25 COORD -4.5 0.0 -0.5 + - NODE 26 COORD -4.5 -0.5 0.0 + - NODE 27 COORD -4.5 0.5 0.0 + - NODE 28 COORD -3.0 -0.5 0.5 + - NODE 29 COORD -3.0 -0.5 -0.5 + - NODE 30 COORD -3.0 0.5 -0.5 + - NODE 31 COORD -3.0 0.5 0.5 + - NODE 32 COORD -3.5 -0.5 0.5 + - NODE 33 COORD -3.5 -0.5 -0.5 + - NODE 34 COORD -3.5 0.5 -0.5 + - NODE 35 COORD -3.5 0.5 0.5 + - NODE 36 COORD -3.0 -0.5 0.0 + - NODE 37 COORD -3.0 0.0 -0.5 + - NODE 38 COORD -3.0 0.5 0.0 + - NODE 39 COORD -3.0 0.0 0.5 + - NODE 40 COORD -3.5 0.0 0.0 + - NODE 41 COORD -3.0 0.0 0.0 + - NODE 42 COORD -3.5 0.0 0.5 + - NODE 43 COORD -3.5 0.0 -0.5 + - NODE 44 COORD -3.5 -0.5 0.0 + - NODE 45 COORD -3.5 0.5 0.0 + - NODE 46 COORD -2.0 -0.5 0.5 + - NODE 47 COORD -2.0 -0.5 -0.5 + - NODE 48 COORD -2.0 0.5 -0.5 + - NODE 49 COORD -2.0 0.5 0.5 + - NODE 50 COORD -2.5 -0.5 0.5 + - NODE 51 COORD -2.5 -0.5 -0.5 + - NODE 52 COORD -2.5 0.5 -0.5 + - NODE 53 COORD -2.5 0.5 0.5 + - NODE 54 COORD -2.0 -0.5 0.0 + - NODE 55 COORD -2.0 0.0 -0.5 + - NODE 56 COORD -2.0 0.5 0.0 + - NODE 57 COORD -2.0 0.0 0.5 + - NODE 58 COORD -2.5 0.0 0.0 + - NODE 59 COORD -2.0 0.0 0.0 + - NODE 60 COORD -2.5 0.0 0.5 + - NODE 61 COORD -2.5 0.0 -0.5 + - NODE 62 COORD -2.5 -0.5 0.0 + - NODE 63 COORD -2.5 0.5 0.0 + - NODE 64 COORD -1.0 -0.5 0.5 + - NODE 65 COORD -1.0 -0.5 -0.5 + - NODE 66 COORD -1.0 0.5 -0.5 + - NODE 67 COORD -1.0 0.5 0.5 + - NODE 68 COORD -1.5 -0.5 0.5 + - NODE 69 COORD -1.5 -0.5 -0.5 + - NODE 70 COORD -1.5 0.5 -0.5 + - NODE 71 COORD -1.5 0.5 0.5 + - NODE 72 COORD -1.0 -0.5 0.0 + - NODE 73 COORD -1.0 0.0 -0.5 + - NODE 74 COORD -1.0 0.5 0.0 + - NODE 75 COORD -1.0 0.0 0.5 + - NODE 76 COORD -1.5 0.0 0.0 + - NODE 77 COORD -1.0 0.0 0.0 + - NODE 78 COORD -1.5 0.0 0.5 + - NODE 79 COORD -1.5 0.0 -0.5 + - NODE 80 COORD -1.5 -0.5 0.0 + - NODE 81 COORD -1.5 0.5 0.0 + - NODE 82 COORD 0.0 -0.5 0.5 + - NODE 83 COORD 0.0 -0.5 -0.5 + - NODE 84 COORD 0.0 0.5 -0.5 + - NODE 85 COORD 0.0 0.5 0.5 + - NODE 86 COORD -0.5 -0.5 0.5 + - NODE 87 COORD -0.5 -0.5 -0.5 + - NODE 88 COORD -0.5 0.5 -0.5 + - NODE 89 COORD -0.5 0.5 0.5 + - NODE 90 COORD 0.0 -0.5 0.0 + - NODE 91 COORD 0.0 0.0 -0.5 + - NODE 92 COORD 0.0 0.5 0.0 + - NODE 93 COORD 0.0 0.0 0.5 + - NODE 94 COORD -0.5 0.0 0.0 + - NODE 95 COORD 0.0 0.0 0.0 + - NODE 96 COORD -0.5 0.0 0.5 + - NODE 97 COORD -0.5 0.0 -0.5 + - NODE 98 COORD -0.5 -0.5 0.0 + - NODE 99 COORD -0.5 0.5 0.0 + - NODE 100 COORD 1.0 -0.5 0.5 + - NODE 101 COORD 1.0 -0.5 -0.5 + - NODE 102 COORD 1.0 0.5 -0.5 + - NODE 103 COORD 1.0 0.5 0.5 + - NODE 104 COORD 0.5 -0.5 0.5 + - NODE 105 COORD 0.5 -0.5 -0.5 + - NODE 106 COORD 0.5 0.5 -0.5 + - NODE 107 COORD 0.5 0.5 0.5 + - NODE 108 COORD 1.0 -0.5 0.0 + - NODE 109 COORD 1.0 0.0 -0.5 + - NODE 110 COORD 1.0 0.5 0.0 + - NODE 111 COORD 1.0 0.0 0.5 + - NODE 112 COORD 0.5 0.0 0.0 + - NODE 113 COORD 1.0 0.0 0.0 + - NODE 114 COORD 0.5 0.0 0.5 + - NODE 115 COORD 0.5 0.0 -0.5 + - NODE 116 COORD 0.5 -0.5 0.0 + - NODE 117 COORD 0.5 0.5 0.0 + - NODE 118 COORD 2.0 -0.5 0.5 + - NODE 119 COORD 2.0 -0.5 -0.5 + - NODE 120 COORD 2.0 0.5 -0.5 + - NODE 121 COORD 2.0 0.5 0.5 + - NODE 122 COORD 1.5 -0.5 0.5 + - NODE 123 COORD 1.5 -0.5 -0.5 + - NODE 124 COORD 1.5 0.5 -0.5 + - NODE 125 COORD 1.5 0.5 0.5 + - NODE 126 COORD 2.0 -0.5 0.0 + - NODE 127 COORD 2.0 0.0 -0.5 + - NODE 128 COORD 2.0 0.5 0.0 + - NODE 129 COORD 2.0 0.0 0.5 + - NODE 130 COORD 1.5 0.0 0.0 + - NODE 131 COORD 2.0 0.0 0.0 + - NODE 132 COORD 1.5 0.0 0.5 + - NODE 133 COORD 1.5 0.0 -0.5 + - NODE 134 COORD 1.5 -0.5 0.0 + - NODE 135 COORD 1.5 0.5 0.0 + - NODE 136 COORD 3.0 -0.5 0.5 + - NODE 137 COORD 3.0 -0.5 -0.5 + - NODE 138 COORD 3.0 0.5 -0.5 + - NODE 139 COORD 3.0 0.5 0.5 + - NODE 140 COORD 2.5 -0.5 0.5 + - NODE 141 COORD 2.5 -0.5 -0.5 + - NODE 142 COORD 2.5 0.5 -0.5 + - NODE 143 COORD 2.5 0.5 0.5 + - NODE 144 COORD 3.0 -0.5 0.0 + - NODE 145 COORD 3.0 0.0 -0.5 + - NODE 146 COORD 3.0 0.5 0.0 + - NODE 147 COORD 3.0 0.0 0.5 + - NODE 148 COORD 2.5 0.0 0.0 + - NODE 149 COORD 3.0 0.0 0.0 + - NODE 150 COORD 2.5 0.0 0.5 + - NODE 151 COORD 2.5 0.0 -0.5 + - NODE 152 COORD 2.5 -0.5 0.0 + - NODE 153 COORD 2.5 0.5 0.0 + - NODE 154 COORD 4.0 -0.5 0.5 + - NODE 155 COORD 4.0 -0.5 -0.5 + - NODE 156 COORD 4.0 0.5 -0.5 + - NODE 157 COORD 4.0 0.5 0.5 + - NODE 158 COORD 3.5 -0.5 0.5 + - NODE 159 COORD 3.5 -0.5 -0.5 + - NODE 160 COORD 3.5 0.5 -0.5 + - NODE 161 COORD 3.5 0.5 0.5 + - NODE 162 COORD 4.0 -0.5 0.0 + - NODE 163 COORD 4.0 0.0 -0.5 + - NODE 164 COORD 4.0 0.5 0.0 + - NODE 165 COORD 4.0 0.0 0.5 + - NODE 166 COORD 3.5 0.0 0.0 + - NODE 167 COORD 4.0 0.0 0.0 + - NODE 168 COORD 3.5 0.0 0.5 + - NODE 169 COORD 3.5 0.0 -0.5 + - NODE 170 COORD 3.5 -0.5 0.0 + - NODE 171 COORD 3.5 0.5 0.0 + - NODE 172 COORD 5.0 -0.5 0.5 + - NODE 173 COORD 5.0 -0.5 -0.5 + - NODE 174 COORD 5.0 0.5 -0.5 + - NODE 175 COORD 5.0 0.5 0.5 + - NODE 176 COORD 4.5 -0.5 0.5 + - NODE 177 COORD 4.5 -0.5 -0.5 + - NODE 178 COORD 4.5 0.5 -0.5 + - NODE 179 COORD 4.5 0.5 0.5 + - NODE 180 COORD 5.0 -0.5 0.0 + - NODE 181 COORD 5.0 0.0 -0.5 + - NODE 182 COORD 5.0 0.5 0.0 + - NODE 183 COORD 5.0 0.0 0.5 + - NODE 184 COORD 4.5 0.0 0.0 + - NODE 185 COORD 5.0 0.0 0.0 + - NODE 186 COORD 4.5 0.0 0.5 + - NODE 187 COORD 4.5 0.0 -0.5 + - NODE 188 COORD 4.5 -0.5 0.0 + - NODE 189 COORD 4.5 0.5 0.0 + - NODE 190 COORD -4.5 0.3 0.0 + - NODE 191 COORD -3.357142857142857 0.3 0.0 + - NODE 192 COORD -2.2142857142857144 0.3 0.0 + - NODE 193 COORD -1.0714285714285716 0.3 0.0 + - NODE 194 COORD 0.07142857142857117 0.3 0.0 + - NODE 195 COORD 1.2142857142857144 0.3 0.0 + - NODE 196 COORD 2.3571428571428568 0.3 0.0 + - NODE 197 COORD 3.5 0.3 0.0 +STRUCTURE ELEMENTS: + - 1 SOLID HEX27 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 26 25 27 24 23 21 MAT 1 KINEM + nonlinear + - 2 SOLID HEX27 5 6 7 8 28 29 30 31 17 18 19 20 32 33 34 35 36 37 38 39 23 44 43 45 42 41 40 MAT 1 KINEM + nonlinear + - 3 SOLID HEX27 28 29 30 31 46 47 48 49 36 37 38 39 50 51 52 53 54 55 56 57 41 62 61 63 60 59 58 MAT + 1 KINEM nonlinear + - 4 SOLID HEX27 46 47 48 49 64 65 66 67 54 55 56 57 68 69 70 71 72 73 74 75 59 80 79 81 78 77 76 MAT + 1 KINEM nonlinear + - 5 SOLID HEX27 64 65 66 67 82 83 84 85 72 73 74 75 86 87 88 89 90 91 92 93 77 98 97 99 96 95 94 MAT + 1 KINEM nonlinear + - 6 SOLID HEX27 82 83 84 85 100 101 102 103 90 91 92 93 104 105 106 107 108 109 110 111 95 116 115 117 + 114 113 112 MAT 1 KINEM nonlinear + - 7 SOLID HEX27 100 101 102 103 118 119 120 121 108 109 110 111 122 123 124 125 126 127 128 129 113 + 134 133 135 132 131 130 MAT 1 KINEM nonlinear + - 8 SOLID HEX27 118 119 120 121 136 137 138 139 126 127 128 129 140 141 142 143 144 145 146 147 131 + 152 151 153 150 149 148 MAT 1 KINEM nonlinear + - 9 SOLID HEX27 136 137 138 139 154 155 156 157 144 145 146 147 158 159 160 161 162 163 164 165 149 + 170 169 171 168 167 166 MAT 1 KINEM nonlinear + - 10 SOLID HEX27 154 155 156 157 172 173 174 175 162 163 164 165 176 177 178 179 180 181 182 183 167 + 188 187 189 186 185 184 MAT 1 KINEM nonlinear + - 11 BEAM3EB LINE2 190 191 MAT 2 + - 12 BEAM3EB LINE2 191 192 MAT 2 + - 13 BEAM3EB LINE2 192 193 MAT 2 + - 14 BEAM3EB LINE2 193 194 MAT 2 + - 15 BEAM3EB LINE2 194 195 MAT 2 + - 16 BEAM3EB LINE2 195 196 MAT 2 + - 17 BEAM3EB LINE2 196 197 MAT 2 diff --git a/tests/list_of_tests.cmake b/tests/list_of_tests.cmake index dfa7491028f..44fc1cdee36 100644 --- a/tests/list_of_tests.cmake +++ b/tests/list_of_tests.cmake @@ -2612,6 +2612,7 @@ four_c_test(TEST_FILE beam3eb_static_beam_to_solid_volume_meshtying_hex27_cross_ four_c_test(TEST_FILE beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_regularized_line3.4C.yaml NP 2 REQUIRED_DEPENDENCIES ArborX) four_c_test(TEST_FILE beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_saddlepoint_line3.4C.yaml NP 2 REQUIRED_DEPENDENCIES ArborX) four_c_test(TEST_FILE beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_augmented_line3.4C.yaml NP 2 REQUIRED_DEPENDENCIES ArborX) +four_c_test(TEST_FILE beam3eb_static_beam_to_solid_volume_meshtying_mortar_lagrange_individually_augmented_line3.4C.yaml NP 2 REQUIRED_DEPENDENCIES ArborX) four_c_test(TEST_FILE beam3eb_static_beam_to_solid_volume_meshtying_mortar_penalty_line3.4C.yaml NP 2 REQUIRED_DEPENDENCIES ArborX) four_c_test(TEST_FILE beam3r_line2_backweuler_browndyn_contact_twocrossedbeams.4C.yaml NP 3 REQUIRED_DEPENDENCIES ArborX) four_c_test(TEST_FILE beam3r_line2_genalpha_liegroup_contact_penalty_linpen_newgap_twocrossedbeams.4C.yaml REQUIRED_DEPENDENCIES ArborX)