#038 - Stress and Strain in Structural Engineering: A Refresher
A review of engineering fundamentals through the lens of Python.
This post is a guest article for Structural Basics, a website dedicated to sharing structural engineering knowledge in the easiest possible way.
Firstly, I'd like to extend my appreciation to Laurin and the archive of helpful material he has developed for engineers through Structural Basics.
Structural Basics provides clear, practical insights and is a fantastic resource for those interested in engineering fundamentals and their real-world implementation. There’s no other newsletter out there quite like the Structural Basics newsletter, and I’m pleased to contribute.
Now, let’s talk about stress and strain.
Stress and strain are pivotal ideas in many branches of engineering, forming the backbone of material behaviour analysis under various loads. These principles are integral to structure design, analysis, and assessment.
While I appreciate that most engineers already understand this, there is great value in reviewing these ideas every so often to gain new insights.
In this article, we will explore stress-strain relationships, material-specific behaviours, and analytical methods, complemented by simple Python code examples to illustrate key calculations.
If you’re unfamiliar with Python, fear not; the code will be explained as we progress.
If you are interested in Python and its many wonderful Structural and Civil Engineering applications, you can review many more articles at flocode.substack.com.
Stress and strain are much more than abstract concepts from engineering textbooks; they are the fundamental forces that determine whether structures stand or collapse. Consider the intricate interplay of forces within a tied-arch bridge as it supports vehicles or the invisible tensions within a skyscraper swaying in the wind. These forces, quantified as stress and strain, govern the safety and durability of all engineered structures.
We will revisit these fundamentals, not through dry academic discourse, but by igniting a deeper curiosity and appreciation for the mechanics behind stress and strain. By blending technical insights with intuitive analogies and real-world examples, we will enrich our understanding and application of these concepts.
I highly recommend ‘Structures: Or Why Things Don’t Fall Down’ by JE Gordon. It is a great book and an enjoyable read with fantastic analogies that help clarify many complex concepts in engineering.
Historical Context
The journey to understanding stress and strain has been long and winding. Early pioneers like Galileo and Hooke made significant strides in understanding material behaviour, yet they often viewed structures as whole entities rather than focusing on the forces at individual points within the material. This approach led to complex and often convoluted theories that puzzled even the brightest minds of their time.
The breakthrough came in 1822 when Augustin Cauchy introduced the concepts of stress and strain in a paper presented to the French Academy of Sciences. This paradigm shift allowed engineers to analyze materials at a granular level, understanding how forces and deformations interact within the material itself. Cauchy's work transformed the study of elasticity from a philosophical exercise into a practical tool for engineers, simplifying the design and analysis of structures.
Fundamentals of Stress and Strain
Stress is defined as the internal force per unit area within a material. It is typically measured in Pascals (Pa) or pounds per square inch (psi). Mathematically, it is expressed as:
Where:
σ is the stress,
F is the internal force,
A is the cross-sectional area.
Strain is the measure of deformation representing the displacement between particles in the material body. It is a dimensionless quantity and is given by:
Where:
ϵ is the strain,
ΔL is the change in length,
L_0 is the original length.
Let us examine a Python function that calculates stress and strain.
A Python function is a reusable block of code designed to perform a specific task. It can take inputs, called arguments (force and area), and return an output (stress). Functions help organize and modularize code, making it easier to read, maintain, and reuse. They are defined using the def
keyword followed by the function name and parentheses containing any parameters.
# Function to calculate stress
def calculate_stress(force, area):
return force / area
This function, calculate_stress
, takes two arguments: force
and area
. It returns the stress, calculated by dividing the force by the area.
# Function to calculate strain
def calculate_strain(delta_length, original_length):
return delta_length / original_length
This function, calculate_strain
, takes two arguments: delta_length
and original_length
. It returns the strain, calculated by dividing the change in length (delta_length
) by the original length (original_length
).
# Example usage
force = 5000 # Newtons
area = 50 # mm²
delta_length = 0.2 # mm
original_length = 1000 # mm
stress = calculate_stress(force, area)
strain = calculate_strain(delta_length, original_length)
print(f"Stress: {stress} N/mm²")
print(f"Strain: {strain}")
Stress: 100.0 N/mm²
Strain: 0.0002
In this example, we complete the following:
Define variables for force, area, change in length, and original length with appropriate units.
Calculate stress and strain using the defined functions.
Print the results.
The output will show the stress in (N/mm²) and the strain as a dimensionless ratio.
To truly grasp stress and strain, consider stress as the “pressure” within solids, like the pressure in a car’s tires or a basketball. Strain, on the other hand, is the “stretching” of bonds between atoms, similar to how a basketball deforms as it bounces or a rubber band elongates when pulled.
Imagine stretching the rubber band. The rubber band resists as you pull, creating stress within the material. The elongation you observe is the strain. Similarly, consider a cable supporting a bridge deck. The force exerted by the deck creates stress in the cable, while the elongation of the cable represents strain.
Stress-Strain Relationship
Understanding the stress-strain relationship is crucial for predicting material behaviour under load. Hooke's Law describes the linear relationship between stress and strain in the elastic region.
Beyond the elastic limit, materials exhibit plastic deformation, characterized by permanent changes in shape. The stress-strain curve highlights key points such as the yield point, ultimate tensile strength, and failure point, which are crucial for defining material limits.
Let’s consider some common materials.
Keep reading with a 7-day free trial
Subscribe to Flocode: Engineering Insights 🌊 to keep reading this post and get 7 days of free access to the full post archives.