diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/i_nonlinear_solver.md b/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/i_nonlinear_solver.md deleted file mode 100644 index f6d09b0017c9833e58880901daacfa3631a13458..0000000000000000000000000000000000000000 --- a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/i_nonlinear_solver.md +++ /dev/null @@ -1,2 +0,0 @@ -Local nonlinear solver configuration used in the constitutive relation -computation. The nonlinear solver is the NumLib::NewtonRaphson solver. diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_error_tolerance.md b/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_error_tolerance.md deleted file mode 100644 index ccae39ea3ad802a7b785d4e758ad7b39757862cd..0000000000000000000000000000000000000000 --- a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_error_tolerance.md +++ /dev/null @@ -1 +0,0 @@ -\copydoc NumLib::NewtonRaphson::_tolerance_squared diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_maximum_iterations.md b/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_maximum_iterations.md deleted file mode 100644 index c9b32edcfe5664c6a8bf684a2be2043ac4658c28..0000000000000000000000000000000000000000 --- a/Documentation/ProjectFile/material/solid/constitutive_relation/Lubby2/nonlinear_solver/t_maximum_iterations.md +++ /dev/null @@ -1 +0,0 @@ -\copydoc NumLib::NewtonRaphson::_maximum_iterations diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/i_nonlinear_solver.md b/Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/i_nonlinear_solver.md similarity index 100% rename from Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/i_nonlinear_solver.md rename to Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/i_nonlinear_solver.md diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_error_tolerance.md b/Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_error_tolerance.md similarity index 100% rename from Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_error_tolerance.md rename to Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_error_tolerance.md diff --git a/Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_maximum_iterations.md b/Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_maximum_iterations.md similarity index 100% rename from Documentation/ProjectFile/material/solid/constitutive_relation/Ehlers/nonlinear_solver/t_maximum_iterations.md rename to Documentation/ProjectFile/material/solid/constitutive_relation/nonlinear_solver/t_maximum_iterations.md diff --git a/MaterialLib/SolidModels/CreateEhlers.h b/MaterialLib/SolidModels/CreateEhlers.h index 3969fef891a576da7202fbee04e4e01d34318ed0..7d181c1d85ec1439a4a23fdd277bfb80b959b8fa 100644 --- a/MaterialLib/SolidModels/CreateEhlers.h +++ b/MaterialLib/SolidModels/CreateEhlers.h @@ -9,6 +9,7 @@ #pragma once +#include "CreateNewtonRaphsonSolverParameters.h" #include "ProcessLib/Utils/ProcessUtils.h" // required for findParameter #include "Ehlers.h" @@ -18,25 +19,6 @@ namespace Solids { namespace Ehlers { -inline NumLib::NewtonRaphsonSolverParameters -createNewtonRaphsonSolverParameters(BaseLib::ConfigTree const& config) -{ - DBUG("Create local nonlinear solver parameters."); - auto const maximum_iterations = - //! \ogs_file_param{material__solid__constitutive_relation__Ehlers__nonlinear_solver__maximum_iterations} - config.getConfigParameter<int>("maximum_iterations"); - - DBUG("\tmaximum_iterations: %d.", maximum_iterations); - - auto const error_tolerance = - //! \ogs_file_param{material__solid__constitutive_relation__Ehlers__nonlinear_solver__error_tolerance} - config.getConfigParameter<double>("error_tolerance"); - - DBUG("\terror_tolerance: %g.", error_tolerance); - - return {maximum_iterations, error_tolerance}; -} - inline std::unique_ptr<DamagePropertiesParameters> createDamageProperties( std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters, BaseLib::ConfigTree const& config) @@ -184,11 +166,8 @@ std::unique_ptr<SolidEhlers<DisplacementDim>> createEhlers( createDamageProperties(parameters, *ehlers_damage_config); } - auto const& nonlinear_solver_config = - //! \ogs_file_param{material__solid__constitutive_relation__Ehlers__nonlinear_solver} - config.getConfigSubtree("nonlinear_solver"); auto const nonlinear_solver_parameters = - createNewtonRaphsonSolverParameters(nonlinear_solver_config); + createNewtonRaphsonSolverParameters(config); return std::make_unique<SolidEhlers<DisplacementDim>>( nonlinear_solver_parameters, mp, std::move(ehlers_damage_properties)); diff --git a/MaterialLib/SolidModels/CreateLubby2.h b/MaterialLib/SolidModels/CreateLubby2.h index 145d17e970a1ef847b09b299de0af8c15827bc1f..569d546e3805977d0838c53cf9a4aee6d51165c0 100644 --- a/MaterialLib/SolidModels/CreateLubby2.h +++ b/MaterialLib/SolidModels/CreateLubby2.h @@ -9,6 +9,7 @@ #pragma once +#include "CreateNewtonRaphsonSolverParameters.h" #include "ProcessLib/Utils/ProcessUtils.h" // required for findParameter #include "Lubby2.h" @@ -19,25 +20,6 @@ namespace Solids { namespace Lubby2 { -inline NumLib::NewtonRaphsonSolverParameters -createNewtonRaphsonSolverParameters(BaseLib::ConfigTree const& config) -{ - DBUG("Create local nonlinear solver parameters."); - auto const maximum_iterations = - //! \ogs_file_param{material__solid__constitutive_relation__Lubby2__nonlinear_solver__maximum_iterations} - config.getConfigParameter<int>("maximum_iterations"); - - DBUG("\tmaximum_iterations: %d.", maximum_iterations); - - auto const error_tolerance = - //! \ogs_file_param{material__solid__constitutive_relation__Lubby2__nonlinear_solver__error_tolerance} - config.getConfigParameter<double>("error_tolerance"); - - DBUG("\terror_tolerance: %g.", error_tolerance); - - return {maximum_iterations, error_tolerance}; -} - template <int DisplacementDim> std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters, @@ -117,11 +99,8 @@ std::unique_ptr<Lubby2<DisplacementDim>> createLubby2( maxwell_viscosity, dependency_parameter_mK, dependency_parameter_mvK, dependency_parameter_mvM}; - auto const& nonlinear_solver_config = - //! \ogs_file_param{material__solid__constitutive_relation__Lubby2__nonlinear_solver} - config.getConfigSubtree("nonlinear_solver"); auto const nonlinear_solver_parameters = - createNewtonRaphsonSolverParameters(nonlinear_solver_config); + createNewtonRaphsonSolverParameters(config); return std::unique_ptr<Lubby2<DisplacementDim>>{ new Lubby2<DisplacementDim>{nonlinear_solver_parameters, mp}}; diff --git a/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2ffd162f6fa36abce71c2bdcc9303fa04bc205d4 --- /dev/null +++ b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.cpp @@ -0,0 +1,43 @@ +/** + * \copyright + * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + * \file CreateNewtonRaphsonSolverParameters.cpp + * Created on July 10, 2018, 11:32 AM + */ + +#include "CreateNewtonRaphsonSolverParameters.h" + +#include "BaseLib/ConfigTree.h" +#include "BaseLib/Error.h" + +#include "NumLib/NewtonRaphson.h" + +namespace MaterialLib +{ +NumLib::NewtonRaphsonSolverParameters createNewtonRaphsonSolverParameters( + BaseLib::ConfigTree const& config) +{ + DBUG("Create local nonlinear solver parameters."); + auto const& nonlinear_solver_config = + //! \ogs_file_param{material__solid__constitutive_relation__nonlinear_solver} + config.getConfigSubtree("nonlinear_solver"); + + auto const maximum_iterations = + //! \ogs_file_param{material__solid__constitutive_relation__nonlinear_solver__maximum_iterations} + nonlinear_solver_config.getConfigParameter<int>("maximum_iterations"); + + DBUG("\tmaximum_iterations: %d.", maximum_iterations); + + auto const error_tolerance = + //! \ogs_file_param{material__solid__constitutive_relation__nonlinear_solver__error_tolerance} + nonlinear_solver_config.getConfigParameter<double>("error_tolerance"); + + DBUG("\terror_tolerance: %g.", error_tolerance); + + return {maximum_iterations, error_tolerance}; +} +} diff --git a/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.h b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.h new file mode 100644 index 0000000000000000000000000000000000000000..6ecfb79d875d63b23b678d22f22f64590eb0f8da --- /dev/null +++ b/MaterialLib/SolidModels/CreateNewtonRaphsonSolverParameters.h @@ -0,0 +1,28 @@ +/** + * \copyright + * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + * \file CreateNewtonRaphsonSolverParameters.h + * Created on July 10, 2018, 11:32 AM + */ + +#pragma once + +namespace BaseLib +{ +class ConfigTree; +} + +namespace NumLib +{ +struct NewtonRaphsonSolverParameters; +} + +namespace MaterialLib +{ +NumLib::NewtonRaphsonSolverParameters createNewtonRaphsonSolverParameters( + BaseLib::ConfigTree const& config); +}