OGS
CreateCoulomb.cpp
Go to the documentation of this file.
1 
10 #include "CreateCoulomb.h"
11 
12 #include "Coulomb.h"
14 #include "ParameterLib/Utils.h"
15 
16 namespace MaterialLib
17 {
18 namespace Fracture
19 {
20 template <int DisplacementDim>
21 std::unique_ptr<FractureModelBase<DisplacementDim>> createCoulomb(
22  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
23  BaseLib::ConfigTree const& config)
24 {
26  config.checkConfigParameter("type", "Coulomb");
27  DBUG("Create Coulomb material");
28 
29  auto& Kn = ParameterLib::findParameter<double>(
31  config, "normal_stiffness", parameters, 1);
32 
33  auto& Ks = ParameterLib::findParameter<double>(
35  config, "shear_stiffness", parameters, 1);
36 
37  auto& friction_angle = ParameterLib::findParameter<double>(
39  config, "friction_angle", parameters, 1);
40 
41  auto& dilatancy_angle = ParameterLib::findParameter<double>(
43  config, "dilatancy_angle", parameters, 1);
44 
45  auto& cohesion = ParameterLib::findParameter<double>(
47  config, "cohesion", parameters, 1);
48 
49  auto const penalty_aperture_cutoff =
51  config.getConfigParameter<double>("penalty_aperture_cutoff");
52 
53  auto const tension_cutoff =
55  config.getConfigParameter<bool>("tension_cutoff");
56 
58  Kn, Ks, friction_angle, dilatancy_angle, cohesion};
59 
60  auto const& nonlinear_solver_config =
62  config.getConfigSubtree("nonlinear_solver");
63  auto const nonlinear_solver_parameters =
64  NumLib::createNewtonRaphsonSolverParameters(nonlinear_solver_config);
65 
66  return std::make_unique<Coulomb::Coulomb<DisplacementDim>>(
67  nonlinear_solver_parameters, penalty_aperture_cutoff, tension_cutoff,
68  mp);
69 }
70 
71 template std::unique_ptr<FractureModelBase<2>> createCoulomb(
72  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
73  BaseLib::ConfigTree const& config);
74 
75 template std::unique_ptr<FractureModelBase<3>> createCoulomb(
76  std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
77  BaseLib::ConfigTree const& config);
78 
79 } // namespace Fracture
80 } // namespace MaterialLib
void DBUG(char const *fmt, Args const &... args)
Definition: Logging.h:27
void checkConfigParameter(std::string const &param, T const &value) const
T getConfigParameter(std::string const &param) const
ConfigTree getConfigSubtree(std::string const &root) const
Definition: ConfigTree.cpp:146
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)
Variables specific to the material model.
Definition: Coulomb.h:59