Stress: First and Second Piola Kirchhoff Stress Tensors
Definitions
The Cauchy stress tensor defined previously, related area vectors n to traction vectors in the current state of deformation of a material object. The first and second Piola-Kirchhoff stress tensors extend the concept of “true” and “engineering” stress to the three-dimensional case and operate on area vectors in the undeformed state of the material. Assume that the area vector before any forces are applied to a continuum is equal to where is the magnitude of the area and is the vector perpendicular to the underformed area. Assume that the forces applied lead to a deformation described by the linear mapping such that where . Let the area vector after deformation be where is the magnitude of the deformed area and is the vector perpendicular to the deformed area. Then, using Nanson’s formula:
The blue vectors in Figure 1 show a schematic of two undeformed unit area vectors and and their respective images and after transformation by a linear mapping . After deformation, the force vector acting on an area with normal and magnitude is equal to . The first Piola-Kirchhoff stress tensor is defined as the tensor producing the same force vector when applied to the corresponding undeformed area vector :
Using Nanson’s formula:
Therefore,
Which results in the following relationship between and :
Note that the above relationship indicates that is not necessarily a symmetric matrix. The term “Nominal Stress Tensor” is sometimes used in the literature in reference to the first Piola-Kirchhoff stress or its transpose. The red vectors in Figure 1 show a schematic of the forces acting on the deformed area vectors and when viewed in the deformed configuration or when viewed in the undeformed configuration. On the other hand, the second Piola-Kirchhoff stress tensor is defined as the tensor producing a force vector when applied to the undeformed area vector . is sometimes termed the “pull-back” of the force vector . The relationship between and can be obtained as follows:
Therefore:
Using Nanson’s formula:
Which results in the following relationship between and :
Therefore S is a symmetric tensor!
Notice that the relationship between and is:
The black vectors in Figure 1 show a schematic of the and which are the “pull-back” of the force vectors and .
The illustrative examples 1, 2, and 3 in the energy section can help clarify the difference between the three major stress tensors.
Example
Consider . Assume that a region inside a material deforms with the following deformation gradient :
Assume that the stress in the deformed configuration is described by the matrix:
Find:
The area vectors after deformation of the two original unit areas with area vectors and .
The first and second Piola-Kirchhoff stress matrices.
The force vectors on the deformed planes whose undeformed unit area vectors are and using the Cauchy stress matrix.
The force vectors produced by applying the first Piola-Kirchhoff stress tensor on the undeformed unit area vectors and .
The force vectors produced by applying the second Piola-Kirchhoff stress tensor on the undeformed unit area vectors and .
Solution
Using Nanson’s formula (with ):
Where and are the magnitudes of the “deformed” areas and and are the corresponding normal vectors to the areas whose original normal vectors before deformation are and , respectively. The first and second Piola-Kirchhoff stress matrices and are:
The force vectors on the deformed area vectors and are:
The force vectors on the original (undeformed) area vectors and obtained using the first Piola-Kirchoff stress are exactly the same ():
The force vectors on the original area vectors and when using the Second Piola-Kirchhoff stress ():
Notice that and . Figure 1 shows the deformation of an originally square object of unit length and the corresponding deformation of areas. The force vectors are also shown on the different areas before and after deformation. The Cauchy stress and the first Piola-Kirchhoff stress tensors produce the same force vectors. The Cauchy stress matrix can intuitively be viewed as the force in the deformed configuration per unit area of the deformed configuration. The first Piola-Kirchhoff stress matrix can intuitively be viewed as the force in the deformed configuration per unit area of the undeformed configuration, while the second Piola-Kirchhoff stress can intuitively be viewed as the force in the undeformed configuration per unit area of the undeformed configuration. Notice that all these stress measures are equivalent, but they are useful for different applications.
View Mathematica Code
Bx=Rectangle[{0,0}];
Bx2=GeometricTransformation[Bx,F];
Sigma={{5,2},{2,3}};
N1={1,0};
N2={0,1};
Farea=Det[F]*Transpose[Inverse[F]];
an1=Farea.N1;
an2=Farea.N2;
tn1=Transpose[Sigma].an1
tn2=Transpose[Sigma].an2
FirstPiola=Transpose[Sigma].Inverse[Transpose[F]]*Det[F];
SecondPiola=Inverse[F].FirstPiola;
TN1=FirstPiola.N1;
TN2=FirstPiola.N2;
STN1=SecondPiola.N1;
STN2=SecondPiola.N2;
Pt11=F.N1+1/2*F.N2;
Pt12=Pt11+an1;
Pt21=1/2*F.N1+F.N2;
Pt22=Pt21+an2;
ar1=Arrow[{Pt11,Pt12}];
ar2=Arrow[{Pt21,Pt22}];
A1dotted=Arrow[{Pt11,Pt11+{1,0}}];
A2dotted=Arrow[{Pt21,Pt21+{0,1}}];
A1=Arrow[{{1,0.5},{2,0.5}}];
A2=Arrow[{{0.5,1},{0.5,2}}];
artn1=Arrow[{Pt11,Pt11+1/10*tn1}];
artn2=Arrow[{Pt21,Pt21+1/10*tn2}];
arTN1=Arrow[{{1,0.5},{1,0.5}+1/10*TN1}];
arTN2=Arrow[{{0.5,1},{0.5,1}+1/10*TN2}];
arSTN1=Arrow[{{1,0.5},{1,0.5}+1/10*STN1}];
arSTN2=Arrow[{{0.5,1},{0.5,1}+1/10*STN2}];
Graphics[{Black,Bx,A1,A2,GrayLevel[0.1],arTN1,arTN2,GrayLevel[0.5],arSTN1,arSTN2}]
Graphics[{Black,Bx2,ar1,ar2,GrayLevel[0.1],artn1,artn2,Dashed,GrayLevel[0.5],A1dotted,A2dotted}]
View Python Code
from sympy import Matrix import sympy as sp from matplotlib import pyplot as plt F = Matrix([[1.2,0.4],[0.4,1.2]]) coordinates=[[0,0],[0,1],[1,1],[1,0],[0,0]] newcoordinates=[F*Matrix(coordinates[i]) for i in range(len(coordinates))] bx =[Matrix(coordinates)[:,0], Matrix(coordinates)[:,1]] bx2 = [[newcoordinates[i][0] for i in range(5)],[newcoordinates[i][1] for i in range(5)]] Sigma = Matrix([[5,2],[2,3]]) N1 = Matrix([1,0]) N2 = Matrix([0,1]) Farea = F.det()*F.T.inv() an1 = Farea*N1 an2 = Farea*N2 tn1 = Sigma.T*an1 tn2 = Sigma.T*an2 FirstPiola = Sigma.T*F.T.inv()*F.det() SecondPiola = F.inv()*FirstPiola TN1 = FirstPiola*N1 TN2 = FirstPiola*N2 STN1 = SecondPiola*N1 STN2 = SecondPiola*N2 Pt11 = F*N1+1/2*F*N2 Pt12 = Pt11+an1 Pt21 = 1/2*F*N1+F*N2 Pt22 = Pt21+an2 ar1 = Matrix([Pt11,Pt12]).reshape(2,2) ar2 = Matrix([[Pt21],[Pt22]]).reshape(2,2) A1dotted = Matrix([Pt11,Pt11+Matrix([1,0])]).reshape(2,2) A2dotted = Matrix([Pt21,Pt21+Matrix([0,1])]).reshape(2,2) A1 = Matrix([[1,0.5],[2,0.5]]) A2 = Matrix([[0.5,1],[0.5,2]]) artn1 = Matrix([Pt11,Pt11+tn1/10]).reshape(2,2) artn2 = Matrix([Pt21,Pt21+tn2/10]).reshape(2,2) arTN1 = Matrix([Matrix([1,0.5]),Matrix([1,0.5])+TN1/10]).reshape(2,2) arTN2 = Matrix([Matrix([0.5,1]),Matrix([0.5,1])+TN2/10]).reshape(2,2) arSTN1 = Matrix([Matrix([1,0.5]),Matrix([1,0.5])+STN1/10]).reshape(2,2) arSTN2 = Matrix([Matrix([0.5,1]),Matrix([0.5,1])+STN2/10]).reshape(2,2) fig, ax = plt.subplots(2, figsize=(6,8)) def plotArrow(p,M,t): x,y,dx,dy = M[0,0],M[0,1],float(M[1,0]-M[0,0]),float(M[1,1]-M[0,1]) p.arrow(x,y,dx,dy,length_includes_head = True,head_width=.05, head_length=.05,alpha=t) plotArrow(ax[0],A1,1) plotArrow(ax[0],A2,1) plotArrow(ax[0],arTN1,1) plotArrow(ax[0],arTN2,1) plotArrow(ax[0],arSTN1,.5) plotArrow(ax[0],arSTN2,.5) #rectangle coordinates ax[0].plot(bx[0][:],bx[1][:]) ax[1].plot(bx2[0][:],bx2[1][:]) plotArrow(ax[1],ar1,1) plotArrow(ax[1],ar2,1) plotArrow(ax[1],artn1,1) plotArrow(ax[1],artn2,1) plotArrow(ax[1],A1dotted,.5) plotArrow(ax[1],A2dotted,.5) for i in ax: i.grid(True, which='both') i.axhline(y = 0, color = 'k',alpha = 0.5) i.axvline(x = 0, color = 'k',alpha = 0.5) i.set_xlabel("x") i.set_ylabel("y")
In the following tool, change the values of and and watch how they affect the resulting deformation and forces acting on the different faces.
Video
Concrete (Simple Criterion)
Concrete Failure. How to Measure and
In Tension: (Notice the Notch)
Soil Failure
Metals Tensile Test
Materials Tensile Test 2 (What do you think about the assumption that ?)
-->