diff --git a/MaterialLib/SolidModels/MFront/CreateMFront.cpp b/MaterialLib/SolidModels/MFront/CreateMFront.cpp index db8b12ae1715bcf252e11f0ead082c8dec446cbe..07fbd39e0fcf617db22cb778e87b1817baa6f019 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 8666eb126107c0d95f44b24ffc0410466046c77a..eb79dc49b6c2ff787e7b0a1cfdaaf65630007e29 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 0b4394b8078cc4b67e452b2f7de4c9e5899c7c6c..09a9ab96e908a9704a4c5eca1c9de16430cdba32 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 5e3d8e961ea8708dff6a29b8091ff613c7ab613a..a594500d2aeb1fb0277277b5d4871e8751c55182 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 f60915a8c0aff5ee85ab8c3cd4aa3ab452df9351..208056cb77158e7a30611ce0ecb81ff626238723 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 d9ef2df7220e2eb4a4eae7e8663815202d170f05..83b8e7045d8f5f4e477c35f9809390c378abee9a 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 2af9d71d8919146e4f955a50ccb9ebfdb38b75f5..6d4708563a5a43151f522b0372eeeeb8751bd31b 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 8d841442345e5b71597d98b44147735c2c9c4e6f..10d761e6d155b884807edf8ca504c21968757601 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)