Challenge

Independent Research Project

PROJECT REPORT

INDEPENDENT RESEARCH PROJECT

MOHR'S CIRCLES

OBJECTIVE :

The aim of this project is to construct 2D and 3D Mohr circle diagram for a specefic loading condition and to calculate principal stresses developed over the specimen using PYTHON codes.

THEORY :

2D MOHR CIRCLE

The 2-D stresses, so called plane stress problem, are usually given by the three stress components sx , sy , and txy , which consist in a two-by-two symmetric matrix (stress tensor):

(1)

What people usually are interested in more are the two prinicipal stresses s1 and s2 , which are the two eigenvalues of the two-by-two symmetric matrix of Eqn (1), and the maximum shear stress tmax , which can be calculated from s1 and s2 . Now, see the Fig. 1 below, which represents that a state of plane stress exists at point O and that it is defined by the stress components sx , sy , and txy associated with the left element in the Fig. 1. We propose to determine the stress components sxq , syq , and txyq associated with the right element after it has been rotated through an angle q about the z axis.

Fig. 1 Plane stresses in different orientations

Then, we have the following relationship:

sxq = sx cos 2 q + sy sin2 q + 2 txy sin q cos q
(2)

and

txyq = -(sx - sy ) cos2 q + txy (cos2 q - sin2 q)
(3)

Equivalently, the above two equations can be rewritten as follows:

sxq = (sx + sy)/2 + (sx - sy)/2 cos 2q + txy sin 2q
(4)

and

txyq = -(sx - sy)/2 sin 2q + txy cos 2q
(5)

The expression for the normal stress syq may be obtained by replacing the q in the relation for sxq in Eqn. 3 by q + 90o , it turns out to be

syq = (sx + sy)/2 - (sx - sy)/2 cos 2q - txy sin 2q
(6)

From the relations for sxq and syq , one obtains the circle equation:

(sxq - save)2 + t2xyq = R2m
(7)

where

save = (sx + sy)/2 = (sxq + syq)/2 ; Rm = [(sx - sy)2 / 4 + t2xy]1/2
(8)

This circle is with radius R2m and centered at C = (save , 0) if let s = sxq and t = -txyq as shown in Fig. 2 below - that is right the Mohr's Circle for plane stress problem or 2-D stress problem!

Fig. 2 Mohr's circle for plane (2-D) stress

In fact, Eqns. 4 and 5 are the parametric equations for the Mohr's circle! In Fig. 2, one reads that the point

X = (sx , -txy )
(9)

which corresponds to the point at which q = 0 and the point

A = (s1 , 0 )
(10)

which corresponds to the point at which q = qp that gives the principal stress s1 ! Note that

tan 2qp = 2txy /(sx - sy)
(11)

and the point

Y = (sy , txy )
(12)

which corresponds to the point at which q = 90o and the point

B = (s2 , 0 )
(13)

which corresponds to the point at which q = qp + 90o that gives the principal stress s2 ! To this end, one can pick the maxium normal stressess as

smax = max(s1 , s2), smin = min(s1 , s2)
(14)

Besides, finally one can also read the maxium shear stress as

tmax = Rm = [(sx - sy)2 / 4 + t2xy]1/2
(15)

which corresponds to the apex of the Mohr's circle at which q = qp + 45o !

(The end.)

Mohr's Circles for 3-D Stress Analysis

The 3-D stresses, so called spatial stress problem, are usually given by the six stress components sx , sy , sz , txy , tyz , and tzx , (see Fig. 3) which consist in a three-by-three symmetric matrix (stress tensor):

(16)

What people usually are interested in more are the three prinicipal stresses s1 , s2 , and s3 , which are eigenvalues of the three-by-three symmetric matrix of Eqn (16) , and the three maximum shear stresses tmax1 , tmax2 , and tmax3 , which can be calculated from s1 , s2 , and s3 .

Fig. 3 3-D stress state represented by axes parallel to X-Y-Z

Imagine that there is a plane cut through the cube in Fig. 3 , and the unit normal vector n of the cut plane has the direction cosines vx , vy , and vz , that is

n = (vx , vy , vz)
(17)

then the normal stress on this plane can be represented by

sn = sxv2x + syv2y + szv2z + 2 txyvxvy + 2 tyzvyvz + 2 txzvxvz
(18)

There exist three sets of direction cosines, n1, n2, and n3 - the three principal axes, which make sn achieve extreme values s1 , s2 , and s3 - the three principal stresses, and on the corresponding cut planes, the shear stresses vanish! The problem of finding the principal stresses and their associated axes is equivalent to finding the eigenvalues and eigenvectors of the following problem:

(sI3 - T3)n = 0
(19)

The three eigenvalues of Eqn (19) are the roots of the following characteristic polynomial equation:

det(sI3 - T3) = s3 - As2 + Bs - C = 0
(20)

where

A = sx + sy + sz
(21)
B = sxsy + sysz + sxsz - t2xy - t2yz - t2xz
(22)
C = sxsysz + 2 txytyztxz - sxt2yz- syt2xz- szt2xy
(23)

In fact, the coefficients A, B, and C in Eqn (20) are invariants as long as the stress state is prescribed(see e.g. Ref. 2) . Therefore, if the three roots of Eqn (20) are s1, s2 , and s3 , one has the following equations:

s1 + s2 + s3 = A
(24)
s1s2 + s2s3 + s1s3 = B
(25)
s1s2s3 = C
(26)

Numerically, one can always find one of the three roots of Eqn (20) , e.g. s1 , using line search algorithm, e.g. bisection algorithm. Then combining Eqns (24)and (25), one obtains a simple quadratic equations and therefore obtains two other roots of Eqn (20), e.g. s2 and s3 . To this end, one can re-order the three roots and obtains the three principal stresses, e.g.

s1 = max(s1 , s2 , s3)
(27)
s3 = min(s1 , s2 , s3)
(28)
s2 = (A - s1 - s2 )
(29)

Now, substituting s1 , s2 , or s3 into Eqn (19), one can obtains the corresponding principal axes n1, n2, or n3 , respectively.

Similar to Fig. 3, one can imagine a cube with their faces normal to n1, n2, or n3 . For example, one can do so in Fig. 3 by replacing the axes X,Y, and Z with n1, n2, and n3 , respectively, replacing the normal stresses sx , sy , and sz with the principal stresses s1 , s2 , and s3 , respectively, and removing the shear stresses txy , tyz , and tzx .

Now, pay attention the new cube with axes n1, n2, and n3 . Let the cube be rotated about the axis n3 , then the corresponding transformation of stress may be analyzed by means of Mohr's circle as if it were a transformation of plane stress. Indeed, the shear stresses excerted on the faces normal to the n3 axis remain equal to zero, and the normal stress s3 is perpendicular to the plane spanned by n1 and n2 in which the transformation takes place and thus, does not affect this transformation. One may therefore use the circle of diameter AB to determine the normal and shear stresses exerted on the faces of the cube as it is rotated about the n3 axis (see Fig. 4). Similarly, the circles of diameter BC and CA may be used to determine the stresses on the cube as it is rotated about the n1 and n2 axes, respectively.

Fig. 4 Mohr's circles for space (3-D) stress



What if the rotations are about the axes rather than principal axes? It can be shown that any other transformation of axes would lead to stresses represented in Fig. 4 by a point located within the area which is bounded by the bigest circle with the other two circles removed!

Therefore, one can obtain the maxium/minimum normal and shear stresses from Mohr's circles for 3-D stress as shown in Fig. 4!

Note the notations above (which may be different from other references), one obtains that

smax = s1
(30)
smin = s3
(31)
tmax = (s1 - s3)/2 = tmax2
(32)

Note that in Fig. 4, tmax1 , tmax2 , and tmax3 are the maximum shear stresses obtained while the rotation is about n1, n2, and n3 , respectively.

INPUT PARAMETERS :

1. For 2D Mohr circle, sigma x, sigma y and tau x i.e, Tensile stress, Compression stress (magnitude) shear stress are inputs for the 2D tensor.

2. For 3D Mohr circle, a 3 by 3 symmetric stress sensor are inputs.

PYTHON CODE :

1. For 2D Mohr circle

"""
Mohr circle in 2D.
"""
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.family'] = 'serif'
rcParams['font.size'] = 16


def mohr(S):
    """Plot Mohr circle for a 2D tensor"""
    S11 = S[0][0]
    S12 = S[0][1]
    S22 = S[1][1]
    center = [(S11 + S22)/2.0, 0.0]
    radius = np.sqrt((S11 - S22)**2/4.0 + S12**2)
    Smin = center[0] - radius
    Smax = center[0] + radius

    print("Minimum Normal Stress: %g" % Smin)
    print("Maximum Normal Stress: %g" % Smax)
    print("Average Normal Stress: %g" % center[0])
    print("Minimum Shear Stress: %g" % -radius)
    print("Maximum Shear Stress: %g" % radius)

    circ = plt.Circle((center[0],0), radius, facecolor='#cce885', lw=3,
    edgecolor='#5c8037')
    plt.axis('image')
    ax = plt.gca()
    ax.add_artist(circ)
    ax.set_xlim(Smin - .1*radius, Smax + .1*radius)
    ax.set_ylim(-1.1*radius, 1.1*radius)
    plt.plot([S22, S11], [S12, -S12], 'ko')
    plt.plot([S22, S11], [S12, -S12], 'k')
    plt.plot(center[0], center[1], 'o', mfc='w')
    plt.text(S22 + 0.1*radius, S12, 'A')
    plt.text(S11 + 0.1*radius, -S12, 'B')
    plt.xlabel(r"$\sigma$", size=18)
    plt.ylabel(r"$\tau$", size=18)
    plt.show()
    return None

ts = float(input('Enter tensile stress(magnitude) in kPa at given state:'))
ss = float(input('Enter shear stress(magnitude) in kPa at given state:'))
cs = float(input('Enter compression stress(magnitude) in kPa at given state:'))
cs = -cs

S = np.array([[ts, ss],[ss, cs]])
mohr(S)

2. For 3D Mohr circle

"""
Mohr circle in 3D.
"""

import numpy as np
import matplotlib.pyplot as plt
from scipy.linalg import eigvalsh
from matplotlib import rcParams

rcParams['font.family'] = 'serif'
rcParams['font.size'] = 16


def plot_mohr3d(S):
    """Plot 3D Mohr circles."""

    S3, S2, S1 = eigvalsh(S)

    R_maj = 0.5*(S1 - S3)
    cent_maj = 0.5*(S1+S3)

    R_min = 0.5*(S2 - S3)
    cent_min = 0.5*(S2 + S3)

    R_mid = 0.5*(S1 - S2)
    cent_mid = 0.5*(S1 + S2)

    circ1 = plt.Circle((cent_maj,0), R_maj, facecolor='#cce885', lw=3,
                       edgecolor='#5c8037')
    circ2 = plt.Circle((cent_min,0), R_min, facecolor='w', lw=3,
                       edgecolor='#15a1bd')
    circ3 = plt.Circle((cent_mid,0), R_mid, facecolor='w', lw=3,
                       edgecolor='#e4612d')

    print("Minimum Normal Stress: ",float(cent_maj) - float(R_maj))
    print("Maximum Normal Stress: ", float(cent_maj) + float(R_maj))
    print("Average Normal Stress: ", float(cent_maj))
    print("Minimum Shear Stress: ", float(-R_maj))
    print("Maximum Shear Stress: ", float(R_maj))

    plt.axis('image')
    ax = plt.gca()
    ax.add_artist(circ1)
    ax.add_artist(circ2)
    ax.add_artist(circ3)
    ax.set_xlim(S3 - .1*R_maj, S1 + .1*R_maj)
    ax.set_ylim(-1.1*R_maj, 1.1*R_maj)
    plt.xlabel(r"$\sigma$", size=18)
    plt.ylabel(r"$\tau$", size=18)
    #plt.savefig('Mohr_circle_3D.svg')
    plt.show()

ts = float(input('Enter tensile stress(magnitude) in kPa at given state:'))
ss = float(input('Enter shear stress(magnitude) in kPa at given state:'))
cs = float(input('Enter compression stress(magnitude) in kPa at given state:'))


S = np.array([
    [ts,ss,0],
    [ss,cs,0],
    [0,0,0]])

plt.figure()
plot_mohr3d(S)

RESULTS :

1. For 2D Mohr Circle

For sigma x = 100 kPa; For sigma y = -60 kPa; For tau xy = 48 kPa;

Validation of results :

1. For 3D Mohr Circle

For sigma xx = 6 kPa; For tau xy= -3 kPa; For tau xz = 0 kPa;

For tau yx= -3 kPa; For sigma yy = 3.5 kPa; For tau yz = 0 kPa;

For tau zx= 0 kPa; For tau zy= 0 kPa;For sigma zz = 0 kPa;

Validation of results :

CONCLUSION :

Mohr circle has a great significance in the study of solid mechanics. Mohr’s circle has been used as a graphical method for performing coordinate transformations for stress, but the technique applies equally well to any 2x2 tensor matrix. Mohr’s circle also provides rapid graphical estimations for eigenvalues and eigenvectors, which is extremely useful for verifying analytical results. Mohr’s circle is not just for stress tensors, but it is typically taught in only that context in introductory materials mechanics courses. For stress tensors, Mohr’s circle can be used to visualize and to determine graphically the normal and shear stresses acting on a plane of any given orientation. For symmetric tensors, Mohr’s circle can be generalized to 3x3 matrices for a graphical depiction of the set of all possible normal and shear components. The traditional definition of Mohr’s circle for symmetric matrices is presented with numerous examples for performing coordinate transformations, finding the plane(s) of maximum shear, and identifying eigenvalues and eigenvectors. An important but little-known enhancement to Mohr’s circle (called the Pole Point) is shown to rectify counter-intuitive factors of 2 when converting angles in physical space to angles in the Mohr diagram. The extension of Mohr’s circle to 3x3 matrices is presented with application to the Mohr-Coulomb theory of material failure. The basic construction of Mohr’s circle is shown to apply with only minor modification to nonsymmetric matrices, in which case the circle no longer remains symmetric about the normal axis. Applications of nonsymmetric. Mohr’s circle include rapid eigenvalue/eigenvector determination and fast polar decompositions for deformation matrices. A numerical exploration is presented that suggests there is no simple extension of Mohr’s circle to 3x3 nonsymmetric matrices. Hence, this project helps to determine the principal stresses by using Mohr Theory with limited inputs.

Your portfolio, next

Ship work like this
in your own course.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.

Talk to a career counsellor

Free 20-minute call. We'll map the right course to where you want to work.

By submitting you agree to our Terms and Privacy Policy.