10 namespace NonlocalInteraction
38 TInteraction interaction = TInteraction())
42 , mLinearElasticDamage(linearElasticDamage)
43 , mDamageLaw(damageLaw)
45 , mInteraction(interaction)
57 TInteraction interaction = TInteraction())
61 , mLinearElasticDamage(m, damageApplication)
64 , mInteraction(interaction)
74 double eeq = data.
Value(mEeq);
75 double omega = mDamageLaw.Damage(Kappa(data));
80 Eigen::MatrixXd Neeq = data.
N(mEeq);
84 double g = mInteraction.Factor(omega);
86 gradient[mDisp] = Bdisp.transpose() * mLinearElasticDamage.Stress(strain, omega);
87 gradient[mEeq] = Neeq.transpose() * (eeq - mNorm.Value(strain)) + Beeq.transpose() * (mC * g * eeqGradient);
96 double kappa = Kappa(data);
97 double omega = mDamageLaw.Damage(kappa);
98 double dKappa_dEeq = DkappaDeeq(data);
99 double dOmega_dKappa = mDamageLaw.Derivative(kappa);
103 Eigen::MatrixXd Neeq = data.
N(mEeq);
107 double g = mInteraction.Factor(omega);
108 double dgdw = mInteraction.Derivative(omega);
111 hessian0(mDisp, mDisp) = Bdisp.transpose() * mLinearElasticDamage.DstressDstrain(strain, omega) * Bdisp;
112 hessian0(mEeq, mDisp) = -Neeq.transpose() * mNorm.Derivative(strain).transpose() * Bdisp;
113 hessian0(mEeq, mEeq) = Neeq.transpose() * Neeq + mC * g * Beeq.transpose() * Beeq +
114 Beeq.transpose() * mC * eeqGradient * dgdw * dOmega_dKappa * dKappa_dEeq * Neeq;
115 hessian0(mDisp, mEeq) = Bdisp.transpose() *
116 (mLinearElasticDamage.DstressDomega(strain, omega) * dOmega_dKappa * dKappa_dEeq) *
149 namespace NonlocalInteraction
176 return ((1. - mR) * std::exp(-mEta * omega) + mR - std::exp(-mEta)) / (1. - std::exp(-mEta));
180 return ((1. - mR) * std::exp(-mEta * omega)) / (1. - std::exp(-mEta)) * -mEta;
double Derivative(double) const
Definition: GradientDamage.h:159
Definition: LinearElasticDamage.h:16
Engineering strain.
Definition: EngineeringStrain.h:33
double mEta
Definition: GradientDamage.h:183
Implicit gradient enhanced damage model Peerlings RHJ et al.
Definition: GradientDamage.h:25
Equivalent strain (strain norm) based on the modified mises norm.
Definition: ModifiedMisesStrainNorm.h:31
const Eigen::MatrixXd & B(DofType dofType, const Nabla::Interface &b) const
Returns a memoized copy of the B matrix for a given dof type.
Definition: CellIpData.h:89
Eigen::MatrixXd mKappas
Definition: GradientDamage.h:137
double Derivative(double omega) const
Definition: GradientDamage.h:178
GradientDamage(DofType disp, ScalarDofType eeq, Material::Softening m, Laws::eDamageApplication damageApplication=Laws::eDamageApplication::FULL, TInteraction interaction=TInteraction())
ctor
Definition: GradientDamage.h:55
int ipId
Definition: CellIds.h:10
Laws::LinearElasticDamage< TDim > mLinearElasticDamage
Definition: GradientDamage.h:142
const double omega
Definition: LinearElasticDamageBenchmark.cpp:8
Similar to NuTo::CellData.
Definition: CellIpData.h:14
DofMatrix< double > Hessian0(const CellIpData &data)
Definition: GradientDamage.h:92
CellIds Ids() const
Access to the cellId and ipId, compressed in CellIds.
Definition: CellIpData.h:39
TDamageLaw mDamageLaw
Definition: GradientDamage.h:143
Results in the model used by Poh & Sun 2017, IJNME and limits the nonlocal parameter.
Definition: GradientDamage.h:166
Common material parameters for softening materials.
Definition: SofteningMaterial.h:12
Results in the model used by Peerlings et al.
Definition: GradientDamage.h:153
Decreasing(double R=0.005, double eta=5)
Definition: GradientDamage.h:168
double Factor(double omega) const
Definition: GradientDamage.h:174
DofVector< double > Gradient(const CellIpData &data)
Definition: GradientDamage.h:70
GradientDamage(DofType disp, ScalarDofType eeq, double c, Laws::LinearElasticDamage< TDim > linearElasticDamage, TDamageLaw damageLaw, Constitutive::ModifiedMisesStrainNorm< TDim > strainNorm, TInteraction interaction=TInteraction())
ctor
Definition: GradientDamage.h:36
Constitutive::ModifiedMisesStrainNorm< TDim > mNorm
Definition: GradientDamage.h:144
exponential damage omega Peerlings, R., De Borst, R., Brekelmans, W., Geers, M.
Definition: DamageLawExponential.h:23
Eigen::VectorXd Value(DofType dofType, int instance=0) const
Calculates the value of a dof at the integration point.
Definition: CellIpData.h:48
Eigen::VectorXd Apply(DofType dofType, const Nabla::Interface &b, int instance=0) const
Calculates the gradient (derivative of the value with respect to x) for a given dof type at the integ...
Definition: CellIpData.h:70
eDamageApplication
Definition: LinearElasticDamage.h:14
int cellId
Definition: CellIds.h:9
virtual double Kappa(const CellIpData &data) const
Definition: GradientDamage.h:127
virtual void Update(const CellIpData &data)
Definition: GradientDamage.h:122
dof container that is also capable of performing calculations.
Definition: DofMatrixContainer.h:13
ScalarDofType mEeq
Definition: GradientDamage.h:140
DofType mDisp
Definition: GradientDamage.h:139
Definition: DifferentialOperators.h:16
TInteraction mInteraction
Definition: GradientDamage.h:145
Definition: Exception.h:6
virtual double DkappaDeeq(const CellIpData &data) const
Definition: GradientDamage.h:132
Applies an isotropic damage variable to the linear elastic hookes law.
Definition: LinearElasticDamage.h:27
double mR
Definition: GradientDamage.h:182
Definition: DifferentialOperators.h:24
const NuTo::EngineeringStrain< 3 > strain
Definition: LinearElasticDamageBenchmark.cpp:9
gradient
Definition: NeuralNetwork.py:98
double mC
Definition: GradientDamage.h:141
const Eigen::MatrixXd & N(DofType dofType) const
Returns a memoized copy of the N matrix for a given dof type.
Definition: CellIpData.h:77
double Factor(double) const
Definition: GradientDamage.h:155