NuTo
Numerics Tool
DamageLawLinear.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <algorithm> // std::min
4 #include "DamageLaw.h"
5 #include "SofteningMaterial.h"
6 
7 namespace NuTo
8 {
9 namespace Constitutive
10 {
13 
22 class DamageLawLinear : public DamageLaw
23 {
24 public:
25  DamageLawLinear(double kappa0, double kappaC, double omegaMax)
26  : mKappa0(kappa0)
27  , mKappaC(kappaC)
28  , mOmegaMax(omegaMax)
29  {
30  }
31 
33  : mKappa0(m.ft / m.E)
34  , mKappaC(mKappa0 + 2. * m.gf / m.ft)
35  , mOmegaMax(1. - m.fMin / m.ft) // this is not totally right...
36  {
37  }
38 
39  double Damage(double kappa) const override
40  {
41  if (kappa < mKappa0)
42  return 0.;
43  double damage = mKappaC / kappa * (kappa - mKappa0) / (mKappaC - mKappa0);
44  return std::min(damage, mOmegaMax);
45  }
46 
47  double Derivative(double kappa) const override
48  {
49  if (kappa < mKappa0)
50  return 0.;
51  if (Damage(kappa) < mOmegaMax)
52  return mKappaC * mKappa0 / (kappa * kappa * (mKappaC - mKappa0));
53  return 0;
54  }
55 
56 private:
57  double mKappa0;
58  double mKappaC;
59  double mOmegaMax;
60 };
61 } /* Constitutive */
62 } /* NuTo */
DamageLawLinear(Material::Softening m)
Definition: DamageLawLinear.h:32
linear damage law Peerlings et al.
Definition: DamageLawLinear.h:22
Common material parameters for softening materials.
Definition: SofteningMaterial.h:12
double Derivative(double kappa) const override
calculates the derivative of the damage with respect to the history variable kappa ...
Definition: DamageLawLinear.h:47
damage
Definition: DamageBar.py:40
Definition: Exception.h:6
const double E
Definition: LinearElasticDamageBenchmark.cpp:6
double Damage(double kappa) const override
calculates the damage for a given history variable kappa
Definition: DamageLawLinear.h:39
interface for common damage laws
Definition: DamageLaw.h:9
DamageLawLinear(double kappa0, double kappaC, double omegaMax)
Definition: DamageLawLinear.h:25