Exemple #1
0
void
Compute1DSmallStrain::computeProperties()
{
  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
  {
    _total_strain[_qp](0, 0) = (*_grad_disp[0])[_qp](0);
    _total_strain[_qp](1, 1) = computeStrainYY();
    _total_strain[_qp](2, 2) = computeStrainZZ();

    _mechanical_strain[_qp] = _total_strain[_qp];

    // Remove the eigenstrain
    for (auto es : _eigenstrains)
      _mechanical_strain[_qp] -= (*es)[_qp];
  }
}
void
Compute2DSmallStrain::computeProperties()
{
  for (_qp = 0; _qp < _qrule->n_points(); ++_qp)
  {
    _total_strain[_qp](0,0) = (*_grad_disp[0])[_qp](0);
    _total_strain[_qp](1,1) = (*_grad_disp[1])[_qp](1);
    _total_strain[_qp](0,1) = ((*_grad_disp[0])[_qp](1) + (*_grad_disp[1])[_qp](0) ) / 2.0;
    _total_strain[_qp](1,0) = _total_strain[_qp](0,1);  //force the symmetrical strain tensor
    _total_strain[_qp](2,2) = computeStrainZZ();

    //Remove thermal expansion
    _total_strain[_qp].addIa(-_thermal_expansion_coeff*( _T[_qp] - _T0 ));

    //Remove the Eigen strain
    _total_strain[_qp] -= _stress_free_strain[_qp];
  }
}