Introduction to Strength of Materials
Every bridge you cross, every building you enter, every vehicle you ride — they all depend on engineers who understood how materials behave under load. Strength of Materials (SOM), also called Mechanics of Materials, is the foundation of structural engineering.
In this course, you'll learn SOM fundamentals while building Python tools to solve real engineering problems.
What is Strength of Materials?
Strength of Materials studies how solid bodies respond to external forces. While Statics tells us what forces act on a structure, SOM tells us:
Sponsored
Get an IIT Jammu PG certification
Recognized by Mahindra, Bosch, TATA ELXSI & 500+ companies
- Will it break? (Strength analysis)
- How much will it deform? (Stiffness analysis)
- Is it safe? (Factor of safety)
The Core Questions
For any structural component, engineers must answer:
| Question | SOM Concept |
|---|
| What forces exist inside the material? | Stress |
| How much does the material stretch or compress? | Strain |
| What's the relationship between force and deformation? | Constitutive Law (Hooke's Law) |
| At what point does the material fail? | Failure Criteria |
Stress: Internal Resistance
When you pull a rope, internal forces develop to resist the pull. Stress quantifies this internal resistance per unit area:
$$\sigma = \frac{F}{A}$$
Sponsored
Abhishek landed his dream job at TATA ELXSI
From learning simulations to working at an industry leader
Where:
- $\sigma$ = Stress (Pa or N/m² or MPa)
- $F$ = Applied force (N)
- $A$ = Cross-sectional area (m²)
Types of Stress
- Normal stress ($\sigma$): Perpendicular to the surface (tension or compression)
- Shear stress ($\tau$): Parallel to the surface
Strain: Deformation Measure
Strain measures how much a material deforms relative to its original size:
$$\varepsilon = \frac{\Delta L}{L_0}$$
Where:
Sponsored
Harshal got placed at Fiat Chrysler as Design Engineer
Watch his video testimonial on how the program helped him
- $\varepsilon$ = Strain (dimensionless)
- $\Delta L$ = Change in length
- $L_0$ = Original length
Strain is dimensionless — a strain of 0.001 means 0.1% elongation.
Hooke's Law: The Linear Relationship
For most engineering materials under small deformations, stress and strain are proportional:
$$\sigma = E \cdot \varepsilon$$
Where $E$ is the Young's Modulus (or Elastic Modulus), measured in GPa.
| Material | E (GPa) |
|---|
| Steel | 200 |
| Aluminum | 70 |
| Copper | 120 |
| Concrete | 30 |
| Wood (along grain) | 12 |
Setting Up Python for SOM
Throughout this course, we'll use Python to solve SOM problems. Let's set up our environment.
Required Libraries
# Core scientific computing
import numpy as np
import matplotlib.pyplot as plt
# For symbolic mathematics (optional but useful)
# pip install sympy
import sympy as sp
# For engineering units (optional)
# pip install pint
from pint import UnitRegistry
ureg = UnitRegistry()
Your First SOM Calculation
Let's calculate the stress in a steel rod:
import numpy as np
# Problem: A steel rod with 20mm diameter carries 50 kN load
# Find the stress in the rod
# Given data
diameter = 20e-3 # 20 mm in meters
force = 50e3 # 50 kN in Newtons
# Calculate cross-sectional area
area = np.pi * (diameter / 2) ** 2
print(f"Cross-sectional area: {area * 1e6:.2f} mm²")
# Calculate stress
stress = force / area
print(f"Stress: {stress / 1e6:.2f} MPa")
# Check against yield strength of steel (~250 MPa)
yield_strength = 250e6 # Pa
factor_of_safety = yield_strength / stress
print(f"Factor of Safety: {factor_of_safety:.2f}")
Output:
Cross-sectional area: 314.16 mm²
Stress: 159.15 MPa
Factor of Safety: 1.57
Visualizing the Stress-Strain Curve
import numpy as np
import matplotlib.pyplot as plt
# Steel stress-strain data (simplified)
E = 200e9 # Young's modulus in Pa
yield_stress = 250e6 # Pa
ultimate_stress = 400e6 # Pa
# Elastic region
strain_elastic = np.linspace(0, yield_stress / E, 100)
stress_elastic = E * strain_elastic
# Plastic region (simplified linear hardening)
strain_plastic = np.linspace(yield_stress / E, 0.15, 100)
stress_plastic = yield_stress + (ultimate_stress - yield_stress) * \
(strain_plastic - yield_stress / E) / (0.15 - yield_stress / E)
# Plot
plt.figure(figsize=(10, 6))
plt.plot(strain_elastic * 100, stress_elastic / 1e6, 'b-', linewidth=2, label='Elastic')
plt.plot(strain_plastic * 100, stress_plastic / 1e6, 'r-', linewidth=2, label='Plastic')
plt.axhline(y=yield_stress / 1e6, color='g', linestyle='--', label=f'Yield: {yield_stress/1e6:.0f} MPa')
plt.xlabel('Strain (%)', fontsize=12)
plt.ylabel('Stress (MPa)', fontsize=12)
plt.title('Stress-Strain Curve for Structural Steel', fontsize=14)
plt.legend()
plt.grid(True, alpha=0.3)
plt.xlim(0, 16)
plt.ylim(0, 450)
plt.show()
Course Roadmap
Here's what you'll learn in this course:
| Lesson | Topic | Key Python Skills |
|---|
| 2 | Stress-Strain Analysis | Material property calculations, plotting |
| 3 | Axial Loading | Deformation analysis, thermal stress |
| 4 | Mohr's Circle | Stress transformation, interactive plots |
| 5-7 | Beam Analysis | Bending, deflection, SFD/BMD diagrams |
| 8 | Torsion | Shaft design calculations |
| 9 | Combined Loading | Principal stress analysis |
| 10 | Column Buckling | Stability analysis |
| 11 | Strain Energy | Energy methods |
| 12 | Beam Analyzer | Complete Python tool |
Key Takeaways
- Stress = Force / Area — measures internal resistance
- Strain = Change in length / Original length — measures deformation
- Hooke's Law: $\sigma = E\varepsilon$ — linear elastic behavior
- Factor of Safety = Allowable stress / Working stress
- Python + NumPy + Matplotlib = powerful SOM toolkit
In the next lesson, we'll dive deeper into stress-strain relationships and material behavior.