void
HyperElasticPhaseFieldIsoDamage::computePK2StressAndDerivative()
{
  computeElasticStrain();

  _save_state = true;
  computeDamageStress();
  _pk2[_qp] = _pk2_tmp;

  _save_state = false;
  if (_num_stiffness)
    computeNumStiffness();

  if (_num_stiffness)
    _dpk2_dce = _dpk2_dee * _dee_dce;

  _dce_dfe.zero();
  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
    for (unsigned int j = 0; j < LIBMESH_DIM; ++j)
      for (unsigned int k = 0; k < LIBMESH_DIM; ++k)
      {
        _dce_dfe(i, j, k, i) = _dce_dfe(i, j, k, i) + _fe(k, j);
        _dce_dfe(i, j, k, j) = _dce_dfe(i, j, k, j) + _fe(k, i);
      }

  _dpk2_dfe = _dpk2_dce * _dce_dfe;
}
void
FiniteStrainHyperElasticViscoPlastic::computePK2StressAndDerivative()
{
  computeElasticStrain();
  _pk2[_qp] = _elasticity_tensor[_qp] * _ee;

  _dce_dfe.zero();
  for (unsigned int i = 0; i < LIBMESH_DIM; ++i)
    for (unsigned int j = 0; j < LIBMESH_DIM; ++j)
      for (unsigned int k = 0; k < LIBMESH_DIM; ++k)
      {
        _dce_dfe(i, j, k, i) = _dce_dfe(i, j, k, i) + _fe(k, j);
        _dce_dfe(i, j, k, j) = _dce_dfe(i, j, k, j) + _fe(k, i);
      }

  _dpk2_dfe = _dpk2_dce * _dce_dfe;
}