OGS
MaterialLib::Fracture Namespace Reference

Namespaces

namespace  anonymous_namespace{FractureIdentity2.cpp}
 
namespace  CohesiveZoneModeI
 
namespace  Coulomb
 
namespace  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 std::unique_ptr< FractureModelBase< 2 > > 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)
 
template std::unique_ptr< FractureModelBase< 2 > > 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() [1/2]

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
31 config, "normal_stiffness", parameters, 1);
32
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
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}
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:30
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)
Definition Utils.h:102
Variables specific to the material model.
Definition Coulomb.h:58

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

Referenced by ProcessLib::LIE::HydroMechanics::createHydroMechanicsProcess(), and ProcessLib::LIE::SmallDeformation::createSmallDeformationProcess().

◆ createCoulomb() [2/2]

template std::unique_ptr< FractureModelBase< 2 > > MaterialLib::Fracture::createCoulomb ( std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & parameters,
BaseLib::ConfigTree const & config )

◆ createLinearElasticIsotropic() [1/2]

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
31 config, "normal_stiffness", parameters, 1);
32
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
46 Ks};
47
48 return std::make_unique<LinearElasticIsotropic<DisplacementDim>>(
49 penalty_aperture_cutoff, tension_cutoff, mp);
50}

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

Referenced by ProcessLib::LIE::HydroMechanics::createHydroMechanicsProcess(), and ProcessLib::LIE::SmallDeformation::createSmallDeformationProcess().

◆ createLinearElasticIsotropic() [2/2]

template std::unique_ptr< FractureModelBase< 2 > > MaterialLib::Fracture::createLinearElasticIsotropic ( std::vector< std::unique_ptr< ParameterLib::ParameterBase > > const & parameters,
BaseLib::ConfigTree const & config )

◆ 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::Coulomb::Coulomb< DisplacementDim >::computeConstitutiveRelation(), and MaterialLib::Fracture::LinearElasticIsotropic< DisplacementDim >::computeConstitutiveRelation().