CivilKit Calcs

Principal stress calculator

The principal stresses at a point are the normal stresses on the planes where the shear stress vanishes. Mathematically they are the eigenvalues of the stress tensor, and the principal directions are its eigenvectors. This sheet finds both with one function call each, for a plane stress state and for a general 3D one, with the stresses in MPa, and checks the plane result against Mohr's circle.

Open this sheet in Calcs Open a blank sheet

Plane stress

The stress tensor is written as a 2 by 2 matrix with units: S = [sigma_x, tau_xy; tau_xy, sigma_y]. The function eigenvals(S) returns the principal stresses in ascending order, so the major one is the second. eigenvecs(S) returns unit vectors along the principal directions, one per row in the same order. For sigma_x = 80 MPa, sigma_y = -40 MPa and tau_xy = 25 MPa, the engine gives:

QuantityResult
Major principal stress85 MPa
Minor principal stress-45 MPa
Maximum in-plane shear stress65 MPa
Angle of the major direction from x (degrees)11.31

Try it

Open the sheet in Calcs or embed it.

The Mohr's circle check

The same results by the classical construction: the circle's centre is the mean normal stress (sigma_x + sigma_y) / 2, its radius is R = sqrt(((sigma_x - sigma_y) / 2)^2 + tau_xy^2), the principal stresses are the centre plus and minus the radius, and the angle is atan(2 tau_xy / (sigma_x - sigma_y)) / 2.

QuantityResult
Centre of the circle20 MPa
Radius R65 MPa
Major principal stress from the circle85 MPa
Minor principal stress from the circle-45 MPa
Angle from the circle (degrees)11.31

The eigenvalue and the circle agree to the decimals shown, and the maximum shear stress is the radius of the circle.

A 3D stress state

For a general stress state the tensor is 3 by 3, and the same two calls work. With T = [60, 20, -10; 20, -30, 15; -10, 15, 40] MPa the three principal stresses are 66.15 MPa, 41.72 MPa and -37.87 MPa. Mohr's circle has no simple 3D form, so the check here is an invariant: the trace of the tensor, 70 MPa, equals the sum of the principal stresses, 70 MPa, as it must for any rotation of the axes.

Why eigenvalues give principal stresses

Rotating the axes changes the components of the stress tensor but not the state of stress. In the principal axes the tensor is diagonal: no shear, only normal stresses. Finding those axes is the eigenvalue problem of the matrix. Because the stress tensor is symmetric, its eigenvalues are real and its eigenvectors are at right angles to each other, which is why the principal planes are always perpendicular.

The sheet source

The sample as it ships (this page adds three lines that pick out the 3D principal stresses):

# Principal stresses

The stress state at a point is a symmetric tensor. Its eigenvalues are the principal
stresses and its eigenvectors are the principal directions, so `eigenvals` and `eigenvecs`
give both in one call each. Mohr's circle checks the result.

## Plane stress

sigma_x: 80 MPa
sigma_y: -40 MPa
tau_xy: 25 MPa

S: [sigma_x, tau_xy; tau_xy, sigma_y]

The eigenvalues come in ascending order, so the major principal stress is the last one.

sigma_p: eigenvals(S)
sigma_1: sigma_p.2
sigma_2: sigma_p.1
tau_max: (sigma_1 - sigma_2)/2

Each row of `eigenvecs` is a unit vector along one principal direction, in the same order.
The angle of the major direction from the x axis (a direction, so the sign of the vector does not matter):

V: eigenvecs(S)
theta_p: atan(V.(2, 2)/V.(2, 1))

### Check with Mohr's circle

sigma_avg: (sigma_x + sigma_y)/2
R: sqrt(((sigma_x - sigma_y)/2)^2 + tau_xy^2) -> MPa
sigma_1c: sigma_avg + R
sigma_2c: sigma_avg - R
theta_pc: atan(2*tau_xy/(sigma_x - sigma_y))/2

## A general 3D stress state

T: [60 MPa, 20 MPa, -10 MPa; 20 MPa, -30 MPa, 15 MPa; -10 MPa, 15 MPa, 40 MPa]
sigma_3D: eigenvals(T)
N: eigenvecs(T)

The sum of the principal stresses equals the first invariant, the trace of the tensor:

I_1: trace(T)
I_1c: sum(sigma_3D)

s_a: sigma_3D.1 | smallest
s_b: sigma_3D.2 | middle
s_c: sigma_3D.3 | largest

Questions

What are principal stresses?

The normal stresses on the planes through a point where the shear stress is zero. There are two in plane stress and three in 3D, and they are the largest and smallest normal stresses at that point.

How is the maximum shear stress found?

In plane stress it is half the difference of the principal stresses, the radius of Mohr's circle. Here that is 65 MPa.

Does it handle units?

Yes. The tensor is entered in MPa and the principal stresses come back in MPa. Enter the components in kPa or psi and the results follow.

Which way is the angle measured?

From the x axis to the major principal direction, in degrees with the default angle setting. A direction has no sign, so an eigenvector and its negative describe the same axis.

Open this sheet in Calcs Open a blank sheet