OGS
MaterialLib::Fracture Namespace Reference

Namespaces

namespace  anonymous_namespace{FractureIdentity2.cpp}
namespace  CohesiveZoneModeI
namespace  Coulomb

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)

Variables

template<int DisplacementDim>
const FractureIdentity2< DisplacementDim >::VectorType FractureIdentity2< DisplacementDim >::value

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 15 of file CreateCoulomb.cpp.

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}
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
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

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 15 of file CreateLinearElasticIsotropic.cpp.

18{
20 config.checkConfigParameter("type", "LinearElasticIsotropic");
21 DBUG("Create LinearElasticIsotropic material");
22
25 config, "normal_stiffness", parameters, 1);
26
29 config, "shear_stiffness", parameters, 1);
30
31 auto const penalty_aperture_cutoff =
33 config.getConfigParameter<double>("penalty_aperture_cutoff");
34
35 auto const tension_cutoff =
37 config.getConfigParameter<bool>("tension_cutoff");
38
40 Ks};
41
42 return std::make_unique<LinearElasticIsotropic<DisplacementDim>>(
43 penalty_aperture_cutoff, tension_cutoff, mp);
44}

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 43 of file LogPenalty.h.

46{
47 if (aperture >= aperture0)
48 {
49 return 1;
50 }
51
52 // Logarithmic penalty
53 if (aperture > aperture_cutoff)
54 {
55 double const penalty = std::log(aperture / aperture0);
56 return 1 + penalty * penalty;
57 }
58
59 // Linear penalty below aperture cutoff
60 {
61 double const penalty = std::log(aperture_cutoff / aperture0);
62 return 1 + penalty * penalty +
63 2 * penalty / aperture_cutoff * (aperture - aperture_cutoff);
64 }
65};

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 17 of file LogPenalty.h.

20{
21 if (aperture >= aperture0)
22 {
23 return 1;
24 }
25
26 // Logarithmic penalty
27 if (aperture > aperture_cutoff)
28 {
29 double const penalty = std::log(aperture / aperture0);
30 return 1 + penalty * penalty +
31 2 * penalty / aperture * (aperture - aperture0);
32 }
33
34 // Linear penalty below aperture cutoff
35 {
36 double const penalty = std::log(aperture_cutoff / aperture0);
37 return 1 + penalty * penalty +
38 2 * penalty / aperture_cutoff *
39 (2 * aperture - aperture_cutoff - aperture0);
40 }
41};

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

Variable Documentation

◆ FractureIdentity2< DisplacementDim >::value

template<int DisplacementDim>
const FractureIdentity2<DisplacementDim>::VectorType MaterialLib::Fracture::FractureIdentity2< DisplacementDim >::value
Initial value:
=
initIdentity2<typename FractureIdentity2<DisplacementDim>::VectorType,
DisplacementDim>()

Definition at line 23 of file FractureIdentity2.cpp.