OGS
MaterialLib::Fracture Namespace Reference

Namespaces

 anonymous_namespace{FractureIdentity2.cpp}
 
 CohesiveZoneModeI
 
 Coulomb
 
 Permeability
 

Classes

struct  FractureIdentity2
 
class  FractureModelBase
 
class  LinearElasticIsotropic
 

Functions

template<int DisplacementDim>
std::unique_ptr< FractureModelBase< DisplacementDim > > createCoulomb (std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters, BaseLib::ConfigTree const &config)
 
template<int DisplacementDim>
std::unique_ptr< FractureModelBase< DisplacementDim > > createLinearElasticIsotropic (std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &parameters, BaseLib::ConfigTree const &config)
 
double logPenaltyDerivative (double const aperture0, double const aperture, double const aperture_cutoff)
 
double logPenalty (double const aperture0, double const aperture, double const aperture_cutoff)
 

Function Documentation

◆ createCoulomb()

template<int DisplacementDim>
std::unique_ptr< FractureModelBase< DisplacementDim > > MaterialLib::Fracture::createCoulomb ( std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &  parameters,
BaseLib::ConfigTree const &  config 
)
Input File Parameter:
material__fracture_model__type
Input File Parameter:
material__fracture_model__Coulomb__normal_stiffness
Input File Parameter:
material__fracture_model__Coulomb__shear_stiffness
Input File Parameter:
material__fracture_model__Coulomb__friction_angle
Input File Parameter:
material__fracture_model__Coulomb__dilatancy_angle
Input File Parameter:
material__fracture_model__Coulomb__cohesion
Input File Parameter:
material__fracture_model__Coulomb__penalty_aperture_cutoff
Input File Parameter:
material__fracture_model__Coulomb__tension_cutoff
Input File Parameter:
material__fracture_model__Coulomb__nonlinear_solver

Definition at line 21 of file CreateCoulomb.cpp.

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 
57  typename Coulomb::Coulomb<DisplacementDim>::MaterialProperties mp{
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 }
void DBUG(char const *fmt, Args const &... args)
Definition: Logging.h:27
NewtonRaphsonSolverParameters createNewtonRaphsonSolverParameters(BaseLib::ConfigTree const &config)

References BaseLib::ConfigTree::checkConfigParameter(), NumLib::createNewtonRaphsonSolverParameters(), DBUG(), BaseLib::ConfigTree::getConfigParameter(), and BaseLib::ConfigTree::getConfigSubtree().

◆ createLinearElasticIsotropic()

template<int DisplacementDim>
std::unique_ptr< FractureModelBase< DisplacementDim > > MaterialLib::Fracture::createLinearElasticIsotropic ( std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const &  parameters,
BaseLib::ConfigTree const &  config 
)
Input File Parameter:
material__fracture_model__type
Input File Parameter:
material__fracture_model__LinearElasticIsotropic__normal_stiffness
Input File Parameter:
material__fracture_model__LinearElasticIsotropic__shear_stiffness
Input File Parameter:
material__fracture_model__LinearElasticIsotropic__penalty_aperture_cutoff
Input File Parameter:
material__fracture_model__LinearElasticIsotropic__tension_cutoff

Definition at line 21 of file CreateLinearElasticIsotropic.cpp.

24 {
26  config.checkConfigParameter("type", "LinearElasticIsotropic");
27  DBUG("Create LinearElasticIsotropic material");
28 
29  auto const& Kn = ParameterLib::findParameter<double>(
31  config, "normal_stiffness", parameters, 1);
32 
33  auto const& Ks = ParameterLib::findParameter<double>(
35  config, "shear_stiffness", parameters, 1);
36 
37  auto const penalty_aperture_cutoff =
39  config.getConfigParameter<double>("penalty_aperture_cutoff");
40 
41  auto const tension_cutoff =
43  config.getConfigParameter<bool>("tension_cutoff");
44 
45  typename LinearElasticIsotropic<DisplacementDim>::MaterialProperties mp{Kn,
46  Ks};
47 
48  return std::make_unique<LinearElasticIsotropic<DisplacementDim>>(
49  penalty_aperture_cutoff, tension_cutoff, mp);
50 }

References BaseLib::ConfigTree::checkConfigParameter(), DBUG(), and BaseLib::ConfigTree::getConfigParameter().

Referenced by ProcessLib::LIE::SmallDeformation::createSmallDeformationProcess().

◆ logPenalty()

double MaterialLib::Fracture::logPenalty ( double const  aperture0,
double const  aperture,
double const  aperture_cutoff 
)
inline

Definition at line 49 of file LogPenalty.h.

52 {
53  if (aperture >= aperture0)
54  {
55  return 1;
56  }
57 
58  // Logarithmic penalty
59  if (aperture > aperture_cutoff)
60  {
61  double const penalty = std::log(aperture / aperture0);
62  return 1 + penalty * penalty;
63  }
64 
65  // Linear penalty below aperture cutoff
66  {
67  double const penalty = std::log(aperture_cutoff / aperture0);
68  return 1 + penalty * penalty +
69  2 * penalty / aperture_cutoff * (aperture - aperture_cutoff);
70  }
71 };

Referenced by MaterialLib::Fracture::CohesiveZoneModeI::CohesiveZoneModeI< DisplacementDim >::computeConstitutiveRelation(), and MaterialLib::Fracture::LinearElasticIsotropic< DisplacementDim >::computeConstitutiveRelation().

◆ logPenaltyDerivative()

double MaterialLib::Fracture::logPenaltyDerivative ( double const  aperture0,
double const  aperture,
double const  aperture_cutoff 
)
inline

A penalty function for negative aperture suppression used as a multiplier to the normal fracture stiffness.

The derivative is continuous at aperture = aperture0 and aperture = aperture_cutoff.

Definition at line 23 of file LogPenalty.h.

26 {
27  if (aperture >= aperture0)
28  {
29  return 1;
30  }
31 
32  // Logarithmic penalty
33  if (aperture > aperture_cutoff)
34  {
35  double const penalty = std::log(aperture / aperture0);
36  return 1 + penalty * penalty +
37  2 * penalty / aperture * (aperture - aperture0);
38  }
39 
40  // Linear penalty below aperture cutoff
41  {
42  double const penalty = std::log(aperture_cutoff / aperture0);
43  return 1 + penalty * penalty +
44  2 * penalty / aperture_cutoff *
45  (2 * aperture - aperture_cutoff - aperture0);
46  }
47 };

Referenced by MaterialLib::Fracture::CohesiveZoneModeI::CohesiveZoneModeI< DisplacementDim >::computeConstitutiveRelation(), MaterialLib::Fracture::LinearElasticIsotropic< DisplacementDim >::computeConstitutiveRelation(), and MaterialLib::Fracture::Coulomb::Coulomb< DisplacementDim >::computeConstitutiveRelation().