628 const int numMeshes =
_meshes.size();
629 for (
int n=0; n<numMeshes; n++)
643 const TArray& lambdaCell =
653 const int nCells = cells.
getCount();
654 const T onethird(1.0/3.0);
656 const T twothirds(2.0/3.0);
664 for(
int k=0; k<nCells; k++)
667 VGradType wgPlusTranspose = wGradCell[k];
669 const VGradType pS = plasticStrainCell[k];
673 wgPlusTranspose[i][j] += wg[j][i];
675 stress[0][0] = wgPlusTranspose[0][0]*muCell[k]-
676 two*pS[0][0]*muCell[k]+
677 (wg[0][0]+wg[1][1]+wg[2][2])*lambdaCell[k];
678 stress[0][1] = wgPlusTranspose[0][1]*muCell[k]-
679 two*pS[0][1]*muCell[k];
680 stress[0][2] = wgPlusTranspose[0][2]*muCell[k]-
681 two*pS[0][2]*muCell[k];
683 stress[1][0] = wgPlusTranspose[1][0]*muCell[k]-
684 two*pS[1][0]*muCell[k];
685 stress[1][1] = wgPlusTranspose[1][1]*muCell[k]-
686 two*pS[1][1]*muCell[k]+
687 (wg[0][0]+wg[1][1]+wg[2][2])*lambdaCell[k];
688 stress[1][2] = wgPlusTranspose[1][2]*muCell[k]-
689 two*pS[1][2]*muCell[k];
691 stress[2][0] = wgPlusTranspose[2][0]*muCell[k]-
692 two*pS[2][0]*muCell[k];
693 stress[2][1] = wgPlusTranspose[2][1]*muCell[k]-
694 two*pS[2][1]*muCell[k];
695 stress[2][2] = wgPlusTranspose[2][2]*muCell[k]-
696 two*pS[2][2]*muCell[k]+
697 (wg[0][0]+wg[1][1]+wg[2][2])*lambdaCell[k];
701 stress[0][0]-=(pS[0][0]+pS[1][1]+pS[2][2])*lambdaCell[k];
702 stress[1][1]-=(pS[0][0]+pS[1][1]+pS[2][2])*lambdaCell[k];
703 stress[2][2]-=(pS[0][0]+pS[1][1]+pS[2][2])*lambdaCell[k];
706 devStress[k] = stress;
707 const T trace = stress[0][0]+stress[1][1]+stress[2][2];
708 (devStress[k])[0][0] = (devStress[k])[0][0] - onethird*trace;
709 (devStress[k])[1][1] = (devStress[k])[1][1] - onethird*trace;
710 (devStress[k])[2][2] = (devStress[k])[2][2] - onethird*trace;
712 VMStress[k] =
sqrt(half*(pow((stress[0][0]-stress[1][1]),2.0) +
713 pow((stress[1][1]-stress[2][2]),2.0) +
714 pow((stress[2][2]-stress[0][0]),2.0) +
715 six*(pow((stress[0][1]),2.0) +
716 pow((stress[1][2]),2.0) +
717 pow((stress[2][0]),2.0))));
722 for(
int k=0; k<nCells; k++)
725 VGradType wgPlusTranspose = wGradCell[k];
727 const VGradType pS = plasticStrainCell[k];
731 wgPlusTranspose[i][j] += wg[j][i];
733 stress[0][0] = wgPlusTranspose[0][0]*muCell[k]-
734 two*pS[0][0]*muCell[k]+
735 (wg[0][0]+wg[1][1]+wg[2][2])*lambdaCell[k];
736 stress[0][1] = wgPlusTranspose[0][1]*muCell[k]-
737 two*pS[0][1]*muCell[k];
738 stress[0][2] = wgPlusTranspose[0][2]*muCell[k]-
739 two*pS[0][2]*muCell[k];
741 stress[1][0] = wgPlusTranspose[1][0]*muCell[k]-
742 two*pS[1][0]*muCell[k];
743 stress[1][1] = wgPlusTranspose[1][1]*muCell[k]-
744 two*pS[1][1]*muCell[k]+
745 (wg[0][0]+wg[1][1]+wg[2][2])*lambdaCell[k];
746 stress[1][2] = wgPlusTranspose[1][2]*muCell[k]-
747 two*pS[1][2]*muCell[k];
752 stress[0][0]+=(pS[2][2])*lambdaCell[k];
753 stress[1][1]+=(pS[2][2])*lambdaCell[k];
760 devStress[k] = stress;
761 const T trace = stress[0][0]+stress[1][1]+stress[2][2];
762 (devStress[k])[0][0] = (devStress[k])[0][0] - onethird*trace;
763 (devStress[k])[1][1] = (devStress[k])[1][1] - onethird*trace;
764 (devStress[k])[2][2] = (devStress[k])[2][2] - onethird*trace;
774 VMStress[k] =
sqrt(half*(pow((stress[0][0]-stress[1][1]),2.0) +
775 pow((stress[1][1]-stress[2][2]),2.0) +
776 pow((stress[2][2]-stress[0][0]),2.0) +
777 six*(pow((stress[0][1]),2.0) +
778 pow((stress[1][2]),2.0) +
779 pow((stress[2][0]),2.0))));
GradientModel< VectorT3 > _deformationGradientModel
Tangent sqrt(const Tangent &a)
StructureFields & _structureFields
const StorageSite & getCells() const
Array< Gradient< VectorT3 > > VGradArray
Gradient< VectorT3 > VGradType
StructureModelOptions< T > _options
Field deformationGradient