Commit cb25bd34 authored by Antoine Jacquey's avatar Antoine Jacquey

Added damage heat

parent c9c43cec
...@@ -54,6 +54,7 @@ protected: ...@@ -54,6 +54,7 @@ protected:
virtual Real getConvexProjection(const Real & x1, const Real & x2); virtual Real getConvexProjection(const Real & x1, const Real & x2);
virtual Real strainRatio(const RankTwoTensor & elastic_strain); virtual Real strainRatio(const RankTwoTensor & elastic_strain);
virtual RankTwoTensor rotatedElasticStrain(const RankTwoTensor & elastic_strain); virtual RankTwoTensor rotatedElasticStrain(const RankTwoTensor & elastic_strain);
virtual void computeQpThermalSources() override;
// Coupled variables // Coupled variables
bool _coupled_dam; bool _coupled_dam;
...@@ -86,6 +87,7 @@ protected: ...@@ -86,6 +87,7 @@ protected:
// Damage properties // Damage properties
MaterialProperty<Real> & _damage_rate; MaterialProperty<Real> & _damage_rate;
MaterialProperty<Real> & _damage_heat;
}; };
#endif // LYNXDAMAGEDEFORMATION_H #endif // LYNXDAMAGEDEFORMATION_H
...@@ -73,7 +73,7 @@ protected: ...@@ -73,7 +73,7 @@ protected:
virtual void updateCreepParameters(); virtual void updateCreepParameters();
virtual Real rootBrent(iterative_viscous & viscous_model, const Real x1, const Real x2); virtual Real rootBrent(iterative_viscous & viscous_model, const Real x1, const Real x2);
virtual Real rootNewtonSafe(iterative_viscous & viscous_model, const Real x1, const Real x2); virtual Real rootNewtonSafe(iterative_viscous & viscous_model, const Real x1, const Real x2);
void computeQpThermalSources(); virtual void computeQpThermalSources();
// Coupled variables // Coupled variables
unsigned int _ndisp; unsigned int _ndisp;
......
...@@ -86,7 +86,8 @@ LynxDamageDeformation::LynxDamageDeformation(const InputParameters & parameters) ...@@ -86,7 +86,8 @@ LynxDamageDeformation::LynxDamageDeformation(const InputParameters & parameters)
_dstress_ddamage(declareProperty<RankTwoTensor>("dstress_ddamage")), _dstress_ddamage(declareProperty<RankTwoTensor>("dstress_ddamage")),
_ddamage_rate_dstrain(declareProperty<RankTwoTensor>("ddamage_rate_dstrain")), _ddamage_rate_dstrain(declareProperty<RankTwoTensor>("ddamage_rate_dstrain")),
// Damage properties // Damage properties
_damage_rate(declareProperty<Real>("damage_rate")) _damage_rate(declareProperty<Real>("damage_rate")),
_damage_heat(declareProperty<Real>("damage_heat"))
{ {
_has_plasticity = isParamValid("friction_angle"); _has_plasticity = isParamValid("friction_angle");
...@@ -628,3 +629,19 @@ LynxDamageDeformation::rotatedElasticStrain(const RankTwoTensor & elastic_strain ...@@ -628,3 +629,19 @@ LynxDamageDeformation::rotatedElasticStrain(const RankTwoTensor & elastic_strain
return strain_rot; return strain_rot;
} }
void
LynxDamageDeformation::computeQpThermalSources()
{
LynxDeformationBase::computeQpThermalSources();
if (_has_plasticity)
{
Real I2 = Utility::pow<2>(_elastic_strain[_qp].L2norm());
Real xi = strainRatio(_elastic_strain[_qp]);
Real dPsi_dalpha = _damage_plasticity->_gamma * I2 * (xi - _damage_plasticity->_xi0);
_damage_heat[_qp] = dPsi_dalpha * _damage_rate[_qp];
}
else
_damage_heat[_qp] = 0.0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment