OGS
CreateCoulomb.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) OpenGeoSys Community (opengeosys.org)
2// SPDX-License-Identifier: BSD-3-Clause
3
4#include "CreateCoulomb.h"
5
6#include "Coulomb.h"
9
10namespace MaterialLib
11{
12namespace Fracture
13{
14template <int DisplacementDim>
15std::unique_ptr<FractureModelBase<DisplacementDim>> createCoulomb(
16 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
17 BaseLib::ConfigTree const& config)
18{
20 config.checkConfigParameter("type", "Coulomb");
21 DBUG("Create Coulomb material");
22
25 config, "normal_stiffness", parameters, 1);
26
29 config, "shear_stiffness", parameters, 1);
30
31 auto& friction_angle = ParameterLib::findParameter<double>(
33 config, "friction_angle", parameters, 1);
34
35 auto& dilatancy_angle = ParameterLib::findParameter<double>(
37 config, "dilatancy_angle", parameters, 1);
38
41 config, "cohesion", parameters, 1);
42
43 auto const penalty_aperture_cutoff =
45 config.getConfigParameter<double>("penalty_aperture_cutoff");
46
47 auto const tension_cutoff =
49 config.getConfigParameter<bool>("tension_cutoff");
50
52 Kn, Ks, friction_angle, dilatancy_angle, cohesion};
53
54 auto const& nonlinear_solver_config =
56 config.getConfigSubtree("nonlinear_solver");
57 auto const nonlinear_solver_parameters =
58 NumLib::createNewtonRaphsonSolverParameters(nonlinear_solver_config);
59
60 return std::make_unique<Coulomb::Coulomb<DisplacementDim>>(
61 nonlinear_solver_parameters, penalty_aperture_cutoff, tension_cutoff,
62 mp);
63}
64
65template std::unique_ptr<FractureModelBase<2>> createCoulomb(
66 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
67 BaseLib::ConfigTree const& config);
68
69template std::unique_ptr<FractureModelBase<3>> createCoulomb(
70 std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
71 BaseLib::ConfigTree const& config);
72
73} // namespace Fracture
74} // namespace MaterialLib
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
T getConfigParameter(std::string const &param) const
ConfigTree getConfigSubtree(std::string const &root) const
void checkConfigParameter(std::string const &param, std::string_view const value) const
std::unique_ptr< FractureModelBase< DisplacementDim > > createCoulomb(std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const &parameters, BaseLib::ConfigTree const &config)
NewtonRaphsonSolverParameters createNewtonRaphsonSolverParameters(BaseLib::ConfigTree const &config)
OGS_NO_DANGLING Parameter< ParameterDataType > & findParameter(std::string const &parameter_name, std::vector< std::unique_ptr< ParameterBase > > const &parameters, int const num_components, MeshLib::Mesh const *const mesh=nullptr)
Variables specific to the material model.
Definition Coulomb.h:52