From 2244816570dbdc89511c27991d612df4ab730dac Mon Sep 17 00:00:00 2001 From: Maximilian Ludwig Date: Fri, 27 Mar 2026 13:39:15 +0100 Subject: [PATCH 1/3] Move the biofilm input from inpar to physics --- .../4C_fs3i_biofilm_fsi_input.cpp} | 7 +++---- .../4C_fs3i_biofilm_fsi_input.hpp} | 19 ++++++++----------- ...C_global_legacy_module_validconditions.cpp | 4 ++-- ...C_global_legacy_module_validparameters.cpp | 4 ++-- .../4C_red_airways_implicitintegration.cpp | 1 - 5 files changed, 15 insertions(+), 20 deletions(-) rename src/{inpar/4C_inpar_bio.cpp => fs3i/4C_fs3i_biofilm_fsi_input.cpp} (93%) rename src/{inpar/4C_inpar_bio.hpp => fs3i/4C_fs3i_biofilm_fsi_input.hpp} (60%) diff --git a/src/inpar/4C_inpar_bio.cpp b/src/fs3i/4C_fs3i_biofilm_fsi_input.cpp similarity index 93% rename from src/inpar/4C_inpar_bio.cpp rename to src/fs3i/4C_fs3i_biofilm_fsi_input.cpp index 17226857d3e..d87b4afacb5 100644 --- a/src/inpar/4C_inpar_bio.cpp +++ b/src/fs3i/4C_fs3i_biofilm_fsi_input.cpp @@ -5,14 +5,14 @@ // // SPDX-License-Identifier: LGPL-3.0-or-later -#include "4C_inpar_bio.hpp" +#include "4C_fs3i_biofilm_fsi_input.hpp" #include "4C_fem_condition_definition.hpp" #include "4C_io_input_spec_builders.hpp" FOUR_C_NAMESPACE_OPEN -Core::IO::InputSpec Inpar::BioFilm::valid_parameters() +Core::IO::InputSpec BioFilm::valid_parameters() { using namespace Core::IO::InputSpecBuilders; Core::IO::InputSpec spec = group("BIOFILM CONTROL", @@ -50,8 +50,7 @@ Core::IO::InputSpec Inpar::BioFilm::valid_parameters() -void Inpar::BioFilm::set_valid_conditions( - std::vector& condlist) +void BioFilm::set_valid_conditions(std::vector& condlist) { using namespace Core::IO::InputSpecBuilders; diff --git a/src/inpar/4C_inpar_bio.hpp b/src/fs3i/4C_fs3i_biofilm_fsi_input.hpp similarity index 60% rename from src/inpar/4C_inpar_bio.hpp rename to src/fs3i/4C_fs3i_biofilm_fsi_input.hpp index 406c3c4646f..e42e27d5732 100644 --- a/src/inpar/4C_inpar_bio.hpp +++ b/src/fs3i/4C_fs3i_biofilm_fsi_input.hpp @@ -5,8 +5,8 @@ // // SPDX-License-Identifier: LGPL-3.0-or-later -#ifndef FOUR_C_INPAR_BIO_HPP -#define FOUR_C_INPAR_BIO_HPP +#ifndef FOUR_C_FS3I_BIOFILM_FSI_INPUT_HPP +#define FOUR_C_FS3I_BIOFILM_FSI_INPUT_HPP #include "4C_config.hpp" @@ -22,18 +22,15 @@ namespace Core::Conditions class ConditionDefinition; } -namespace Inpar +namespace BioFilm { - namespace BioFilm - { - /// biofilm parameters - Core::IO::InputSpec valid_parameters(); + /// biofilm parameters + Core::IO::InputSpec valid_parameters(); - /// set specific biofilm conditions - void set_valid_conditions(std::vector& condlist); - } // namespace BioFilm + /// set specific biofilm conditions + void set_valid_conditions(std::vector& condlist); +} // namespace BioFilm -} // namespace Inpar /*----------------------------------------------------------------------*/ FOUR_C_NAMESPACE_CLOSE diff --git a/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp b/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp index e0d134325da..50ae2980787 100644 --- a/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp +++ b/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp @@ -19,8 +19,8 @@ #include "4C_elch_input.hpp" #include "4C_fem_condition_definition.hpp" #include "4C_fpsi_input.hpp" +#include "4C_fs3i_biofilm_fsi_input.hpp" #include "4C_fsi_input.hpp" -#include "4C_inpar_bio.hpp" #include "4C_inpar_cardiac_monodomain.hpp" #include "4C_inpar_fluid.hpp" #include "4C_inpar_s2i.hpp" @@ -836,7 +836,7 @@ std::vector Global::valid_conditions() FSI::set_valid_conditions(condlist); FPSI::set_valid_conditions(condlist); Inpar::XFEM::set_valid_conditions(condlist); - Inpar::BioFilm::set_valid_conditions(condlist); + BioFilm::set_valid_conditions(condlist); ArteryNetwork::set_valid_conditions(condlist); Airway::set_valid_conditions(condlist); Cardiovascular0DInput::set_valid_conditions(condlist); diff --git a/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp b/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp index f61f9da1c5d..4c718ea3840 100644 --- a/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp +++ b/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp @@ -25,11 +25,11 @@ #include "4C_fem_geometry_searchtree_input.hpp" #include "4C_fem_nurbs_discretization_knotvector.hpp" #include "4C_fpsi_input.hpp" +#include "4C_fs3i_biofilm_fsi_input.hpp" #include "4C_fs3i_input.hpp" #include "4C_fsi_input.hpp" #include "4C_geometric_search_input.hpp" #include "4C_global_legacy_module_problem_type_string.hpp" -#include "4C_inpar_bio.hpp" #include "4C_inpar_cardiac_monodomain.hpp" #include "4C_inpar_fluid.hpp" #include "4C_inpar_io.hpp" @@ -345,7 +345,7 @@ std::vector Global::valid_parameters() push_specs(specs, ArtDyn::valid_parameters()); push_specs(specs, ArteryNetwork::valid_parameters()); - push_specs(specs, Inpar::BioFilm::valid_parameters()); + push_specs(specs, BioFilm::valid_parameters()); push_specs(specs, Airway::valid_parameters()); push_specs(specs, ReducedLung::valid_parameters()); push_specs(specs, ReducedLung1dPipeFlow::valid_parameters()); diff --git a/src/red_airways/4C_red_airways_implicitintegration.cpp b/src/red_airways/4C_red_airways_implicitintegration.cpp index 1eb9af3cd6b..fda34593ee4 100644 --- a/src/red_airways/4C_red_airways_implicitintegration.cpp +++ b/src/red_airways/4C_red_airways_implicitintegration.cpp @@ -10,7 +10,6 @@ #include "4C_fem_condition_utils.hpp" #include "4C_fem_general_utils_createdis.hpp" #include "4C_global_data.hpp" -#include "4C_inpar_bio.hpp" #include "4C_io_control.hpp" #include "4C_linalg_utils_sparse_algebra_assemble.hpp" #include "4C_linalg_utils_sparse_algebra_create.hpp" From 104007bd4d6bb00d205453393f50969c4bdf0b30 Mon Sep 17 00:00:00 2001 From: Maximilian Ludwig Date: Fri, 27 Mar 2026 16:28:21 +0100 Subject: [PATCH 2/3] Move contact wear input from inpar physics --- src/contact/src/4C_contact_coupling2d.hpp | 10 +- src/contact/src/4C_contact_coupling3d.hpp | 6 +- src/contact/src/4C_contact_integrator.cpp | 124 +++++++++--------- src/contact/src/4C_contact_integrator.hpp | 16 +-- src/contact/src/4C_contact_interpolator.cpp | 24 ++-- src/contact/src/4C_contact_interpolator.hpp | 20 +-- .../src/4C_contact_lagrange_strategy_wear.cpp | 53 ++++---- src/contact/src/4C_contact_manager.cpp | 42 +++--- .../src/4C_contact_strategy_factory.cpp | 51 +++---- .../src/4C_contact_wear_input.cpp} | 4 +- src/contact/src/4C_contact_wear_input.hpp | 77 +++++++++++ src/contact/src/4C_contact_wear_interface.cpp | 24 ++-- src/contact/src/4C_contact_wear_interface.hpp | 6 +- ...C_global_legacy_module_validparameters.cpp | 4 +- src/inpar/4C_inpar_wear.hpp | 80 ----------- src/structure/4C_structure_timint_impl.cpp | 34 ++--- 16 files changed, 272 insertions(+), 303 deletions(-) rename src/{inpar/4C_inpar_wear.cpp => contact/src/4C_contact_wear_input.cpp} (97%) create mode 100644 src/contact/src/4C_contact_wear_input.hpp delete mode 100644 src/inpar/4C_inpar_wear.hpp diff --git a/src/contact/src/4C_contact_coupling2d.hpp b/src/contact/src/4C_contact_coupling2d.hpp index b5337b2fe3a..e957d0d56f4 100644 --- a/src/contact/src/4C_contact_coupling2d.hpp +++ b/src/contact/src/4C_contact_coupling2d.hpp @@ -11,7 +11,7 @@ #include "4C_config.hpp" #include "4C_contact_input.hpp" -#include "4C_inpar_wear.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_mortar_coupling2d.hpp" FOUR_C_NAMESPACE_OPEN @@ -59,18 +59,18 @@ namespace CONTACT \brief Return type of wear surface definition */ - Inpar::Wear::WearSide wear_side() const + Wear::WearSide wear_side() const { - return Teuchos::getIntegralValue(imortar_, "BOTH_SIDED_WEAR"); + return Teuchos::getIntegralValue(imortar_, "BOTH_SIDED_WEAR"); } /*! \brief Return type of wear surface definition */ - Inpar::Wear::WearType wear_type() const + Wear::WearType wear_type() const { - return Teuchos::getIntegralValue(imortar_, "WEARTYPE"); + return Teuchos::getIntegralValue(imortar_, "WEARTYPE"); } //@} diff --git a/src/contact/src/4C_contact_coupling3d.hpp b/src/contact/src/4C_contact_coupling3d.hpp index 4ccbbf3a282..a93bc08c6de 100644 --- a/src/contact/src/4C_contact_coupling3d.hpp +++ b/src/contact/src/4C_contact_coupling3d.hpp @@ -11,7 +11,7 @@ #include "4C_config.hpp" #include "4C_contact_input.hpp" -#include "4C_inpar_wear.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_mortar_coupling3d.hpp" FOUR_C_NAMESPACE_OPEN @@ -151,9 +151,9 @@ namespace CONTACT \brief Return type of wear surface definition */ - Inpar::Wear::WearType wear_type() const + Wear::WearType wear_type() const { - return Teuchos::getIntegralValue(imortar_, "WEARTYPE"); + return Teuchos::getIntegralValue(imortar_, "WEARTYPE"); } //@} diff --git a/src/contact/src/4C_contact_integrator.cpp b/src/contact/src/4C_contact_integrator.cpp index be4d037be3c..6c63b6599d8 100644 --- a/src/contact/src/4C_contact_integrator.cpp +++ b/src/contact/src/4C_contact_integrator.cpp @@ -14,9 +14,9 @@ #include "4C_contact_input.hpp" #include "4C_contact_node.hpp" #include "4C_contact_paramsinterface.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_fem_general_utils_boundary_integration.hpp" #include "4C_fem_general_utils_integration.hpp" -#include "4C_inpar_wear.hpp" #include "4C_linalg_serialdensematrix.hpp" #include "4C_linalg_serialdensevector.hpp" #include "4C_mat_structporo.hpp" @@ -43,11 +43,11 @@ CONTACT::Integrator::Integrator( algo_(Teuchos::getIntegralValue(imortar_, "ALGORITHM")), stype_(Teuchos::getIntegralValue(imortar_, "STRATEGY")), cppnormal_(imortar_.get("CPP_NORMALS")), - wearlaw_(Teuchos::getIntegralValue(imortar_, "WEARLAW")), + wearlaw_(Teuchos::getIntegralValue(imortar_, "WEARLAW")), wearimpl_(false), - wearside_(Inpar::Wear::wear_slave), - weartype_(Inpar::Wear::wear_intstate), - wearshapefcn_(Inpar::Wear::wear_shape_standard), + wearside_(Wear::wear_slave), + weartype_(Wear::wear_intstate), + wearshapefcn_(Wear::wear_shape_standard), sswear_(imortar_.get("SSWEAR")), wearcoeff_(-1.0), wearcoeffm_(-1.0), @@ -60,20 +60,20 @@ CONTACT::Integrator::Integrator( initialize_gp(eletype); // wear specific - if (wearlaw_ != Inpar::Wear::wear_none) + if (wearlaw_ != Wear::wear_none) { // set wear contact status - auto wtimint = Teuchos::getIntegralValue(params, "WEARTIMINT"); - if (wtimint == Inpar::Wear::wear_impl) wearimpl_ = true; + auto wtimint = Teuchos::getIntegralValue(params, "WEARTIMINT"); + if (wtimint == Wear::wear_impl) wearimpl_ = true; // wear surface - wearside_ = Teuchos::getIntegralValue(imortar_, "WEAR_SIDE"); + wearside_ = Teuchos::getIntegralValue(imortar_, "WEAR_SIDE"); // wear algorithm - weartype_ = Teuchos::getIntegralValue(imortar_, "WEARTYPE"); + weartype_ = Teuchos::getIntegralValue(imortar_, "WEARTYPE"); // wear shape function - wearshapefcn_ = Teuchos::getIntegralValue(imortar_, "WEAR_SHAPEFCN"); + wearshapefcn_ = Teuchos::getIntegralValue(imortar_, "WEAR_SHAPEFCN"); // wear coefficient wearcoeff_ = imortar_.get("WEARCOEFF"); @@ -3721,7 +3721,7 @@ void CONTACT::Integrator::integrate_deriv_cell_3d_aux_plane_quad(Mortar::Element // contact with wear bool wear = false; - if (wearlaw_ != Inpar::Wear::wear_none) wear = true; + if (wearlaw_ != Wear::wear_none) wear = true; // number of nodes (slave, master) int nrow = sele.num_node(); @@ -4111,7 +4111,7 @@ void CONTACT::Integrator::integrate_deriv_cell_3d_aux_plane_quad(Mortar::Element jumpval, &wearval, dsliptmatrixgp, dweargp, dsxigp, dmxigp, dnmap_unit, dualmap); // integrate T and E matrix for discr. wear - if (wear_type() == Inpar::Wear::wear_primvar) gp_te(sele, lmval, sval, jac, wgt, jumpval); + if (wear_type() == Wear::wear_primvar) gp_te(sele, lmval, sval, jac, wgt, jumpval); //******************************************************************** // compute cell linearization @@ -4142,7 +4142,7 @@ void CONTACT::Integrator::integrate_deriv_cell_3d_aux_plane_quad(Mortar::Element wgt, duallin, dgapgp, jacintcellmap, dpsxigp, dualmap, dualquad3d); // Lin wear matrices T and E for discr. wear - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) gp_3d_te_lin(iter, sele, sval, lmval, sderiv, lmderiv, jac, wgt, jumpval, dsxigp, jacintcellmap, dsliptmatrixgp, dualmap); } @@ -5715,7 +5715,7 @@ void CONTACT::Integrator::integrate_gp_3d(Mortar::Element& sele, Mortar::Element // WEAR stuff //******************************* // std. wear for all wear-algorithm types - if (wearlaw_ != Inpar::Wear::wear_none) + if (wearlaw_ != Wear::wear_none) { int linsize = 0; for (int i = 0; i < sele.num_node(); ++i) @@ -5734,16 +5734,16 @@ void CONTACT::Integrator::integrate_gp_3d(Mortar::Element& sele, Mortar::Element wgt, jumpval, &wearval, dsliptmatrixgp, dweargp, derivsxi, derivmxi, dnmap_unit, dualmap); - if (wear_type() == Inpar::Wear::wear_intstate and wearimpl_ == true) + if (wear_type() == Wear::wear_intstate and wearimpl_ == true) for (int j = 0; j < sele.num_node(); ++j) gp_3d_wear_lin(j, sele, sval, lmval, sderiv, lmderiv, jac, normal, wgt, wearval, jumpval, dweargp, derivjac, derivsxi, dualmap); // integrate T and E matrix for discr. wear - if (wear_type() == Inpar::Wear::wear_primvar) gp_te(sele, lmval, sval, jac, wgt, jumpval); + if (wear_type() == Wear::wear_primvar) gp_te(sele, lmval, sval, jac, wgt, jumpval); // both-sided discr wear specific stuff - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { Core::LinAlg::SerialDenseVector lm2val(mele.num_node()); Core::LinAlg::SerialDenseMatrix lm2deriv(mele.num_node(), n_dim() - 1, true); @@ -5753,7 +5753,7 @@ void CONTACT::Integrator::integrate_gp_3d(Mortar::Element& sele, Mortar::Element } // both-sided wear specific stuff - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_intstate) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_intstate) { Core::LinAlg::SerialDenseVector lm2val(mele.num_node()); Core::LinAlg::SerialDenseMatrix lm2deriv(mele.num_node(), 2, true); @@ -5763,14 +5763,14 @@ void CONTACT::Integrator::integrate_gp_3d(Mortar::Element& sele, Mortar::Element } // Lin wear matrices T and E for discr. wear - if (wearimpl_ == true and wear_type() == Inpar::Wear::wear_primvar) + if (wearimpl_ == true and wear_type() == Wear::wear_primvar) for (int j = 0; j < sele.num_node(); ++j) gp_3d_te_lin(j, sele, sval, lmval, sderiv, lmderiv, jac, wgt, jumpval, derivsxi, derivjac, dsliptmatrixgp, dualmap); - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar and + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar and wearimpl_ == true) { Core::LinAlg::SerialDenseVector lm2val(mele.num_node()); @@ -5907,7 +5907,7 @@ void CONTACT::Integrator::integrate_gp_2d(Mortar::Element& sele, Mortar::Element } // wear specific stuff - if (wearlaw_ != Inpar::Wear::wear_none) + if (wearlaw_ != Wear::wear_none) { // nodal Lagrange multiplier Core::LinAlg::SerialDenseMatrix lagmult(3, sele.num_node()); @@ -5931,10 +5931,10 @@ void CONTACT::Integrator::integrate_gp_2d(Mortar::Element& sele, Mortar::Element dualmap); // integrate T and E matrix for discr. wear - if (wear_type() == Inpar::Wear::wear_primvar) gp_te(sele, lmval, sval, jac, wgt, &jumpval); + if (wear_type() == Wear::wear_primvar) gp_te(sele, lmval, sval, jac, wgt, &jumpval); // both-sided discr wear specific stuff - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { Core::LinAlg::SerialDenseVector lm2val(mele.num_node()); Core::LinAlg::SerialDenseMatrix lm2deriv(mele.num_node(), n_dim() - 1, true); @@ -5944,7 +5944,7 @@ void CONTACT::Integrator::integrate_gp_2d(Mortar::Element& sele, Mortar::Element } // both-sided map wear specific stuff - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_intstate) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_intstate) { Core::LinAlg::SerialDenseVector lm2val(mele.num_node()); Core::LinAlg::SerialDenseMatrix lm2deriv(mele.num_node(), 2, true); @@ -5954,18 +5954,18 @@ void CONTACT::Integrator::integrate_gp_2d(Mortar::Element& sele, Mortar::Element } // Lin wear for impl. alg. - if (wearimpl_ == true and wear_type() == Inpar::Wear::wear_intstate) + if (wearimpl_ == true and wear_type() == Wear::wear_intstate) for (int j = 0; j < sele.num_node(); ++j) gp_2d_wear_lin(j, sele, sval, lmval, sderiv, lmderiv, jac, normal, wgt, wearval, &jumpval, dweargp, derivjac, derivsxi, dualmap); // Lin wear T and E matrix - if (wearimpl_ == true and wear_type() == Inpar::Wear::wear_primvar) + if (wearimpl_ == true and wear_type() == Wear::wear_primvar) for (int j = 0; j < sele.num_node(); ++j) gp_2d_te_lin(j, sele, sval, lmval, sderiv, lmderiv, jac, wgt, &jumpval, derivsxi, derivjac, dsliptmatrixgp, dualmap); - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar and + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar and wearimpl_ == true) { Core::LinAlg::SerialDenseVector lm2val(mele.num_node()); @@ -6529,7 +6529,7 @@ void CONTACT::Integrator::gap_3d(Mortar::Element& sele, Mortar::Element& mele, gpn[1] += sval[i] * mymrtrnode->mo_data().n()[1]; gpn[2] += sval[i] * mymrtrnode->mo_data().n()[2]; - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { FriNode* myfricnode = dynamic_cast(mymrtrnode); sgpx[0] += sval[i] * (sele.get_nodal_coords(0, i) - @@ -6550,7 +6550,7 @@ void CONTACT::Integrator::gap_3d(Mortar::Element& sele, Mortar::Element& mele, // build interpolation of master GP coordinates for (int i = 0; i < ncol; ++i) { - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { FriNode* masternode = dynamic_cast(mnodes[i]); @@ -6688,7 +6688,7 @@ void CONTACT::Integrator::gap_3d(Mortar::Element& sele, Mortar::Element& mele, // for wear as own discretization // lin slave nodes - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { for (int z = 0; z < nrow; ++z) { @@ -6748,7 +6748,7 @@ void CONTACT::Integrator::gap_3d(Mortar::Element& sele, Mortar::Element& mele, } // MASTER - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { for (int z = 0; z < ncol; ++z) { @@ -6853,7 +6853,7 @@ void CONTACT::Integrator::gap_2d(Mortar::Element& sele, Mortar::Element& mele, gpn[0] += sval[i] * mymrtrnode->mo_data().n()[0]; gpn[1] += sval[i] * mymrtrnode->mo_data().n()[1]; - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { FriNode* myfricnode = dynamic_cast(mymrtrnode); double w = myfricnode->wear_data().wcurr()[0] + myfricnode->wear_data().waccu()[0]; @@ -6870,7 +6870,7 @@ void CONTACT::Integrator::gap_2d(Mortar::Element& sele, Mortar::Element& mele, // build interpolation of master GP coordinates for (int i = 0; i < ncol; ++i) { - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { FriNode* mymrtrnodeM = dynamic_cast(mnodes[i]); double w = mymrtrnodeM->wear_data().wcurr()[0] + mymrtrnodeM->wear_data().waccu()[0]; @@ -6957,7 +6957,7 @@ void CONTACT::Integrator::gap_2d(Mortar::Element& sele, Mortar::Element& mele, // for wear as own discretization // slave nodes - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { for (int z = 0; z < nrow; ++z) { @@ -6997,7 +6997,7 @@ void CONTACT::Integrator::gap_2d(Mortar::Element& sele, Mortar::Element& mele, // ************************************************** // master nodes - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { for (int z = 0; z < ncol; ++z) { @@ -7077,7 +7077,7 @@ void inline CONTACT::Integrator::gp_3d_g_quad_pwlin(Mortar::Element& sele, gpn[1] += sval[i] * mymrtrnode->mo_data().n()[1]; gpn[2] += sval[i] * mymrtrnode->mo_data().n()[2]; - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { FriNode* myfrinode = dynamic_cast(snodes[i]); sgpx[0] += sval[i] * @@ -7098,7 +7098,7 @@ void inline CONTACT::Integrator::gp_3d_g_quad_pwlin(Mortar::Element& sele, // build interpolation of master GP coordinates for (int i = 0; i < ncol; ++i) { - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { FriNode* masternode = dynamic_cast(mnodes[i]); @@ -7249,7 +7249,7 @@ void inline CONTACT::Integrator::gp_3d_g_quad_pwlin(Mortar::Element& sele, // for wear as own discretization // lin slave nodes - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { for (int z = 0; z < nrow; ++z) { @@ -7297,7 +7297,7 @@ void inline CONTACT::Integrator::gp_3d_g_quad_pwlin(Mortar::Element& sele, } // MASTER - if (wear_side() == Inpar::Wear::wear_both and wear_type() == Inpar::Wear::wear_primvar) + if (wear_side() == Wear::wear_both and wear_type() == Wear::wear_primvar) { for (int z = 0; z < ncol; ++z) { @@ -7429,7 +7429,7 @@ void inline CONTACT::Integrator::gp_2d_g_lin(int& iter, Mortar::Element& sele, //**************************************************************** // LIN WEAR W.R.T. LM //**************************************************************** - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { // get master element nodes themselves const int ncol = mele.num_node(); @@ -7446,7 +7446,7 @@ void inline CONTACT::Integrator::gp_2d_g_lin(int& iter, Mortar::Element& sele, jac * wgt * lmval[iter] * (gpn[z] * sval[bl] * wearnode->mo_data().n()[z]); } - if (wear_side() == Inpar::Wear::wear_both) + if (wear_side() == Wear::wear_both) { for (int bl = 0; bl < ncol; ++bl) { @@ -7725,7 +7725,7 @@ void CONTACT::Integrator::gp_g_lin(int& iter, Mortar::Element& sele, Mortar::Ele //**************************************************************** // LIN WEAR W.R.T. W //**************************************************************** - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { std::map& dgwmmap = dynamic_cast(mymrtrnode)->data().get_deriv_gw(); @@ -7738,7 +7738,7 @@ void CONTACT::Integrator::gp_g_lin(int& iter, Mortar::Element& sele, Mortar::Ele jac * wgt * lmval[iter] * (gpn[z] * sval[bl] * wearnode->mo_data().n()[z]); } - if (wear_side() == Inpar::Wear::wear_both) + if (wear_side() == Wear::wear_both) { for (int bl = 0; bl < ncol; ++bl) { @@ -9623,7 +9623,7 @@ void inline CONTACT::Integrator::gp_2d_wear(Mortar::Element& sele, Mortar::Eleme // product // use non-abs value for implicit-wear algorithm // just for simple linear. maybe we change this in future - if (wearimpl_ and wear_type() != Inpar::Wear::wear_primvar) + if (wearimpl_ and wear_type() != Wear::wear_primvar) wearval[0] = (wearval[0]) * abs(jumpval[0]); else wearval[0] = abs(wearval[0]) * abs(jumpval[0]); @@ -9647,7 +9647,7 @@ void inline CONTACT::Integrator::gp_2d_wear(Mortar::Element& sele, Mortar::Eleme //**************************************************************** // linearization for implicit algorithms //**************************************************************** - if (wearimpl_ || wear_type() == Inpar::Wear::wear_primvar) + if (wearimpl_ || wear_type() == Wear::wear_primvar) { // evaluate the GP wear function derivatives Core::Gen::Pairedvector ddualgp_x(ndof * ncol + linsize); @@ -9989,7 +9989,7 @@ void inline CONTACT::Integrator::gp_3d_wear(Mortar::Element& sele, Mortar::Eleme } // linearization without lm weighting and jac. - if (wearimpl_ or wear_type() == Inpar::Wear::wear_primvar) + if (wearimpl_ or wear_type() == Wear::wear_primvar) { int linsize = 0; for (int i = 0; i < nrow; ++i) @@ -10145,7 +10145,7 @@ void inline CONTACT::Integrator::gp_3d_wear(Mortar::Element& sele, Mortar::Eleme // slip lin. for discrete wear // u/abs(u) * lin tang * jump - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { for (CI p = dt0.begin(); p != dt0.end(); ++p) dsliptmatrixgp[p->first] += absx * (p->second) * jumptan(0, 0); @@ -10300,7 +10300,7 @@ void inline CONTACT::Integrator::gp_3d_wear(Mortar::Element& sele, Mortar::Eleme // slip lin. for discrete wear // u/abs(u) * tang * lin jump - if (wear_type() == Inpar::Wear::wear_primvar) + if (wear_type() == Wear::wear_primvar) { for (CI p = lintan0.begin(); p != lintan0.end(); ++p) dsliptmatrixgp[p->first] += absx * (p->second) * jumptan(0, 0); @@ -10328,7 +10328,7 @@ void inline CONTACT::Integrator::gp_te(Mortar::Element& sele, int nrow = sele.num_node(); - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { for (int k = 0; k < nrow; ++k) { @@ -10350,7 +10350,7 @@ void inline CONTACT::Integrator::gp_te(Mortar::Element& sele, } } } - else if (wear_shape_fcn() == Inpar::Wear::wear_shape_dual) + else if (wear_shape_fcn() == Wear::wear_shape_dual) { for (int k = 0; k < nrow; ++k) { @@ -10402,7 +10402,7 @@ void inline CONTACT::Integrator::gp_te_master(Mortar::Element& sele, Mortar::Ele int nrow = mele.num_node(); int ncol = sele.num_node(); - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { for (int k = 0; k < nrow; ++k) { @@ -10431,7 +10431,7 @@ void inline CONTACT::Integrator::gp_te_master(Mortar::Element& sele, Mortar::Ele } } } - else if (wear_shape_fcn() == Inpar::Wear::wear_shape_dual) + else if (wear_shape_fcn() == Wear::wear_shape_dual) { for (int k = 0; k < nrow; ++k) { @@ -10498,7 +10498,7 @@ void inline CONTACT::Integrator::gp_2d_te_master_lin(int& iter, // like k Mortar::Node* mymrtrnode = dynamic_cast(mnodes[iter]); if (!mymrtrnode) FOUR_C_THROW("Null pointer!"); - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { // integrate LinT for (int j = 0; j < nrow; ++j) @@ -10590,8 +10590,7 @@ void inline CONTACT::Integrator::gp_2d_te_master_lin(int& iter, // like k for (CI p = dsxigp.begin(); p != dsxigp.end(); ++p) emmap_jk[p->first] += fac * (p->second); } // end integrate linE } - else if (wear_shape_fcn() == - Inpar::Wear::wear_shape_dual) //****************************************** + else if (wear_shape_fcn() == Wear::wear_shape_dual) //****************************************** { FOUR_C_THROW("Chosen shapefunctions 'wear_shape_dual' not supported!"); } @@ -10622,7 +10621,7 @@ void inline CONTACT::Integrator::gp_2d_te_lin(int& iter, Mortar::Element& sele, Mortar::Node* mymrtrnode = dynamic_cast(snodes[iter]); if (!mymrtrnode) FOUR_C_THROW("Null pointer!"); - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { // integrate LinT for (int j = 0; j < nrow; ++j) @@ -10700,8 +10699,7 @@ void inline CONTACT::Integrator::gp_2d_te_lin(int& iter, Mortar::Element& sele, emmap_jk[p->first] += fac * (p->second); } // end integrate linE } - else if (wear_shape_fcn() == - Inpar::Wear::wear_shape_dual) //****************************************** + else if (wear_shape_fcn() == Wear::wear_shape_dual) //****************************************** { // integrate LinT for (int j = 0; j < nrow; ++j) @@ -10821,7 +10819,7 @@ void inline CONTACT::Integrator::gp_3d_te_lin(int& iter, Mortar::Element& sele, Mortar::Node* mymrtrnode = dynamic_cast(snodes[iter]); if (!mymrtrnode) FOUR_C_THROW("Null pointer!"); - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { // integrate LinT for (int j = 0; j < nrow; ++j) @@ -10915,7 +10913,7 @@ void inline CONTACT::Integrator::gp_3d_te_lin(int& iter, Mortar::Element& sele, } // end integrate linE } - else if (wear_shape_fcn() == Inpar::Wear::wear_shape_dual) + else if (wear_shape_fcn() == Wear::wear_shape_dual) { // integrate LinT for (int j = 0; j < nrow; ++j) @@ -11073,7 +11071,7 @@ void inline CONTACT::Integrator::gp_3d_te_master_lin(int& iter, Mortar::Element& Mortar::Node* mymrtrnode = dynamic_cast(mnodes[iter]); if (!mymrtrnode) FOUR_C_THROW("Null pointer!"); - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { // integrate LinT for (int j = 0; j < nrow; ++j) @@ -11161,7 +11159,7 @@ void inline CONTACT::Integrator::gp_3d_te_master_lin(int& iter, Mortar::Element& //------------------------------------------------------------ //------------------------------------------------------------ //------------------------------------------------------------ - else if (wear_shape_fcn() == Inpar::Wear::wear_shape_dual) + else if (wear_shape_fcn() == Wear::wear_shape_dual) { // integrate LinT for (int j = 0; j < nrow; ++j) diff --git a/src/contact/src/4C_contact_integrator.hpp b/src/contact/src/4C_contact_integrator.hpp index 8e53f093027..a90aaf26d72 100644 --- a/src/contact/src/4C_contact_integrator.hpp +++ b/src/contact/src/4C_contact_integrator.hpp @@ -10,7 +10,7 @@ #include "4C_config.hpp" -#include "4C_inpar_wear.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_mortar_integrator.hpp" #include "4C_utils_pairedvector.hpp" @@ -805,19 +805,19 @@ namespace CONTACT \brief Return the Wear shape fcn type (wear weighting...) */ - Inpar::Wear::WearShape wear_shape_fcn() { return wearshapefcn_; } + Wear::WearShape wear_shape_fcn() { return wearshapefcn_; } /*! \brief Return type of wear surface definition */ - Inpar::Wear::WearSide wear_side() { return wearside_; } + Wear::WearSide wear_side() { return wearside_; } /*! \brief Return type of wear algorithm */ - Inpar::Wear::WearType wear_type() { return weartype_; } + Wear::WearType wear_type() { return weartype_; } /*! \brief Return the LM shape fcn type @@ -862,15 +862,15 @@ namespace CONTACT // wear inputs from parameter list //! type of wear law - Inpar::Wear::WearLaw wearlaw_; + Wear::WearLaw wearlaw_; //! flag for implicit wear algorithm bool wearimpl_; //! definition of wear surface - Inpar::Wear::WearSide wearside_; + Wear::WearSide wearside_; //! definition of contact wear algorithm - Inpar::Wear::WearType weartype_; + Wear::WearType weartype_; //! type of wear shape function - Inpar::Wear::WearShape wearshapefcn_; + Wear::WearShape wearshapefcn_; //! flag for steady state wear bool sswear_; //! wear coefficient diff --git a/src/contact/src/4C_contact_interpolator.cpp b/src/contact/src/4C_contact_interpolator.cpp index 3a022fe0dc1..df524c6672c 100644 --- a/src/contact/src/4C_contact_interpolator.cpp +++ b/src/contact/src/4C_contact_interpolator.cpp @@ -27,31 +27,31 @@ NTS::Interpolator::Interpolator(Teuchos::ParameterList& params, const int& dim) : iparams_(params), dim_(dim), pwslip_(iparams_.get("GP_SLIP_INCR")), - wearlaw_(Teuchos::getIntegralValue(iparams_, "WEARLAW")), + wearlaw_(Teuchos::getIntegralValue(iparams_, "WEARLAW")), wearimpl_(false), - wearside_(Inpar::Wear::wear_slave), - weartype_(Inpar::Wear::wear_intstate), - wearshapefcn_(Inpar::Wear::wear_shape_standard), + wearside_(Wear::wear_slave), + weartype_(Wear::wear_intstate), + wearshapefcn_(Wear::wear_shape_standard), wearcoeff_(-1.0), wearcoeffm_(-1.0), sswear_(iparams_.get("SSWEAR")), ssslip_(iparams_.get("SSSLIP")) { // wear specific - if (wearlaw_ != Inpar::Wear::wear_none) + if (wearlaw_ != Wear::wear_none) { // wear time integration - auto wtimint = Teuchos::getIntegralValue(params, "WEARTIMINT"); - if (wtimint == Inpar::Wear::wear_impl) wearimpl_ = true; + auto wtimint = Teuchos::getIntegralValue(params, "WEARTIMINT"); + if (wtimint == Wear::wear_impl) wearimpl_ = true; // wear surface - wearside_ = Teuchos::getIntegralValue(iparams_, "BOTH_SIDED_WEAR"); + wearside_ = Teuchos::getIntegralValue(iparams_, "BOTH_SIDED_WEAR"); // wear algorithm - weartype_ = Teuchos::getIntegralValue(iparams_, "WEARTYPE"); + weartype_ = Teuchos::getIntegralValue(iparams_, "WEARTYPE"); // wear shape function - wearshapefcn_ = Teuchos::getIntegralValue(iparams_, "WEAR_SHAPEFCN"); + wearshapefcn_ = Teuchos::getIntegralValue(iparams_, "WEAR_SHAPEFCN"); // wear coefficient wearcoeff_ = iparams_.get("WEARCOEFF"); @@ -217,7 +217,7 @@ void NTS::Interpolator::interpolate_2d(Mortar::Node& snode, std::vector 1e-12) + if ((wearimpl_ || weartype_ == Wear::wear_primvar) and abs(jumpval) > 1e-12) { // lin. abs(x) = x/abs(x) * lin x. double xabsx = (jumpval / abs(jumpval)) * lm_lin; diff --git a/src/contact/src/4C_contact_interpolator.hpp b/src/contact/src/4C_contact_interpolator.hpp index 8411d9fc346..24b8df4af99 100644 --- a/src/contact/src/4C_contact_interpolator.hpp +++ b/src/contact/src/4C_contact_interpolator.hpp @@ -13,8 +13,8 @@ *---------------------------------------------------------------------*/ #include "4C_config.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_fem_general_utils_local_connectivity_matrices.hpp" -#include "4C_inpar_wear.hpp" #include "4C_utils_pairedvector.hpp" #include "4C_utils_singleton_owner.hpp" @@ -176,15 +176,15 @@ namespace NTS bool pwslip_; //< point-wise evaluated slip increment // wear inputs from parameter list - Inpar::Wear::WearLaw wearlaw_; //< type of wear law - bool wearimpl_; //< flag for implicit wear algorithm - Inpar::Wear::WearSide wearside_; //< definition of wear surface - Inpar::Wear::WearType weartype_; //< definition of contact wear algorithm - Inpar::Wear::WearShape wearshapefcn_; //< type of wear shape function - double wearcoeff_; //< wear coefficient - double wearcoeffm_; //< wear coefficient master - bool sswear_; //< flag for steady state wear - double ssslip_; //< fixed slip for steady state wear + Wear::WearLaw wearlaw_; //< type of wear law + bool wearimpl_; //< flag for implicit wear algorithm + Wear::WearSide wearside_; //< definition of wear surface + Wear::WearType weartype_; //< definition of contact wear algorithm + Wear::WearShape wearshapefcn_; //< type of wear shape function + double wearcoeff_; //< wear coefficient + double wearcoeffm_; //< wear coefficient master + bool sswear_; //< flag for steady state wear + double ssslip_; //< fixed slip for steady state wear }; diff --git a/src/contact/src/4C_contact_lagrange_strategy_wear.cpp b/src/contact/src/4C_contact_lagrange_strategy_wear.cpp index 13530a43722..541592270c0 100644 --- a/src/contact/src/4C_contact_lagrange_strategy_wear.cpp +++ b/src/contact/src/4C_contact_lagrange_strategy_wear.cpp @@ -13,10 +13,10 @@ #include "4C_contact_input.hpp" #include "4C_contact_interface.hpp" #include "4C_contact_lagrange_strategy.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_contact_wear_interface.hpp" #include "4C_fem_discretization.hpp" #include "4C_global_data.hpp" -#include "4C_inpar_wear.hpp" #include "4C_io.hpp" #include "4C_linalg_fevector.hpp" #include "4C_linalg_utils_densematrix_communication.hpp" @@ -57,31 +57,30 @@ Wear::LagrangeStrategyWear::LagrangeStrategyWear( // set wear contact status auto wtype = - Teuchos::getIntegralValue(LagrangeStrategyWear::params(), "WEARTYPE"); + Teuchos::getIntegralValue(LagrangeStrategyWear::params(), "WEARTYPE"); auto wside = - Teuchos::getIntegralValue(LagrangeStrategyWear::params(), "WEAR_SIDE"); - auto wtime = Teuchos::getIntegralValue( + Teuchos::getIntegralValue(LagrangeStrategyWear::params(), "WEAR_SIDE"); + auto wtime = Teuchos::getIntegralValue( LagrangeStrategyWear::params(), "WEAR_TIMESCALE"); - auto wtimint = Teuchos::getIntegralValue( - LagrangeStrategyWear::params(), "WEARTIMINT"); - auto wlaw = - Teuchos::getIntegralValue(LagrangeStrategyWear::params(), "WEARLAW"); + auto wtimint = + Teuchos::getIntegralValue(LagrangeStrategyWear::params(), "WEARTIMINT"); + auto wlaw = Teuchos::getIntegralValue(LagrangeStrategyWear::params(), "WEARLAW"); // set wear contact status - if (wlaw != Inpar::Wear::wear_none and wtype == Inpar::Wear::wear_intstate) weightedwear_ = true; + if (wlaw != Wear::wear_none and wtype == Wear::wear_intstate) weightedwear_ = true; // discrete both-sided wear for active set output - if (wside == Inpar::Wear::wear_both and wtype == Inpar::Wear::wear_primvar) wbothpv_ = true; - if (wtimint == Inpar::Wear::wear_impl) wearimpl_ = true; + if (wside == Wear::wear_both and wtype == Wear::wear_primvar) wbothpv_ = true; + if (wtimint == Wear::wear_impl) wearimpl_ = true; // set wear contact discretization - if (wtype == Inpar::Wear::wear_primvar) wearprimvar_ = true; + if (wtype == Wear::wear_primvar) wearprimvar_ = true; // both sided wear for discrete wear - if (wside == Inpar::Wear::wear_both and wtype == Inpar::Wear::wear_primvar) wearbothpv_ = true; + if (wside == Wear::wear_both and wtype == Wear::wear_primvar) wearbothpv_ = true; // different wear timescales? - if (wtime == Inpar::Wear::wear_time_different) weartimescales_ = true; + if (wtime == Wear::wear_time_different) weartimescales_ = true; return; } @@ -197,8 +196,7 @@ void Wear::LagrangeStrategyWear::setup_wear(bool redistributed, bool init) // **************************************************** // both-sided wear specific // **************************************************** - if (Teuchos::getIntegralValue(params(), "WEAR_SIDE") == - Inpar::Wear::wear_both and + if (Teuchos::getIntegralValue(params(), "WEAR_SIDE") == Wear::wear_both and wearprimvar_ == false) { gminvolvednodes_ = @@ -401,8 +399,7 @@ void Wear::LagrangeStrategyWear::assemble_mortar() // only assemble D2 for both-sided wear --> unweights the // weighted wear increment in master side // --> based on weak dirichlet bc! - if (Teuchos::getIntegralValue(params(), "WEAR_SIDE") == - Inpar::Wear::wear_both and + if (Teuchos::getIntegralValue(params(), "WEAR_SIDE") == Wear::wear_both and !wearprimvar_) interface_[i]->assemble_d2(*d2matrix_); @@ -1570,12 +1567,12 @@ void Wear::LagrangeStrategyWear::condense_wear_discr( std::shared_ptr>& feff, Core::LinAlg::Vector& gact) { auto shapefcn = Teuchos::getIntegralValue(params(), "LM_SHAPEFCN"); - auto wearshapefcn = Teuchos::getIntegralValue(params(), "WEAR_SHAPEFCN"); + auto wearshapefcn = Teuchos::getIntegralValue(params(), "WEAR_SHAPEFCN"); // double-check if this is a dual LM system if (shapefcn != Mortar::shape_dual && shapefcn != Mortar::shape_petrovgalerkin) FOUR_C_THROW("Condensation only for dual LM"); - if (wearshapefcn != Inpar::Wear::wear_shape_dual) FOUR_C_THROW("Condensation only for dual wear"); + if (wearshapefcn != Wear::wear_shape_dual) FOUR_C_THROW("Condensation only for dual wear"); // get stick map std::shared_ptr gstickt = Core::LinAlg::split_map(*gactivet_, *gslipt_); @@ -2674,7 +2671,7 @@ void Wear::LagrangeStrategyWear::evaluate_friction( auto systype = Teuchos::getIntegralValue(params(), "SYSTEM"); // get wear shapefunction type - auto wearshapefcn = Teuchos::getIntegralValue(params(), "WEAR_SHAPEFCN"); + auto wearshapefcn = Teuchos::getIntegralValue(params(), "WEAR_SHAPEFCN"); /**********************************************************************/ /* export weighted gap vector to gactiveN-map */ @@ -2799,9 +2796,9 @@ void Wear::LagrangeStrategyWear::evaluate_friction( // steady state scenario if (sswear_) { - if (wearshapefcn == Inpar::Wear::wear_shape_dual) + if (wearshapefcn == Wear::wear_shape_dual) ematrix_->complete(*gactiven_, *gactiven_); // quadr. matrix --> for dual shapes --> diag. - else if (wearshapefcn == Inpar::Wear::wear_shape_standard) + else if (wearshapefcn == Wear::wear_shape_standard) ematrix_->complete( *gsdofnrowmap_, *gactiven_); // quadr. matrix --> for dual shapes --> diag. else @@ -2816,9 +2813,9 @@ void Wear::LagrangeStrategyWear::evaluate_friction( // general scenario else { - if (wearshapefcn == Inpar::Wear::wear_shape_dual) + if (wearshapefcn == Wear::wear_shape_dual) ematrix_->complete(*gslipn_, *gslipn_); // quadr. matrix --> for dual shapes --> diag. - else if (wearshapefcn == Inpar::Wear::wear_shape_standard) + else if (wearshapefcn == Wear::wear_shape_standard) ematrix_->complete( *gsdofnrowmap_, *gslipn_); // quadr. matrix --> for dual shapes --> diag. else @@ -4235,8 +4232,7 @@ void Wear::LagrangeStrategyWear::output_wear() * unweight the resulting vector by D_2^-1*w_2~ and get the final * unweighted wear vector. **********************************************************************/ - if (Teuchos::getIntegralValue(params(), "WEAR_SIDE") == - Inpar::Wear::wear_both) + if (Teuchos::getIntegralValue(params(), "WEAR_SIDE") == Wear::wear_both) { // different wear coefficients on both sides... double wearcoeff_s = params().get("WEARCOEFF", 0.0); @@ -4984,8 +4980,7 @@ void Wear::LagrangeStrategyWear::update_active_set_semi_smooth(const bool firstS for (int i = 0; i < (int)interface_.size(); ++i) { // for both-sided wear - if (Teuchos::getIntegralValue(scontact_, "WEAR_SIDE") == - Inpar::Wear::wear_both and + if (Teuchos::getIntegralValue(scontact_, "WEAR_SIDE") == Wear::wear_both and wearprimvar_ == false) { gminvolvednodes_ = diff --git a/src/contact/src/4C_contact_manager.cpp b/src/contact/src/4C_contact_manager.cpp index 80f68b9cc20..25729ca0630 100644 --- a/src/contact/src/4C_contact_manager.cpp +++ b/src/contact/src/4C_contact_manager.cpp @@ -25,10 +25,10 @@ #include "4C_contact_strategy_factory.hpp" #include "4C_contact_utils.hpp" #include "4C_contact_utils_parallel.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_contact_wear_interface.hpp" #include "4C_fem_discretization.hpp" #include "4C_global_data.hpp" -#include "4C_inpar_wear.hpp" #include "4C_io.hpp" #include "4C_io_control.hpp" #include "4C_io_input_parameter_container.hpp" @@ -107,8 +107,8 @@ CONTACT::Manager::Manager(Core::FE::Discretization& discret, double alphaf) // get input parameters auto stype = Teuchos::getIntegralValue(contactParams, "STRATEGY"); - auto wearLaw = Teuchos::getIntegralValue(contactParams, "WEARLAW"); - auto wearType = Teuchos::getIntegralValue(contactParams, "WEARTYPE"); + auto wearLaw = Teuchos::getIntegralValue(contactParams, "WEARLAW"); + auto wearType = Teuchos::getIntegralValue(contactParams, "WEARTYPE"); auto constr_direction = Teuchos::getIntegralValue( contactParams, "CONSTRAINT_DIRECTIONS"); auto frictionType = Teuchos::getIntegralValue(contactParams, "FRICTION"); @@ -117,7 +117,7 @@ CONTACT::Manager::Manager(Core::FE::Discretization& discret, double alphaf) auto algo = Teuchos::getIntegralValue(contactParams, "ALGORITHM"); bool friplus = false; - if ((wearLaw != Inpar::Wear::wear_none) || + if ((wearLaw != Wear::wear_none) || (contactParams.get("PROBTYPE") == CONTACT::Problemtype::tsi)) friplus = true; @@ -551,8 +551,8 @@ CONTACT::Manager::Manager(Core::FE::Discretization& discret, double alphaf) std::make_shared(); // create LagrangeStrategyWear for wear as non-distinct quantity - if (stype == CONTACT::SolvingStrategy::lagmult && wearLaw != Inpar::Wear::wear_none && - (wearType == Inpar::Wear::wear_intstate || wearType == Inpar::Wear::wear_primvar)) + if (stype == CONTACT::SolvingStrategy::lagmult && wearLaw != Wear::wear_none && + (wearType == Wear::wear_intstate || wearType == Wear::wear_primvar)) { strategy_ = std::make_shared(data_ptr, discret.dof_row_map(), discret.node_row_map(), contactParams, interfaces, dim, comm_, alphaf, maxdof); @@ -729,8 +729,7 @@ bool CONTACT::Manager::read_and_check_input(Teuchos::ParameterList& cparams) con // ********************************************************************* if (Teuchos::getIntegralValue(contact, "ADHESION") != CONTACT::AdhesionType::none and - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("Adhesion combined with wear not yet tested!"); if (Teuchos::getIntegralValue(contact, "ADHESION") != @@ -814,8 +813,7 @@ bool CONTACT::Manager::read_and_check_input(Teuchos::ParameterList& cparams) con std::cout << ("Warning: Contact search called without inflation of bounding volumes\n") << std::endl; - if (Teuchos::getIntegralValue(wearlist, "WEAR_SIDE") != - Inpar::Wear::wear_slave) + if (Teuchos::getIntegralValue(wearlist, "WEAR_SIDE") != Wear::wear_slave) std::cout << ("\n \n Warning: Contact with both-sided wear is still experimental !") << std::endl; @@ -900,8 +898,7 @@ bool CONTACT::Manager::read_and_check_input(Teuchos::ParameterList& cparams) con FOUR_C_THROW( "For initialization of init contact with gap, the INITCONTACTGAPVALUE is needed."); - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none && + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none && contact.get("FRLESS_FIRST")) FOUR_C_THROW("Frictionless first contact step with wear not yet implemented"); @@ -928,35 +925,29 @@ bool CONTACT::Manager::read_and_check_input(Teuchos::ParameterList& cparams) con // ********************************************************************* // contact with wear // ********************************************************************* - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") == - Inpar::Wear::wear_none && + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") == Wear::wear_none && wearlist.get("WEARCOEFF") != 0.0) FOUR_C_THROW("Wear coefficient only necessary in the context of wear."); if (problemtype == Core::ProblemType::structure and - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none and - Teuchos::getIntegralValue(wearlist, "WEARTIMINT") != - Inpar::Wear::wear_expl) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none and + Teuchos::getIntegralValue(wearlist, "WEARTIMINT") != Wear::wear_expl) FOUR_C_THROW( "Wear calculation for pure structure problems only with explicit internal state " "variable approach reasonable!"); if (Teuchos::getIntegralValue(contact, "FRICTION") == CONTACT::FrictionType::none && - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("Wear models only applicable to frictional contact."); - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none && + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none && wearlist.get("WEARCOEFF") <= 0.0) FOUR_C_THROW("No valid wear coefficient provided, must be equal or greater 0.0"); if (Teuchos::getIntegralValue(contact, "FRICTION") == CONTACT::FrictionType::tresca && - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("Wear only for Coulomb friction!"); // ********************************************************************* @@ -1071,8 +1062,7 @@ bool CONTACT::Manager::read_and_check_input(Teuchos::ParameterList& cparams) con "GPTS algorithm only tested for structural, FSI-CutFEM, FPSI-CutFEM, and " "poroelastic problems"); - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("GPTS algorithm not implemented for wear"); } // END GPTS CHECKS diff --git a/src/contact/src/4C_contact_strategy_factory.cpp b/src/contact/src/4C_contact_strategy_factory.cpp index 6f2294d44d2..f454b786fc3 100644 --- a/src/contact/src/4C_contact_strategy_factory.cpp +++ b/src/contact/src/4C_contact_strategy_factory.cpp @@ -24,11 +24,11 @@ #include "4C_contact_rough_node.hpp" #include "4C_contact_tsi_interface.hpp" #include "4C_contact_utils.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_contact_wear_interface.hpp" #include "4C_fem_discretization.hpp" #include "4C_global_data.hpp" #include "4C_inpar_s2i.hpp" -#include "4C_inpar_wear.hpp" #include "4C_io.hpp" #include "4C_io_pstream.hpp" #include "4C_linalg_utils_sparse_algebra_math.hpp" @@ -135,8 +135,7 @@ void CONTACT::STRATEGY::Factory::read_and_check_input(Teuchos::ParameterList& pa // --------------------------------------------------------------------- if (Teuchos::getIntegralValue(contact, "ADHESION") != CONTACT::AdhesionType::none and - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("Adhesion combined with wear not yet tested!"); if (Teuchos::getIntegralValue(contact, "ADHESION") != @@ -222,8 +221,7 @@ void CONTACT::STRATEGY::Factory::read_and_check_input(Teuchos::ParameterList& pa std::cout << ("Warning: Contact search called without inflation of bounding volumes\n") << std::endl; - if (Teuchos::getIntegralValue(wearlist, "WEAR_SIDE") != - Inpar::Wear::wear_slave) + if (Teuchos::getIntegralValue(wearlist, "WEAR_SIDE") != Wear::wear_slave) std::cout << ("\n \n Warning: Contact with both-sided wear is still experimental !") << std::endl; } @@ -313,8 +311,7 @@ void CONTACT::STRATEGY::Factory::read_and_check_input(Teuchos::ParameterList& pa "functions or NURBS."); } - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none && + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none && contact.get("FRLESS_FIRST")) FOUR_C_THROW("Frictionless first contact step with wear not yet implemented"); @@ -344,16 +341,13 @@ void CONTACT::STRATEGY::Factory::read_and_check_input(Teuchos::ParameterList& pa // --------------------------------------------------------------------- // contact with wear // --------------------------------------------------------------------- - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") == - Inpar::Wear::wear_none && + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") == Wear::wear_none && wearlist.get("WEARCOEFF") != 0.0) FOUR_C_THROW("Wear coefficient only necessary in the context of wear."); if (problemtype == Core::ProblemType::structure and - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none and - Teuchos::getIntegralValue(wearlist, "WEARTIMINT") != - Inpar::Wear::wear_expl) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none and + Teuchos::getIntegralValue(wearlist, "WEARTIMINT") != Wear::wear_expl) { FOUR_C_THROW( "Wear calculation for pure structure problems only with explicit internal state " @@ -362,25 +356,21 @@ void CONTACT::STRATEGY::Factory::read_and_check_input(Teuchos::ParameterList& pa if (Teuchos::getIntegralValue(contact, "FRICTION") == CONTACT::FrictionType::none && - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("Wear models only applicable to frictional contact."); - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none && + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none && wearlist.get("WEARCOEFF") <= 0.0) FOUR_C_THROW("No valid wear coefficient provided, must be equal or greater 0.0"); if (Teuchos::getIntegralValue(contact, "STRATEGY") != CONTACT::SolvingStrategy::lagmult && - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("Wear model only applicable in combination with Lagrange multiplier strategy."); if (Teuchos::getIntegralValue(contact, "FRICTION") == CONTACT::FrictionType::tresca && - Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("Wear only for Coulomb friction!"); // --------------------------------------------------------------------- @@ -493,8 +483,7 @@ void CONTACT::STRATEGY::Factory::read_and_check_input(Teuchos::ParameterList& pa if (contact.get("PENALTYPARAM") <= 0.0) FOUR_C_THROW("Penalty parameter eps = 0, must be greater than 0"); - if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != - Inpar::Wear::wear_none) + if (Teuchos::getIntegralValue(wearlist, "WEARLAW") != Wear::wear_none) FOUR_C_THROW("GPTS algorithm not implemented for wear"); if (Teuchos::getIntegralValue(mortar, "LM_QUAD") != @@ -692,7 +681,7 @@ void CONTACT::STRATEGY::Factory::build_interfaces(const Teuchos::ParameterList& // get input par. auto stype = Teuchos::getIntegralValue(params, "STRATEGY"); - auto wlaw = Teuchos::getIntegralValue(params, "WEARLAW"); + auto wlaw = Teuchos::getIntegralValue(params, "WEARLAW"); auto constr_direction = Teuchos::getIntegralValue(params, "CONSTRAINT_DIRECTIONS"); auto ftype = Teuchos::getIntegralValue(params, "FRICTION"); @@ -700,7 +689,7 @@ void CONTACT::STRATEGY::Factory::build_interfaces(const Teuchos::ParameterList& auto algo = Teuchos::getIntegralValue(params, "ALGORITHM"); bool friplus = false; - if ((wlaw != Inpar::Wear::wear_none) || + if ((wlaw != Wear::wear_none) || (params.get("PROBTYPE") == CONTACT::Problemtype::tsi)) friplus = true; @@ -1310,7 +1299,7 @@ std::shared_ptr CONTACT::STRATEGY::Factory::create_interface { std::shared_ptr newinterface = nullptr; - auto wlaw = Teuchos::getIntegralValue(icparams, "WEARLAW"); + auto wlaw = Teuchos::getIntegralValue(icparams, "WEARLAW"); switch (stype) { @@ -1326,7 +1315,7 @@ std::shared_ptr CONTACT::STRATEGY::Factory::create_interface { interface_data_ptr = std::make_shared(); - if (wlaw != Inpar::Wear::wear_none) + if (wlaw != Wear::wear_none) { newinterface = std::make_shared( interface_data_ptr, id, comm, dim, icparams, selfcontact); @@ -1568,8 +1557,8 @@ std::shared_ptr CONTACT::STRATEGY::Factory::build_str std::shared_ptr strategy_ptr = nullptr; // get input par. - auto wlaw = Teuchos::getIntegralValue(params, "WEARLAW"); - auto wtype = Teuchos::getIntegralValue(params, "WEARTYPE"); + auto wlaw = Teuchos::getIntegralValue(params, "WEARLAW"); + auto wtype = Teuchos::getIntegralValue(params, "WEARTYPE"); auto algo = Teuchos::getIntegralValue(params, "ALGORITHM"); // Set dummy parameter. The correct parameter will be read directly from time integrator. We still @@ -1578,8 +1567,8 @@ std::shared_ptr CONTACT::STRATEGY::Factory::build_str double dummy = -1.0; // create LagrangeStrategyWear for wear as non-distinct quantity - if (stype == CONTACT::SolvingStrategy::lagmult && wlaw != Inpar::Wear::wear_none && - (wtype == Inpar::Wear::wear_intstate || wtype == Inpar::Wear::wear_primvar)) + if (stype == CONTACT::SolvingStrategy::lagmult && wlaw != Wear::wear_none && + (wtype == Wear::wear_intstate || wtype == Wear::wear_primvar)) { data_ptr = std::make_shared(); strategy_ptr = std::make_shared( diff --git a/src/inpar/4C_inpar_wear.cpp b/src/contact/src/4C_contact_wear_input.cpp similarity index 97% rename from src/inpar/4C_inpar_wear.cpp rename to src/contact/src/4C_contact_wear_input.cpp index fcf49f785de..574ad8dbf33 100644 --- a/src/inpar/4C_inpar_wear.cpp +++ b/src/contact/src/4C_contact_wear_input.cpp @@ -5,14 +5,14 @@ // // SPDX-License-Identifier: LGPL-3.0-or-later -#include "4C_inpar_wear.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_io_input_spec_builders.hpp" FOUR_C_NAMESPACE_OPEN -Core::IO::InputSpec Inpar::Wear::valid_parameters() +Core::IO::InputSpec Wear::valid_parameters() { using namespace Core::IO::InputSpecBuilders; diff --git a/src/contact/src/4C_contact_wear_input.hpp b/src/contact/src/4C_contact_wear_input.hpp new file mode 100644 index 00000000000..6a334667487 --- /dev/null +++ b/src/contact/src/4C_contact_wear_input.hpp @@ -0,0 +1,77 @@ +// This file is part of 4C multiphysics licensed under the +// GNU Lesser General Public License v3.0 or later. +// +// See the LICENSE.md file in the top-level for license information. +// +// SPDX-License-Identifier: LGPL-3.0-or-later + +#ifndef FOUR_C_CONTACT_WEAR_INPUT_HPP +#define FOUR_C_CONTACT_WEAR_INPUT_HPP + +#include "4C_config.hpp" + +#include "4C_io_input_spec.hpp" + + +FOUR_C_NAMESPACE_OPEN + +/*----------------------------------------------------------------------*/ +namespace Wear +{ + /// Type of contact wear law + /// (this enum represents the input file parameter WEARLAW) + enum WearLaw + { + wear_none, ///< no wear + wear_archard ///< Archard wear law + }; + + /// Definition of contact wear surface + /// (this enum represents the input file parameter WEAR_SIDE) + enum WearSide + { + wear_slave, ///< wear on slave side + wear_both ///< slave and master wear + }; + + /// Definition of contact wear algorithm + /// (this enum represents the input file parameter WEARTYPE) + enum WearType + { + wear_intstate, ///< internal state variable approach for wear + wear_primvar ///< primary variable approach for wear + }; + + /// Definition of wear time integration + /// (this enum represents the input file parameter WEARTIMINT) + enum WearTimInt + { + wear_expl, ///< explicit time integration + wear_impl ///< implicit time integration + }; + + /// Definition of wear shape functions (necessary for prim. var. approach) + /// (this enum represents the input file parameter WEAR_SHAPEFCN) + enum WearShape + { + wear_shape_dual, ///< dual shape functions allowing for condensation + wear_shape_standard ///< std. shape functions + }; + + /// Definition of wear-ALE time scale coupling algorithm + /// (this enum represents the input file parameter WEAR_TIMESCALE) + enum WearTimeScale + { + wear_time_equal, ///< shape evolution step after each structural step + wear_time_different ///< shape evolution for accumulated wear after predefined structural + ///< steps + }; + + /// wear parameters + Core::IO::InputSpec valid_parameters(); +} // namespace Wear + +/*----------------------------------------------------------------------*/ +FOUR_C_NAMESPACE_CLOSE + +#endif diff --git a/src/contact/src/4C_contact_wear_interface.cpp b/src/contact/src/4C_contact_wear_interface.cpp index a9875546101..f588db6492f 100644 --- a/src/contact/src/4C_contact_wear_interface.cpp +++ b/src/contact/src/4C_contact_wear_interface.cpp @@ -40,23 +40,23 @@ Wear::WearInterface::WearInterface( sswear_(icontact.get("SSWEAR")) { // set wear contact status - auto wtype = Teuchos::getIntegralValue(icontact, "WEARTYPE"); + auto wtype = Teuchos::getIntegralValue(icontact, "WEARTYPE"); - auto wtimint = Teuchos::getIntegralValue(icontact, "WEARTIMINT"); + auto wtimint = Teuchos::getIntegralValue(icontact, "WEARTIMINT"); - auto wside = Teuchos::getIntegralValue(icontact, "WEAR_SIDE"); + auto wside = Teuchos::getIntegralValue(icontact, "WEAR_SIDE"); - auto wlaw = Teuchos::getIntegralValue(icontact, "WEARLAW"); + auto wlaw = Teuchos::getIntegralValue(icontact, "WEARLAW"); - if (wlaw != Inpar::Wear::wear_none) wear_ = true; + if (wlaw != Wear::wear_none) wear_ = true; - if (wtimint == Inpar::Wear::wear_impl) wearimpl_ = true; + if (wtimint == Wear::wear_impl) wearimpl_ = true; // set wear contact discretization - if (wtype == Inpar::Wear::wear_primvar) wearpv_ = true; + if (wtype == Wear::wear_primvar) wearpv_ = true; // set wear contact discretization - if (wside == Inpar::Wear::wear_both) wearboth_ = true; + if (wside == Wear::wear_both) wearboth_ = true; return; } @@ -148,12 +148,12 @@ void Wear::WearInterface::assemble_te( double val = colcurr->second; // do not assemble zeros into m matrix - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { if (abs(val) > 1.0e-12) eglobal.assemble(val, row, col); ++k; } - else if (wear_shape_fcn() == Inpar::Wear::wear_shape_dual) + else if (wear_shape_fcn() == Wear::wear_shape_dual) { if (col == row) if (abs(val) > 1.0e-12) eglobal.assemble(val, row, col); @@ -257,12 +257,12 @@ void Wear::WearInterface::assemble_te_master( double val = colcurr->second; // do not assemble zeros into m matrix - if (wear_shape_fcn() == Inpar::Wear::wear_shape_standard) + if (wear_shape_fcn() == Wear::wear_shape_standard) { if (abs(val) > 1.0e-12) eglobal.fe_assemble(val, row, col); ++k; } - else if (wear_shape_fcn() == Inpar::Wear::wear_shape_dual) + else if (wear_shape_fcn() == Wear::wear_shape_dual) { if (col == row) if (abs(val) > 1.0e-12) eglobal.fe_assemble(val, row, col); diff --git a/src/contact/src/4C_contact_wear_interface.hpp b/src/contact/src/4C_contact_wear_interface.hpp index e7ed6b239d2..e58bfab2caa 100644 --- a/src/contact/src/4C_contact_wear_interface.hpp +++ b/src/contact/src/4C_contact_wear_interface.hpp @@ -12,7 +12,7 @@ #include "4C_contact_input.hpp" #include "4C_contact_interface.hpp" -#include "4C_inpar_wear.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_linalg_fevector.hpp" FOUR_C_NAMESPACE_OPEN @@ -420,9 +420,9 @@ namespace Wear \brief Get type of wear shapefnct */ - Inpar::Wear::WearShape wear_shape_fcn() + Wear::WearShape wear_shape_fcn() { - return Teuchos::getIntegralValue(imortar_, "WEAR_SHAPEFCN"); + return Teuchos::getIntegralValue(imortar_, "WEAR_SHAPEFCN"); } private: diff --git a/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp b/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp index 4c718ea3840..26b75c30b20 100644 --- a/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp +++ b/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp @@ -16,6 +16,7 @@ #include "4C_cardiovascular0d_input.hpp" #include "4C_constraint_framework_input.hpp" #include "4C_contact_input.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_coupling_volmortar_input.hpp" #include "4C_cut_input.hpp" #include "4C_ehl_input.hpp" @@ -41,7 +42,6 @@ #include "4C_inpar_s2i.hpp" #include "4C_inpar_scatra.hpp" #include "4C_inpar_structure.hpp" -#include "4C_inpar_wear.hpp" #include "4C_inpar_xfem.hpp" #include "4C_io_gridgenerator.hpp" #include "4C_io_input_field.hpp" @@ -305,7 +305,7 @@ std::vector Global::valid_parameters() push_specs(specs, Mortar::valid_parameters()); push_specs(specs, CONTACT::valid_parameters()); push_specs(specs, Coupling::VolMortar::valid_parameters()); - push_specs(specs, Inpar::Wear::valid_parameters()); + push_specs(specs, Wear::valid_parameters()); push_specs(specs, Inpar::IORuntimeOutput::FLUID::valid_parameters()); push_specs(specs, Inpar::IORuntimeOutput::Solid::valid_parameters()); push_specs(specs, Beam::IORuntimeOutput::valid_parameters()); diff --git a/src/inpar/4C_inpar_wear.hpp b/src/inpar/4C_inpar_wear.hpp deleted file mode 100644 index bd19a96835d..00000000000 --- a/src/inpar/4C_inpar_wear.hpp +++ /dev/null @@ -1,80 +0,0 @@ -// This file is part of 4C multiphysics licensed under the -// GNU Lesser General Public License v3.0 or later. -// -// See the LICENSE.md file in the top-level for license information. -// -// SPDX-License-Identifier: LGPL-3.0-or-later - -#ifndef FOUR_C_INPAR_WEAR_HPP -#define FOUR_C_INPAR_WEAR_HPP - -#include "4C_config.hpp" - -#include "4C_io_input_spec.hpp" - - -FOUR_C_NAMESPACE_OPEN - -/*----------------------------------------------------------------------*/ -namespace Inpar -{ - namespace Wear - { - /// Type of contact wear law - /// (this enum represents the input file parameter WEAR) - enum WearLaw - { - wear_none, ///< no wear - wear_archard ///< Archard wear law - }; - - /// Definition of contact wear surface - /// (this enum represents the input file parameter WEAR_SIDE) - enum WearSide - { - wear_slave, ///< wear on slave side - wear_both ///< slave and master wear - }; - - /// Definition of contact wear algorithm - /// (this enum represents the input file parameter WEARTYPE) - enum WearType - { - wear_intstate, ///< internal state variable approach for wear - wear_primvar ///< primary variable approach for wear - }; - - /// Definition of wear time integration - /// (this enum represents the input file parameter WEARTIMINT) - enum WearTimInt - { - wear_expl, ///< implicit time integration - wear_impl ///< explicit time integration - }; - - /// Definition of wear shape functions (necessary for prim. var. approach) - /// (this enum represents the input file parameter WEAR_SHAPEFCN) - enum WearShape - { - wear_shape_dual, ///< dual shape functions allowing for condensation - wear_shape_standard ///< std. shape functions - }; - - /// Definition of wear-ALE time scale coupling algorithm - /// (this enum represents the input file parameter WEAR_TIMESCALE) - enum WearTimeScale - { - wear_time_equal, ///< shape evolution step after each structural step - wear_time_different ///< shape evolution for accumulated wear after predefined structural - ///< steps - }; - - /// wear parameters - Core::IO::InputSpec valid_parameters(); - } // namespace Wear -} // namespace Inpar - -/*----------------------------------------------------------------------*/ -FOUR_C_NAMESPACE_CLOSE - -#endif diff --git a/src/structure/4C_structure_timint_impl.cpp b/src/structure/4C_structure_timint_impl.cpp index 380105b1a6c..9452b613f3f 100644 --- a/src/structure/4C_structure_timint_impl.cpp +++ b/src/structure/4C_structure_timint_impl.cpp @@ -14,10 +14,10 @@ #include "4C_contact_defines.hpp" #include "4C_contact_input.hpp" #include "4C_contact_meshtying_contact_bridge.hpp" +#include "4C_contact_wear_input.hpp" #include "4C_fem_condition_locsys.hpp" #include "4C_fem_discretization_nullspace.hpp" #include "4C_global_data.hpp" -#include "4C_inpar_wear.hpp" #include "4C_io_control.hpp" #include "4C_io_pstream.hpp" #include "4C_linalg_krylov_projector.hpp" @@ -1478,12 +1478,12 @@ int Solid::TimIntImpl::newton_full() normlagr_ = -1.0; // for wear discretization - auto wtype = Teuchos::getIntegralValue( + auto wtype = Teuchos::getIntegralValue( cmtbridge_->get_strategy().params(), "WEARTYPE"); - auto wside = Teuchos::getIntegralValue( + auto wside = Teuchos::getIntegralValue( cmtbridge_->get_strategy().params(), "WEAR_SIDE"); - if (wtype == Inpar::Wear::wear_primvar) + if (wtype == Wear::wear_primvar) { std::shared_ptr> wincr = cmtbridge_->get_strategy().w_solve_incr(); @@ -1500,7 +1500,7 @@ int Solid::TimIntImpl::newton_full() else normw_ = -1.0; - if (wside == Inpar::Wear::wear_both) + if (wside == Wear::wear_both) { std::shared_ptr> wmincr = cmtbridge_->get_strategy().wm_solve_incr(); @@ -3211,10 +3211,10 @@ void Solid::TimIntImpl::print_newton_iter_header(FILE* ofile) cmtbridge_->get_strategy().params(), "STRATEGY"); auto systype = Teuchos::getIntegralValue( cmtbridge_->get_strategy().params(), "SYSTEM"); - auto wtype = Teuchos::getIntegralValue( - cmtbridge_->get_strategy().params(), "WEARTYPE"); - auto wside = Teuchos::getIntegralValue( - cmtbridge_->get_strategy().params(), "WEAR_SIDE"); + auto wtype = + Teuchos::getIntegralValue(cmtbridge_->get_strategy().params(), "WEARTYPE"); + auto wside = + Teuchos::getIntegralValue(cmtbridge_->get_strategy().params(), "WEAR_SIDE"); if (soltype == CONTACT::SolvingStrategy::lagmult && (systype != CONTACT::SystemType::condensed && @@ -3241,11 +3241,11 @@ void Solid::TimIntImpl::print_newton_iter_header(FILE* ofile) case Inpar::Solid::convnorm_abs: { oss << std::setw(20) << "abs-lagrincr-norm"; - if (wtype == Inpar::Wear::wear_primvar) + if (wtype == Wear::wear_primvar) { oss << std::setw(20) << "abs-wearincr-S-norm"; oss << std::setw(20) << "abs-wearcon-S-norm"; - if (wside == Inpar::Wear::wear_both) + if (wside == Wear::wear_both) { oss << std::setw(20) << "abs-wearincr-M-norm"; oss << std::setw(20) << "abs-wearcon-M-norm"; @@ -3381,10 +3381,10 @@ void Solid::TimIntImpl::print_newton_iter_text(FILE* ofile) cmtbridge_->get_strategy().params(), "STRATEGY"); auto systype = Teuchos::getIntegralValue( cmtbridge_->get_strategy().params(), "SYSTEM"); - auto wtype = Teuchos::getIntegralValue( - cmtbridge_->get_strategy().params(), "WEARTYPE"); - auto wside = Teuchos::getIntegralValue( - cmtbridge_->get_strategy().params(), "WEAR_SIDE"); + auto wtype = + Teuchos::getIntegralValue(cmtbridge_->get_strategy().params(), "WEARTYPE"); + auto wside = + Teuchos::getIntegralValue(cmtbridge_->get_strategy().params(), "WEAR_SIDE"); if (soltype == CONTACT::SolvingStrategy::lagmult && (systype != CONTACT::SystemType::condensed && @@ -3396,12 +3396,12 @@ void Solid::TimIntImpl::print_newton_iter_text(FILE* ofile) oss << std::setw(20) << std::setprecision(5) << std::scientific << normlagr_; // norm Lagrange multipliers - if (wtype == Inpar::Wear::wear_primvar) + if (wtype == Wear::wear_primvar) { oss << std::setw(20) << std::setprecision(5) << std::scientific << normw_; // norm wear oss << std::setw(20) << std::setprecision(5) << std::scientific << normwrhs_; // norm wear rhs - if (wside == Inpar::Wear::wear_both) + if (wside == Wear::wear_both) { oss << std::setw(20) << std::setprecision(5) << std::scientific << normwm_; // norm wear oss << std::setw(20) << std::setprecision(5) << std::scientific From 9a2b02cd01b27d83c3422ffcde77d7bc2f6fc983 Mon Sep 17 00:00:00 2001 From: Maximilian Ludwig Date: Fri, 27 Mar 2026 16:49:46 +0100 Subject: [PATCH 3/3] Move cardiac monodomain input from inpar physics --- .../4C_global_legacy_module_validconditions.cpp | 2 +- .../4C_global_legacy_module_validparameters.cpp | 4 ++-- .../4C_scatra_cardiac_monodomain_input.cpp} | 4 ++-- .../4C_scatra_cardiac_monodomain_input.hpp} | 15 ++++++--------- .../4C_scatra_ele_calc_cardiac_monodomain.cpp | 2 +- src/scatra_ele/4C_scatra_ele_parameter_std.hpp | 2 +- 6 files changed, 13 insertions(+), 16 deletions(-) rename src/{inpar/4C_inpar_cardiac_monodomain.cpp => scatra/4C_scatra_cardiac_monodomain_input.cpp} (92%) rename src/{inpar/4C_inpar_cardiac_monodomain.hpp => scatra/4C_scatra_cardiac_monodomain_input.hpp} (63%) diff --git a/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp b/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp index 50ae2980787..942aa8438ce 100644 --- a/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp +++ b/src/global_legacy_module/4C_global_legacy_module_validconditions.cpp @@ -21,7 +21,6 @@ #include "4C_fpsi_input.hpp" #include "4C_fs3i_biofilm_fsi_input.hpp" #include "4C_fsi_input.hpp" -#include "4C_inpar_cardiac_monodomain.hpp" #include "4C_inpar_fluid.hpp" #include "4C_inpar_s2i.hpp" #include "4C_inpar_scatra.hpp" @@ -33,6 +32,7 @@ #include "4C_particle_input.hpp" #include "4C_porofluid_pressure_based_elast_scatra_input.hpp" #include "4C_red_airways_input.hpp" +#include "4C_scatra_cardiac_monodomain_input.hpp" #include "4C_ssi_input.hpp" #include "4C_ssti_input.hpp" #include "4C_sti_input.hpp" diff --git a/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp b/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp index 26b75c30b20..2cf590a1cfd 100644 --- a/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp +++ b/src/global_legacy_module/4C_global_legacy_module_validparameters.cpp @@ -31,7 +31,6 @@ #include "4C_fsi_input.hpp" #include "4C_geometric_search_input.hpp" #include "4C_global_legacy_module_problem_type_string.hpp" -#include "4C_inpar_cardiac_monodomain.hpp" #include "4C_inpar_fluid.hpp" #include "4C_inpar_io.hpp" #include "4C_inpar_IO_runtime_output.hpp" @@ -64,6 +63,7 @@ #include "4C_red_airways_input.hpp" #include "4C_reduced_lung_1d_pipe_flow_input.hpp" #include "4C_reduced_lung_input.hpp" +#include "4C_scatra_cardiac_monodomain_input.hpp" #include "4C_solver_nonlin_nox_input.hpp" #include "4C_ssi_input.hpp" #include "4C_ssti_input.hpp" @@ -327,7 +327,7 @@ std::vector Global::valid_parameters() push_specs(specs, Inpar::ScaTra::valid_parameters()); push_specs(specs, LevelSet::valid_parameters()); push_specs(specs, ElCh::valid_parameters()); - push_specs(specs, Inpar::ElectroPhysiology::valid_parameters()); + push_specs(specs, ElectroPhysiology::valid_parameters()); push_specs(specs, STI::valid_parameters()); push_specs(specs, Inpar::S2I::valid_parameters()); diff --git a/src/inpar/4C_inpar_cardiac_monodomain.cpp b/src/scatra/4C_scatra_cardiac_monodomain_input.cpp similarity index 92% rename from src/inpar/4C_inpar_cardiac_monodomain.cpp rename to src/scatra/4C_scatra_cardiac_monodomain_input.cpp index 73f41461b4d..802a2cb1a62 100644 --- a/src/inpar/4C_inpar_cardiac_monodomain.cpp +++ b/src/scatra/4C_scatra_cardiac_monodomain_input.cpp @@ -5,13 +5,13 @@ // // SPDX-License-Identifier: LGPL-3.0-or-later -#include "4C_inpar_cardiac_monodomain.hpp" +#include "4C_scatra_cardiac_monodomain_input.hpp" #include "4C_fem_condition_definition.hpp" #include "4C_io_input_spec_builders.hpp" FOUR_C_NAMESPACE_OPEN -Core::IO::InputSpec Inpar::ElectroPhysiology::valid_parameters() +Core::IO::InputSpec ElectroPhysiology::valid_parameters() { using namespace Core::IO::InputSpecBuilders; Core::IO::InputSpec spec = group("CARDIAC MONODOMAIN CONTROL", diff --git a/src/inpar/4C_inpar_cardiac_monodomain.hpp b/src/scatra/4C_scatra_cardiac_monodomain_input.hpp similarity index 63% rename from src/inpar/4C_inpar_cardiac_monodomain.hpp rename to src/scatra/4C_scatra_cardiac_monodomain_input.hpp index 21076cc0353..6f84685ea90 100644 --- a/src/inpar/4C_inpar_cardiac_monodomain.hpp +++ b/src/scatra/4C_scatra_cardiac_monodomain_input.hpp @@ -5,8 +5,8 @@ // // SPDX-License-Identifier: LGPL-3.0-or-later -#ifndef FOUR_C_INPAR_CARDIAC_MONODOMAIN_HPP -#define FOUR_C_INPAR_CARDIAC_MONODOMAIN_HPP +#ifndef FOUR_C_SCATRA_CARDIAC_MONODOMAIN_INPUT_HPP +#define FOUR_C_SCATRA_CARDIAC_MONODOMAIN_INPUT_HPP #include "4C_config.hpp" @@ -22,15 +22,12 @@ namespace Core::Conditions { class ConditionDefinition; } -namespace Inpar +namespace ElectroPhysiology { - namespace ElectroPhysiology - { - /// elch parameters - Core::IO::InputSpec valid_parameters(); + /// elch parameters + Core::IO::InputSpec valid_parameters(); - } // namespace ElectroPhysiology -} // namespace Inpar +} // namespace ElectroPhysiology FOUR_C_NAMESPACE_CLOSE #endif diff --git a/src/scatra_ele/4C_scatra_ele_calc_cardiac_monodomain.cpp b/src/scatra_ele/4C_scatra_ele_calc_cardiac_monodomain.cpp index face24e3b01..c894ad1df8c 100644 --- a/src/scatra_ele/4C_scatra_ele_calc_cardiac_monodomain.cpp +++ b/src/scatra_ele/4C_scatra_ele_calc_cardiac_monodomain.cpp @@ -11,9 +11,9 @@ #include "4C_fem_general_element.hpp" #include "4C_fem_general_extract_values.hpp" #include "4C_global_data.hpp" -#include "4C_inpar_cardiac_monodomain.hpp" #include "4C_mat_list.hpp" #include "4C_mat_myocard.hpp" +#include "4C_scatra_cardiac_monodomain_input.hpp" #include "4C_scatra_ele_parameter_std.hpp" #include "4C_scatra_ele_parameter_timint.hpp" #include "4C_utils_singleton_owner.hpp" diff --git a/src/scatra_ele/4C_scatra_ele_parameter_std.hpp b/src/scatra_ele/4C_scatra_ele_parameter_std.hpp index a7fe92c2cba..5b6841d8c26 100644 --- a/src/scatra_ele/4C_scatra_ele_parameter_std.hpp +++ b/src/scatra_ele/4C_scatra_ele_parameter_std.hpp @@ -10,8 +10,8 @@ #include "4C_config.hpp" -#include "4C_inpar_cardiac_monodomain.hpp" #include "4C_inpar_scatra.hpp" +#include "4C_scatra_cardiac_monodomain_input.hpp" #include "4C_scatra_ele_parameter_base.hpp" FOUR_C_NAMESPACE_OPEN