Chapter 3: Particle and Laminate Composites
This chapter covers Particle and Laminate Composites. You will learn essential concepts and techniques.
Learning Objectives
- Foundation Level: Understand types and strengthening mechanisms of particle-reinforced composites and perform basic property predictions
- Application Level: Apply Orowan mechanism to optimize particle size and volume fraction
- Advanced Level: Comprehensively evaluate MMC/CMC design parameters and select materials for specific applications
3.1 Fundamentals of Particle-Reinforced Composites
3.1.1 Classification of Particle Reinforcement
Particle-reinforced composites are materials with particle-shaped reinforcements dispersed in a matrix. They are classified according to strengthening mechanisms:
| Classification | Particle Size | Strengthening Mechanism | Representative Examples |
|---|---|---|---|
| Dispersion Strengthening | 10-100 nm | Dislocation bypass (Orowan) | ODS alloys, precipitation-strengthened steels |
| Particle Strengthening | 1-100 μm | Load transfer, thermal expansion mismatch | SiC/Al, WC/Co |
| Filler | 1-100 μm | Cost reduction, dimensional stability | Calcium carbonate/resin |
Automotive pistons] B --> F[Al2O3/Al
Sliding components] B --> G[B4C/Al
Armor materials] C --> H[SiC/SiC
Heat-resistant components] C --> I[Al2O3/ZrO2
Cutting tools] D --> J[Carbon black/rubber
Tires] D --> K[Glass beads/resin
Electronic substrates] style A fill:#e1f5ff style E fill:#ffe1e1 style F fill:#ffe1e1 style G fill:#ffe1e1 style H fill:#c8e6c9 style I fill:#c8e6c9 style J fill:#fff9c4 style K fill:#fff9c4
3.1.2 MMC (Metal Matrix Composites)
Metal matrix composites are characterized by light weight, high strength, and high heat resistance.
| Matrix | Reinforcement | Manufacturing Method | Application |
|---|---|---|---|
| Al alloy | SiC particles (15-20 vol%) | Powder metallurgy, melt stirring | Automotive engine components |
| Al alloy | Al₂O₃ particles | Spray forming | Brake discs |
| Ti alloy | TiB fibers | Reactive synthesis | Aircraft structural materials |
| Cu alloy | Graphite particles | Powder metallurgy | Electrical contacts, bearings |
3.1.3 CMC (Ceramic Matrix Composites)
Ceramic matrix composites are materials where fibers or particles are incorporated into a ceramic matrix to improve brittleness.
| Material System | Operating Temperature | Characteristics | Application |
|---|---|---|---|
| SiC/SiC | ~1400°C | High toughness, oxidation resistance | Jet engine nozzles |
| C/SiC | ~1600°C | Lightweight, high heat resistance | Aircraft brakes |
| Al₂O₃/Al₂O₃ | ~1200°C | High hardness, wear resistance | Cutting tools |
3.2 Mechanical Models for Particle Strengthening
3.2.1 Elastic Modulus Prediction
For spherical particle reinforcement, the Hashin-Shtrikman upper and lower bound models are commonly used. For isotropic materials:
Bulk Modulus
Shear Modulus
Young's modulus and Poisson's ratio are calculated from:
Example 3.1: Elastic Modulus Calculation of SiC/Al Composite
# Requirements:
# - Python 3.9+
# - matplotlib>=3.7.0
# - numpy>=1.24.0, <2.0.0
import numpy as np
import matplotlib.pyplot as plt
def hashin_shtrikman_moduli(K_m, G_m, K_p, G_p, V_p):
"""
Composite material elastic modulus calculation using Hashin-Shtrikman model
Parameters:
-----------
K_m, G_m : float
Bulk and shear modulus of matrix [GPa]
K_p, G_p : float
Bulk and shear modulus of particle [GPa]
V_p : float or array
Particle volume fraction
Returns:
--------
E_c, nu_c : float or array
Young's modulus and Poisson's ratio of composite
"""
# Bulk modulus
K_c = K_m + V_p / (1/(K_p - K_m) + 3*(1 - V_p)/(3*K_m + 4*G_m))
# Shear modulus
G_c = G_m + V_p / (1/(G_p - G_m) + 6*(K_m + 2*G_m)*(1 - V_p)/(5*G_m*(3*K_m + 4*G_m)))
# Young's modulus and Poisson's ratio
E_c = 9 * K_c * G_c / (3 * K_c + G_c)
nu_c = (3 * K_c - 2 * G_c) / (2 * (3 * K_c + G_c))
return E_c, nu_c
def E_nu_to_K_G(E, nu):
"""Convert Young's modulus and Poisson's ratio to bulk and shear modulus"""
K = E / (3 * (1 - 2 * nu))
G = E / (2 * (1 + nu))
return K, G
# Al alloy matrix properties
E_m = 70.0 # GPa
nu_m = 0.33
K_m, G_m = E_nu_to_K_G(E_m, nu_m)
# SiC particle properties
E_p = 450.0 # GPa
nu_p = 0.17
K_p, G_p = E_nu_to_K_G(E_p, nu_p)
# Volume fraction range
V_p_range = np.linspace(0, 0.5, 100)
# Elastic modulus calculation
E_c, nu_c = hashin_shtrikman_moduli(K_m, G_m, K_p, G_p, V_p_range)
# Comparison with rule of mixtures (upper and lower bounds)
E_voigt = E_m * (1 - V_p_range) + E_p * V_p_range # Upper bound
E_reuss = 1 / ((1 - V_p_range)/E_m + V_p_range/E_p) # Lower bound
# Visualization
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))
# Young's modulus
ax1.plot(V_p_range, E_c, 'b-', linewidth=2, label='Hashin-Shtrikman')
ax1.plot(V_p_range, E_voigt, 'r--', linewidth=1.5, label='Voigt (upper bound)')
ax1.plot(V_p_range, E_reuss, 'g--', linewidth=1.5, label='Reuss (lower bound)')
ax1.fill_between(V_p_range, E_reuss, E_voigt, alpha=0.2, color='gray',
label='Rule of mixtures range')
ax1.set_xlabel('SiC Volume Fraction')
ax1.set_ylabel('Young\'s Modulus [GPa]')
ax1.set_title('Young\'s Modulus of SiC/Al Composite')
ax1.grid(True, alpha=0.3)
ax1.legend()
# Poisson's ratio
ax2.plot(V_p_range, nu_c, 'b-', linewidth=2, label='Hashin-Shtrikman')
ax2.axhline(y=nu_m, color='r', linestyle='--', label=f'Al matrix ({nu_m:.2f})')
ax2.axhline(y=nu_p, color='g', linestyle='--', label=f'SiC particle ({nu_p:.2f})')
ax2.set_xlabel('SiC Volume Fraction')
ax2.set_ylabel('Poisson\'s Ratio')
ax2.set_title('Poisson\'s Ratio of SiC/Al Composite')
ax2.grid(True, alpha=0.3)
ax2.legend()
plt.tight_layout()
plt.savefig('particle_composite_modulus.png', dpi=300, bbox_inches='tight')
plt.close()
# Values at practical particle fractions
V_p_practical = np.array([0.10, 0.15, 0.20, 0.25, 0.30])
E_c_practical, nu_c_practical = hashin_shtrikman_moduli(K_m, G_m, K_p, G_p, V_p_practical)
print("Elastic Properties of SiC/Al Composite:")
print("="*60)
print(f"{'V_p':>6} {'E_c [GPa]':>12} {'Increase[%]':>12} {'Poisson\'s Ratio':>12}")
print("-"*60)
for vp, ec, nuc in zip(V_p_practical, E_c_practical, nu_c_practical):
increase = (ec / E_m - 1) * 100
print(f"{vp:6.2f} {ec:12.1f} {increase:12.1f} {nuc:12.3f}")
3.2.2 Strength Prediction
The strength of particle-reinforced composites is determined by the combined effects of the following factors:
- Load transfer effect: Particles bear the load
- Dislocation strengthening: Increased dislocation density around particles
- Orowan mechanism: Dislocations bypass particles
- Thermal expansion mismatch: Residual stress from cooling
Example 3.2: Yield Strength Prediction of Particle-Reinforced Composites
# Requirements:
# - Python 3.9+
# - matplotlib>=3.7.0
# - numpy>=1.24.0, <2.0.0
import numpy as np
import matplotlib.pyplot as plt
def particle_strengthening(sigma_m, V_p, d_p, b, G_m):
"""
Yield strength prediction for particle-reinforced composites
Parameters:
-----------
sigma_m : float
Matrix yield strength [MPa]
V_p : float
Particle volume fraction
d_p : float
Particle diameter [μm]
b : float
Burgers vector [nm]
G_m : float
Matrix shear modulus [GPa]
Returns:
--------
sigma_c : float
Composite yield strength [MPa]
"""
# Load transfer term (simplified model)
sigma_load = sigma_m * (1 + 0.5 * V_p)
# Orowan strengthening term
# Estimation of interparticle spacing
lambda_p = d_p * (np.sqrt(np.pi / (4 * V_p)) - 1) # [μm]
# Orowan stress [MPa]
G_m_MPa = G_m * 1000 # GPa → MPa
b_m = b * 1e-9 # nm → m
lambda_p_m = lambda_p * 1e-6 # μm → m
sigma_orowan = 0.4 * G_m_MPa * b_m / lambda_p_m / 1e6 # MPa
# Total strength (simplified addition)
sigma_c = sigma_load + sigma_orowan
return sigma_c
# Al alloy matrix
sigma_m = 100 # MPa (annealed)
b = 0.286 # nm (Al Burgers vector)
G_m = 26 # GPa
# Effect of SiC particle size
d_p_range = np.logspace(-1, 1.5, 50) # 0.1-30 μm
V_p_values = [0.10, 0.15, 0.20, 0.25]
plt.figure(figsize=(10, 6))
for V_p in V_p_values:
sigma_c = []
for d_p in d_p_range:
s_c = particle_strengthening(sigma_m, V_p, d_p, b, G_m)
sigma_c.append(s_c)
plt.plot(d_p_range, sigma_c, linewidth=2, label=f'V_p = {V_p:.2f}')
plt.xscale('log')
plt.xlabel('Particle Diameter [μm]')
plt.ylabel('Composite Yield Strength [MPa]')
plt.title('Relationship between Particle Size and Yield Strength (SiC/Al)')
plt.grid(True, alpha=0.3, which='both')
plt.legend()
plt.tight_layout()
plt.savefig('particle_size_strengthening.png', dpi=300, bbox_inches='tight')
plt.close()
# Examination of optimal particle size
V_p_opt = 0.20
d_p_test = np.array([0.5, 1.0, 2.0, 5.0, 10.0])
print("Particle Size and Strengthening Effect:")
print("="*60)
print(f"{'Particle Diameter [μm]':>15} {'Yield Strength [MPa]':>18} {'Strengthening [%]':>15}")
print("-"*60)
for d_p in d_p_test:
sigma_c = particle_strengthening(sigma_m, V_p_opt, d_p, b, G_m)
strengthening = (sigma_c / sigma_m - 1) * 100
print(f"{d_p:15.1f} {sigma_c:18.1f} {strengthening:15.1f}")
3.3 Orowan Mechanism
3.3.1 Dislocation-Particle Interactions
The Orowan mechanism is a strengthening mechanism that occurs when dislocations cannot cut through particles, but instead bypass between particles.
where \(G\): shear modulus, \(b\): Burgers vector, \(\lambda\): interparticle spacing
Interparticle spacing can be estimated from particle size and volume fraction:
Weak Interface] B --> D[Particle Cutting Impossible
Hard Particles] C --> E[Dislocation cuts particle
Small strengthening effect] D --> F[Orowan Bypass] F --> G[Dislocation loop remains around particle] G --> H[Hinders subsequent dislocation movement] H --> I[Strength increase] style A fill:#e1f5ff style F fill:#ffe1e1 style I fill:#c8e6c9
3.3.2 Design of Optimal Particle Size and Fraction
To maximize Orowan strengthening, the interparticle spacing must be minimized. However, the following trade-offs exist:
- Small particle size → Large strengthening effect (λ decreases) but particles tend to agglomerate
- Large volume fraction → Large strengthening effect (λ decreases) but ductility decreases
- Optimization of particle size/fraction is important
Example 3.3: Optimal Design of Orowan Strengthening
# Requirements:
# - Python 3.9+
# - matplotlib>=3.7.0
# - numpy>=1.24.0, <2.0.0
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def orowan_stress(d_p, V_p, G_m, b):
"""
Orowan stress calculation
Parameters:
-----------
d_p : float
Particle diameter [μm]
V_p : float
Particle volume fraction
G_m : float
Matrix shear modulus [GPa]
b : float
Burgers vector [nm]
Returns:
--------
sigma_orowan : float
Orowan stress [MPa]
"""
# Interparticle spacing [m]
lambda_p = d_p * 1e-6 * (np.sqrt(np.pi / (4 * V_p)) - 1)
# Calculate only when interparticle spacing is positive
if lambda_p <= 0:
return 0
# Orowan stress [MPa]
G_m_Pa = G_m * 1e9 # GPa → Pa
b_m = b * 1e-9 # nm → m
sigma_orowan = 0.4 * G_m_Pa * b_m / lambda_p / 1e6 # MPa
return sigma_orowan
def ductility_reduction_factor(V_p):
"""
Ductility reduction factor estimation (empirical model)
Ductility decreases as V_p increases
"""
return np.exp(-3 * V_p)
# Al alloy parameters
G_m = 26 # GPa
b = 0.286 # nm
# Parameter ranges
d_p_range = np.logspace(-1, 1.2, 40) # 0.1-16 μm
V_p_range = np.linspace(0.05, 0.40, 40)
# Create mesh grid
D_p, V_p_grid = np.meshgrid(d_p_range, V_p_range)
# Calculate Orowan stress
sigma_orowan_grid = np.zeros_like(D_p)
performance_index = np.zeros_like(D_p)
for i in range(len(V_p_range)):
for j in range(len(d_p_range)):
sigma_o = orowan_stress(D_p[i,j], V_p_grid[i,j], G_m, b)
sigma_orowan_grid[i,j] = sigma_o
# Performance index: strength × ductility factor
ductility = ductility_reduction_factor(V_p_grid[i,j])
performance_index[i,j] = sigma_o * ductility
# 3D plot
fig = plt.figure(figsize=(16, 6))
# Orowan stress
ax1 = fig.add_subplot(131, projection='3d')
surf1 = ax1.plot_surface(np.log10(D_p), V_p_grid, sigma_orowan_grid,
cmap='viridis', alpha=0.8)
ax1.set_xlabel('log₁₀(Particle Diameter) [μm]')
ax1.set_ylabel('Volume Fraction')
ax1.set_zlabel('Orowan Stress [MPa]')
ax1.set_title('Orowan Strengthening Effect')
fig.colorbar(surf1, ax=ax1, shrink=0.5)
# Performance index
ax2 = fig.add_subplot(132, projection='3d')
surf2 = ax2.plot_surface(np.log10(D_p), V_p_grid, performance_index,
cmap='plasma', alpha=0.8)
ax2.set_xlabel('log₁₀(Particle Diameter) [μm]')
ax2.set_ylabel('Volume Fraction')
ax2.set_zlabel('Performance Index [Strength×Ductility]')
ax2.set_title('Overall Performance Index')
fig.colorbar(surf2, ax=ax2, shrink=0.5)
# Contour plot
ax3 = fig.add_subplot(133)
contour = ax3.contourf(np.log10(D_p), V_p_grid, performance_index,
levels=20, cmap='plasma')
ax3.set_xlabel('log₁₀(Particle Diameter) [μm]')
ax3.set_ylabel('Volume Fraction')
ax3.set_title('Performance Index Contour')
fig.colorbar(contour, ax=ax3)
# Find optimal point
max_idx = np.unravel_index(np.argmax(performance_index), performance_index.shape)
d_p_opt = D_p[max_idx]
V_p_opt = V_p_grid[max_idx]
sigma_opt = sigma_orowan_grid[max_idx]
ax3.plot(np.log10(d_p_opt), V_p_opt, 'r*', markersize=15,
label=f'Optimal: d_p={d_p_opt:.2f} μm, V_p={V_p_opt:.2f}')
ax3.legend()
plt.tight_layout()
plt.savefig('orowan_optimization.png', dpi=300, bbox_inches='tight')
plt.close()
print("Optimal Design of Orowan Strengthening:")
print("="*60)
print(f"Optimal particle diameter: {d_p_opt:.2f} μm")
print(f"Optimal volume fraction: {V_p_opt:.2f}")
print(f"Orowan stress: {sigma_opt:.1f} MPa")
print(f"Interparticle spacing: {d_p_opt * (np.sqrt(np.pi/(4*V_p_opt)) - 1):.2f} μm")
3.4 Laminate Composites
3.4.1 Types and Characteristics of Laminates
By laminating different materials in layers, composite materials can be designed to utilize the properties of each layer.
| Laminate System | Composition | Characteristics | Application |
|---|---|---|---|
| Metal Laminates | Al/Ti, Cu/Al | Thermal conductivity, weight reduction | Heat exchangers, electronic devices |
| Clad Steel | Stainless steel/carbon steel | Corrosion resistance + strength | Chemical plants |
| Functionally Graded Materials | Ceramic → metal | Thermal stress mitigation | Thermal barrier coatings |
| Electromagnetic Shielding Materials | Cu/resin/Cu | EMI shielding | Electronic substrates |
3.4.2 Thermal Stress in Laminates
When materials with different thermal expansion coefficients are laminated, stress develops at the interface due to temperature changes.
where \(E_i\): elastic modulus of each layer, \(\alpha_i\): thermal expansion coefficient, \(t_i\): layer thickness, \(\Delta T\): temperature change
Example 3.4: Thermal Stress Analysis of Laminates
# Requirements:
# - Python 3.9+
# - matplotlib>=3.7.0
# - numpy>=1.24.0, <2.0.0
import numpy as np
import matplotlib.pyplot as plt
def thermal_stress_bilayer(E1, E2, alpha1, alpha2, t1, t2, delta_T):
"""
Thermal stress calculation for bilayer laminate
Parameters:
-----------
E1, E2 : float
Young's modulus of each layer [GPa]
alpha1, alpha2 : float
Thermal expansion coefficient of each layer [/°C]
t1, t2 : float
Thickness of each layer [mm]
delta_T : float
Temperature change [°C]
Returns:
--------
sigma1, sigma2 : float
Thermal stress in each layer [MPa]
"""
# Thermal stress (simplified model)
E1_GPa = E1 * 1000 # GPa → MPa
E2_GPa = E2 * 1000
sigma_thermal = (E1_GPa * E2_GPa * (alpha1 - alpha2) * delta_T /
(E1_GPa * t2 + E2_GPa * t1))
# Layer 1 is compression, layer 2 is tension (when α1 > α2)
sigma1 = -sigma_thermal * t2 / t1
sigma2 = sigma_thermal
return sigma1, sigma2
# Al/Ti laminate
E_Al = 70 # GPa
E_Ti = 110 # GPa
alpha_Al = 23e-6 # /°C
alpha_Ti = 9e-6 # /°C
# Varying layer thickness ratio
t_total = 10 # mm (total thickness)
t1_ratio = np.linspace(0.1, 0.9, 50)
t1 = t1_ratio * t_total
t2 = (1 - t1_ratio) * t_total
delta_T = -155 # °C (180°C → 25°C)
sigma_Al = []
sigma_Ti = []
for t1_val, t2_val in zip(t1, t2):
s_Al, s_Ti = thermal_stress_bilayer(E_Al, E_Ti, alpha_Al, alpha_Ti,
t1_val, t2_val, delta_T)
sigma_Al.append(s_Al)
sigma_Ti.append(s_Ti)
sigma_Al = np.array(sigma_Al)
sigma_Ti = np.array(sigma_Ti)
# Visualization
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))
# Thermal stress
ax1.plot(t1_ratio, sigma_Al, 'b-', linewidth=2, label='Al layer stress')
ax1.plot(t1_ratio, sigma_Ti, 'r-', linewidth=2, label='Ti layer stress')
ax1.axhline(y=0, color='k', linestyle='--', linewidth=0.5)
ax1.set_xlabel('Al Layer Thickness Ratio (t_Al / t_total)')
ax1.set_ylabel('Thermal Stress [MPa]')
ax1.set_title(f'Thermal Stress in Al/Ti Laminate (ΔT = {delta_T}°C)')
ax1.grid(True, alpha=0.3)
ax1.legend()
# Comparison with yield strength
sigma_y_Al = 100 # MPa (annealed Al)
sigma_y_Ti = 350 # MPa (pure Ti)
# Safety factor
SF_Al = np.abs(sigma_y_Al / sigma_Al)
SF_Ti = np.abs(sigma_y_Ti / sigma_Ti)
SF_min = np.minimum(SF_Al, SF_Ti)
ax2.plot(t1_ratio, SF_Al, 'b-', linewidth=2, label='Al layer safety factor')
ax2.plot(t1_ratio, SF_Ti, 'r-', linewidth=2, label='Ti layer safety factor')
ax2.plot(t1_ratio, SF_min, 'k--', linewidth=2, label='Minimum safety factor')
ax2.axhline(y=1.0, color='g', linestyle=':', linewidth=1.5, label='Safety limit')
ax2.set_xlabel('Al Layer Thickness Ratio (t_Al / t_total)')
ax2.set_ylabel('Safety Factor')
ax2.set_title('Safety Factor of Each Layer')
ax2.set_ylim([0, 10])
ax2.grid(True, alpha=0.3)
ax2.legend()
plt.tight_layout()
plt.savefig('laminate_thermal_stress.png', dpi=300, bbox_inches='tight')
plt.close()
# Optimal thickness ratio (maximum safety factor)
opt_idx = np.argmax(SF_min)
t1_opt_ratio = t1_ratio[opt_idx]
print("Thermal Stress Analysis of Al/Ti Laminate:")
print("="*60)
print(f"Temperature change: {delta_T}°C")
print(f"Optimal Al layer thickness ratio: {t1_opt_ratio:.2f}")
print(f"Minimum safety factor: {SF_min[opt_idx]:.2f}")
print(f"\nStresses at thickness ratio {t1_opt_ratio:.2f}:")
print(f" Al layer stress: {sigma_Al[opt_idx]:.1f} MPa")
print(f" Ti layer stress: {sigma_Ti[opt_idx]:.1f} MPa")
3.4.3 Functionally Graded Materials (FGM)
Materials with continuously varying composition to mitigate thermal stress. Representative example: Graded material from ZrO₂ (ceramic) → Ni (metal)
Example 3.5: Composition Distribution Design of FGM
# Requirements:
# - Python 3.9+
# - matplotlib>=3.7.0
# - numpy>=1.24.0, <2.0.0
import numpy as np
import matplotlib.pyplot as plt
def fgm_property_profile(z, n, prop_ceramic, prop_metal):
"""
FGM property distribution based on power law
Parameters:
-----------
z : array
Thickness direction coordinate (0: ceramic side, 1: metal side)
n : float
Gradient index (n=1: linear, n>1: concentrated on ceramic side)
prop_ceramic, prop_metal : float
Property values of ceramic and metal
Returns:
--------
prop : array
Property value at position z
"""
V_metal = z**n
prop = prop_ceramic * (1 - V_metal) + prop_metal * V_metal
return prop
# ZrO2/Ni FGM
E_ZrO2 = 200 # GPa
E_Ni = 210 # GPa
alpha_ZrO2 = 10e-6 # /°C
alpha_Ni = 13e-6 # /°C
# Thickness direction coordinate
z = np.linspace(0, 1, 100)
# Effect of gradient index
n_values = [0.5, 1.0, 2.0, 5.0]
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))
for n in n_values:
E_profile = fgm_property_profile(z, n, E_ZrO2, E_Ni)
alpha_profile = fgm_property_profile(z, n, alpha_ZrO2, alpha_Ni)
ax1.plot(z, E_profile, linewidth=2, label=f'n = {n}')
ax2.plot(z, alpha_profile * 1e6, linewidth=2, label=f'n = {n}')
ax1.set_xlabel('Thickness Direction Coordinate z (0: ZrO₂, 1: Ni)')
ax1.set_ylabel('Young\'s Modulus [GPa]')
ax1.set_title('Young\'s Modulus Distribution in FGM')
ax1.grid(True, alpha=0.3)
ax1.legend()
ax2.set_xlabel('Thickness Direction Coordinate z (0: ZrO₂, 1: Ni)')
ax2.set_ylabel('Thermal Expansion Coefficient [×10⁻⁶ /°C]')
ax2.set_title('Thermal Expansion Coefficient Distribution in FGM')
ax2.grid(True, alpha=0.3)
ax2.legend()
plt.tight_layout()
plt.savefig('fgm_property_profile.png', dpi=300, bbox_inches='tight')
plt.close()
print("Property Distribution of Functionally Graded Material (FGM):")
print("="*60)
print(f"{'Gradient Index n':>12} {'Center E [GPa]':>18} {'Center α [10⁻⁶/°C]':>25}")
print("-"*60)
for n in n_values:
E_mid = fgm_property_profile(0.5, n, E_ZrO2, E_Ni)
alpha_mid = fgm_property_profile(0.5, n, alpha_ZrO2, alpha_Ni)
print(f"{n:12.1f} {E_mid:18.1f} {alpha_mid*1e6:25.2f}")
3.5 Summary
In this chapter, we learned about particle-reinforced and laminate composites:
- Classification of particle-reinforced composites (dispersion strengthening, particle strengthening, fillers)
- Types and manufacturing methods of MMC/CMC
- Elastic modulus prediction using Hashin-Shtrikman model
- Orowan mechanism and optimal particle design
- Thermal stress in laminates and functionally graded materials (FGM)
In the next chapter, we will learn about mechanical evaluation methods for composite materials (tensile testing, bending testing, impact testing) and nondestructive inspection (ultrasonic, X-ray CT, thermography).
Exercises
Foundation Level
Problem 3.1: Hashin-Shtrikman Model
Calculate the Young's modulus of an Al alloy (E=70 GPa, ν=0.33) composite containing 20 vol% Al₂O₃ particles (E=380 GPa, ν=0.23) using the Hashin-Shtrikman model.
Problem 3.2: Interparticle Spacing Calculation
Calculate the average interparticle spacing in a composite containing 15 vol% SiC particles with a diameter of 2 μm.
Problem 3.3: Thermal Stress Calculation
Calculate the thermal stress when a bilayer laminate of Cu (E=120 GPa, α=17×10⁻⁶ /°C) and Al (E=70 GPa, α=23×10⁻⁶ /°C) (each layer 1 mm thick) experiences a 100°C temperature decrease.
Application Level
Problem 3.4: Optimization of Orowan Strengthening
For an Al alloy (G=26 GPa, b=0.286 nm), determine the optimal combination of SiC particle size and volume fraction to achieve a target yield strength of 200 MPa. (Matrix yield strength: 100 MPa)
Problem 3.5: MMC Design
Design a SiC/Al composite for automotive engine pistons. Required properties: Young's modulus ≥ 100 GPa, density ≤ 2.9 g/cm³
Problem 3.6: Laminate Optimization
Optimize the layer thickness ratio of an Al/Ti laminate (total thickness 5 mm) to maximize the minimum safety factor for a 200°C temperature change.
Problem 3.7: Programming Exercise
Create a property prediction program for particle-reinforced composites:
- Calculate elastic modulus using Hashin-Shtrikman model
- Calculate strength using Orowan model
- Create contour plots for particle size and volume fraction
Advanced Level
Problem 3.8: Multi-Objective Optimization
For a SiC/Al composite, simultaneously optimize:
- Objective 1: Maximize specific strength (strength/density)
- Objective 2: Minimize cost
- Constraint: Young's modulus ≥ 90 GPa
Plot the Pareto optimal solutions.
Problem 3.9: Thermal Stress Analysis of FGM
For a ZrO₂/Ni functionally graded material (thickness 10 mm), use finite element method to calculate temperature distribution and thermal stress distribution. (Surface temperature: ZrO₂ side 1200°C, Ni side 400°C)
Problem 3.10: Nano-Particle Dispersion Strengthening
Analyze the strengthening mechanism of ODS alloys with nano-sized Al₂O₃ particles (diameter 10-100 nm). Determine the critical size at which the mechanism transitions from Orowan mechanism to dislocation cutting mechanism when particle size becomes less than 10 nm.
References
- Chawla, N. and Chawla, K. K., "Metal Matrix Composites", 2nd ed., Springer, 2013, pp. 89-156, 234-278
- Clyne, T. W. and Withers, P. J., "An Introduction to Metal Matrix Composites", Cambridge University Press, 1993, pp. 67-112
- Kainer, K. U., "Metal Matrix Composites: Custom-made Materials for Automotive and Aerospace Engineering", Wiley-VCH, 2006, pp. 45-89
- Courtney, T. H., "Mechanical Behavior of Materials", 2nd ed., Waveland Press, 2005, pp. 389-445
- Hashin, Z. and Shtrikman, S., "A Variational Approach to the Theory of the Elastic Behaviour of Multiphase Materials", Journal of the Mechanics and Physics of Solids, Vol. 11, 1963, pp. 127-140
- Koizumi, M., "FGM Activities in Japan", Composites Part B, Vol. 28, 1997, pp. 1-4
- Suresh, S. and Mortensen, A., "Fundamentals of Functionally Graded Materials", IOM Communications, 1998, pp. 23-67, 134-189
- Naebe, M. and Shirvanimoghaddam, K., "Functionally Graded Materials: A Review of Fabrication and Properties", Applied Materials Today, Vol. 5, 2016, pp. 223-245