From eaedf12c8c98d39c3640d0226c697bc5ef490186 Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Fri, 14 Jun 2024 12:04:37 +0200 Subject: [PATCH] [MatL] Expose path modification setting in prj file --- .../SolidModels/MFront/CreateMFront.cpp | 4 +-- .../MFront/CreateMFrontGeneric.cpp | 28 ++++++++++++------- .../SolidModels/MFront/CreateMFrontGeneric.h | 9 ++---- .../CreateConstitutiveSetting.cpp | 5 +--- .../CreateConstitutiveSetting.cpp | 5 +--- Tests/MaterialLib/CheckParamPassingMFront.cpp | 4 +-- .../CheckStiffnessMatrixMFront.cpp | 4 +-- .../ThermoporoelasticityMFront.cpp | 2 +- 8 files changed, 29 insertions(+), 32 deletions(-) diff --git a/MaterialLib/SolidModels/MFront/CreateMFront.cpp b/MaterialLib/SolidModels/MFront/CreateMFront.cpp index db8b12ae171..07fbd39e0fc 100644 --- a/MaterialLib/SolidModels/MFront/CreateMFront.cpp +++ b/MaterialLib/SolidModels/MFront/CreateMFront.cpp @@ -29,9 +29,7 @@ std::unique_ptr<MechanicsBase<DisplacementDim>> createMFront( local_coordinate_system, BaseLib::ConfigTree const& config) { - bool const library_path_is_relative_to_prj_file = true; - auto conf = createMFrontConfig(DisplacementDim, parameters, config, - library_path_is_relative_to_prj_file); + auto conf = createMFrontConfig(DisplacementDim, parameters, config); return std::make_unique<MFront<DisplacementDim>>( std::move(conf.behaviour), std::move(conf.material_properties), diff --git a/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.cpp b/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.cpp index 8666eb12610..eb79dc49b6c 100644 --- a/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.cpp +++ b/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.cpp @@ -324,23 +324,31 @@ namespace MaterialLib::Solids::MFront MFrontConfig createMFrontConfig( int const displacement_dim, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, - BaseLib::ConfigTree const& config, - bool const library_path_is_relative_to_prj_file) + BaseLib::ConfigTree const& config) { INFO("### MFRONT ########################################################"); //! \ogs_file_param{material__solid__constitutive_relation__type} config.checkConfigParameter("type", "MFront"); - auto const library_name = - //! \ogs_file_param{material__solid__constitutive_relation__MFront__library} - config.getConfigParameterOptional<std::string>("library"); + //! \ogs_file_param{material__solid__constitutive_relation__MFront__library} + auto const library = config.getConfigSubtreeOptional("library"); + + bool const library_path_is_relative_to_prj_file = + library /* If no library tag is specified in the prj file, the lib + shipped with OGS is used, whose path is not relative to the + project file. */ + && + //! \ogs_file_attr{material__solid__constitutive_relation__MFront__library__path_is_relative_to_prj_file} + library->getConfigAttribute("path_is_relative_to_prj_file", true); + + std::string const library_name = + library ? library->getValue<std::string>() : "libOgsMFrontBehaviour"; + auto const lib_path = - library_name ? (library_path_is_relative_to_prj_file - ? BaseLib::joinPaths(BaseLib::getProjectDirectory(), - *library_name) - : *library_name) - : "libOgsMFrontBehaviour"; + library_path_is_relative_to_prj_file + ? BaseLib::joinPaths(BaseLib::getProjectDirectory(), library_name) + : library_name; mgis::behaviour::Hypothesis hypothesis; if (displacement_dim == 2) diff --git a/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.h b/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.h index 0b4394b8078..09a9ab96e90 100644 --- a/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.h +++ b/MaterialLib/SolidModels/MFront/CreateMFrontGeneric.h @@ -26,8 +26,7 @@ struct MFrontConfig MFrontConfig createMFrontConfig( int const displacement_dim, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, - BaseLib::ConfigTree const& config, - bool const library_path_is_relative_to_prj_file); + BaseLib::ConfigTree const& config); template <int DisplacementDim, typename Gradients, typename TDynForces, typename ExtStateVars> @@ -37,11 +36,9 @@ createMFrontGeneric( std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, std::optional<ParameterLib::CoordinateSystem> const& local_coordinate_system, - BaseLib::ConfigTree const& config, - bool const library_path_is_relative_to_prj_file) + BaseLib::ConfigTree const& config) { - auto conf = createMFrontConfig(DisplacementDim, parameters, config, - library_path_is_relative_to_prj_file); + auto conf = createMFrontConfig(DisplacementDim, parameters, config); return std::make_unique< MFrontGeneric<DisplacementDim, Gradients, TDynForces, ExtStateVars>>( diff --git a/ProcessLib/LargeDeformation/ConstitutiveRelations/CreateConstitutiveSetting.cpp b/ProcessLib/LargeDeformation/ConstitutiveRelations/CreateConstitutiveSetting.cpp index 5e3d8e961ea..a594500d2ae 100644 --- a/ProcessLib/LargeDeformation/ConstitutiveRelations/CreateConstitutiveSetting.cpp +++ b/ProcessLib/LargeDeformation/ConstitutiveRelations/CreateConstitutiveSetting.cpp @@ -26,13 +26,10 @@ std::unique_ptr<SolidConstitutiveRelation<DisplacementDim>> createMFrontGeneric( namespace MSM = MaterialLib::Solids::MFront; using namespace boost::mp11; - bool const library_path_is_relative_to_prj_file = true; - return MSM::createMFrontGeneric< DisplacementDim, mp_list<MSM::DeformationGradient>, mp_list<MSM::SecondPiolaKirchhoffStress>, mp_list<MSM::Temperature>>( - parameters, local_coordinate_system, config, - library_path_is_relative_to_prj_file); + parameters, local_coordinate_system, config); } template <int DisplacementDim> diff --git a/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/CreateConstitutiveSetting.cpp b/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/CreateConstitutiveSetting.cpp index f60915a8c0a..208056cb771 100644 --- a/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/CreateConstitutiveSetting.cpp +++ b/ProcessLib/ThermoRichardsMechanics/ConstitutiveStressSaturation_StrainPressureTemperature/CreateConstitutiveSetting.cpp @@ -27,13 +27,10 @@ std::unique_ptr<SolidConstitutiveRelation<DisplacementDim>> createMFrontGeneric( namespace MSM = MaterialLib::Solids::MFront; using namespace boost::mp11; - bool const library_path_is_relative_to_prj_file = true; - return MSM::createMFrontGeneric< DisplacementDim, mp_list<MSM::Strain, MSM::LiquidPressure>, mp_list<MSM::Stress, MSM::Saturation>, mp_list<MSM::Temperature>>( - parameters, local_coordinate_system, config, - library_path_is_relative_to_prj_file); + parameters, local_coordinate_system, config); } template <int DisplacementDim> diff --git a/Tests/MaterialLib/CheckParamPassingMFront.cpp b/Tests/MaterialLib/CheckParamPassingMFront.cpp index d9ef2df7220..83b8e7045d8 100644 --- a/Tests/MaterialLib/CheckParamPassingMFront.cpp +++ b/Tests/MaterialLib/CheckParamPassingMFront.cpp @@ -97,7 +97,7 @@ auto createMFront( const char* xml = R"XML( <type>MFront</type> <behaviour>CheckParamPassing1</behaviour> - <library>libOgsMFrontBehaviourForUnitTests</library> + <library path_is_relative_to_prj_file="false">libOgsMFrontBehaviourForUnitTests</library> <material_properties> <material_property name="YoungModulus" parameter="E"/> <material_property name="PoissonRatio" parameter="nu"/> @@ -113,7 +113,7 @@ auto createMFront( 3, boost::mp11::mp_list<MSM::Strain, MSM::LiquidPressure>, boost::mp11::mp_list<MSM::Stress, MSM::Saturation>, boost::mp11::mp_list<MSM::Temperature>>( - parameters, local_coordinate_system, config_tree, false); + parameters, local_coordinate_system, config_tree); } TEST(MaterialLib_CheckParamPassingMFront, SuccessTest) diff --git a/Tests/MaterialLib/CheckStiffnessMatrixMFront.cpp b/Tests/MaterialLib/CheckStiffnessMatrixMFront.cpp index 2af9d71d891..6d4708563a5 100644 --- a/Tests/MaterialLib/CheckStiffnessMatrixMFront.cpp +++ b/Tests/MaterialLib/CheckStiffnessMatrixMFront.cpp @@ -29,7 +29,7 @@ auto createMFront(std::string const& behaviour) auto const xml = fmt::format(R"XML( <type>MFront</type> <behaviour>{}</behaviour> - <library>libOgsMFrontBehaviourForUnitTests</library> + <library path_is_relative_to_prj_file="false">libOgsMFrontBehaviourForUnitTests</library> <material_properties /> )XML", behaviour); @@ -41,7 +41,7 @@ auto createMFront(std::string const& behaviour) return MSM::createMFrontGeneric< 3, boost::mp11::mp_list<MSM::Strain, MSM::LiquidPressure>, boost::mp11::mp_list<MSM::Stress, MSM::Saturation>, ExtStateVars>( - parameters, local_coordinate_system, config_tree, false); + parameters, local_coordinate_system, config_tree); } struct TestDataBase diff --git a/Tests/MaterialLib/ThermoporoelasticityMFront.cpp b/Tests/MaterialLib/ThermoporoelasticityMFront.cpp index 8d841442345..10d761e6d15 100644 --- a/Tests/MaterialLib/ThermoporoelasticityMFront.cpp +++ b/Tests/MaterialLib/ThermoporoelasticityMFront.cpp @@ -131,7 +131,7 @@ static auto createMFront( 3, boost::mp11::mp_list<MSM::Strain, MSM::LiquidPressure>, boost::mp11::mp_list<MSM::Stress, MSM::Saturation>, boost::mp11::mp_list<MSM::Temperature>>( - parameters, local_coordinate_system, config_tree, false); + parameters, local_coordinate_system, config_tree); } TEST(MaterialLib_ThermoPoroElasticityMFront, IsochoricDrainedHeating) -- GitLab