Stress: Shear Using Jourawski’s Formula#
In this example, we calculate the shear stress in a rectangular cross-section using Jourawski’s formula:
where:
\(V\) is the applied shear force,
\(S(z)\) is the first moment of area above (or below) the point \(z\),
\(I\) is the second moment of area (moment of inertia),
\(t(z)\) is the thickness at the location \(z\).
Note: This method assumes thin-walled cross-sections.For thick or solid sections, \(\tau(z)\) varies across the thickness and results may be approximate.
You can find the example as an executable Python file here.
Import Modules#
We start by importing the required classes for defining the Stress object.
[1]:
import numpy as np
from sstatics.core.preprocessing import CrossSection
from sstatics.core.preprocessing.geometry.objects import Polygon
from sstatics.core.postprocessing import CrossSectionStress
Create Cross-Section#
We start by creating a basic rectangle with a width of 10 units and a height of 40 units. This geometry is passed into the CrossSection class, which provides access to several geometric properties including area, centroid, and boundary values.
[2]:
# 1. Create a simple rectangular cross-section (width 10, height 40)
rect = Polygon(points=[(0, 0), (10, 0), (10, 40), (0, 40), (0, 0)])
cs = CrossSection(geometry=[rect])
Create Stress-Object#
CrossSectionStress.[3]:
stress = CrossSectionStress(cs)
Specify the Applied Shear Force#
For this example, we apply a shear force of:
acting along the vertical axis of the cross-section.
[4]:
V = 1000
Determine the Section Boundaries#
We retrieve the top and bottom \(z\)-coordinates of the cross-section, which will be used to evaluate shear stress at specific heights.
[5]:
_, zb = cs.boundary()
z_top, z_bottom = zb[0], zb[1]
Maximum Shear Stress#
[6]:
tau_max = stress.shear_stress(v_z=V)
print("Maximum shear stress (at centroid):", tau_max)
Maximum shear stress (at centroid): 3.7500000000000013
Shear Stress Distribution Along the Height#
We can calculate the shear stress at multiple points along the height \(z\) of the section. This allows us to see how \(\tau(z)\) varies along the cross-section:
[7]:
z_values = np.linspace(z_top, z_bottom, 9)
print("\nShear stress distribution along height:")
for z in z_values:
tau = stress.shear_stress(v_z=V, z=z)
print(f"z = {z:6.2f} tau = {tau:10.6f}")
Shear stress distribution along height:
z = 0.00 tau = 0.000000
z = 5.00 tau = 1.640625
z = 10.00 tau = 2.812500
z = 15.00 tau = 3.515625
z = 20.00 tau = 3.750000
z = 25.00 tau = 3.515625
z = 30.00 tau = 2.812500
z = 35.00 tau = 1.640625
z = 40.00 tau = 0.000000