Chapter 3: Particle and Laminate Composites

📖 Reading Time: 20-25 minutes 📊 Difficulty: Beginner 💻 Code Examples: 0 📝 Exercises: 0

AI Terakoya TopMaterials ScienceComposite Materials›Chapter 3

🌐 EN | 🇯🇵 JP | Last sync: 2025-11-16

Composite Materials Introduction

Materials Science Series

Chapter 3: Particle and Laminate Composites

This chapter covers Particle and Laminate Composites. You will learn essential concepts and techniques.

Learning Objectives

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:

ClassificationParticle SizeStrengthening MechanismRepresentative Examples
Dispersion Strengthening10-100 nmDislocation bypass (Orowan)ODS alloys, precipitation-strengthened steels
Particle Strengthening1-100 μmLoad transfer, thermal expansion mismatchSiC/Al, WC/Co
Filler1-100 μmCost reduction, dimensional stabilityCalcium carbonate/resin
```mermaid
flowchart TD
                            A[Particle-Reinforced Composites] --> B[Metal Matrix MMC]
                            A --> C[Ceramic Matrix CMC]
                            A --> D[Polymer Matrix PMC]

                            B --> E[SiC/AlAutomotive pistons]
                            B --> F[Al2O3/AlSliding components]
                            B --> G[B4C/AlArmor materials]

                            C --> H[SiC/SiCHeat-resistant components]
                            C --> I[Al2O3/ZrO2Cutting tools]

                            D --> J[Carbon black/rubberTires]
                            D --> K[Glass beads/resinElectronic 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.

MatrixReinforcementManufacturing MethodApplication
Al alloySiC particles (15-20 vol%)Powder metallurgy, melt stirringAutomotive engine components
Al alloyAl₂O₃ particlesSpray formingBrake discs
Ti alloyTiB fibersReactive synthesisAircraft structural materials
Cu alloyGraphite particlesPowder metallurgyElectrical 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 SystemOperating TemperatureCharacteristicsApplication
SiC/SiC~1400°CHigh toughness, oxidation resistanceJet engine nozzles
C/SiC~1600°CLightweight, high heat resistanceAircraft brakes
Al₂O₃/Al₂O₃~1200°CHigh hardness, wear resistanceCutting 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

$$K_c = K_m + \frac{V_p}{(K_p - K_m)^{-1} + 3(1-V_p)/(3K_m + 4G_m)}$$

Shear Modulus

$$G_c = G_m + \frac{V_p}{(G_p - G_m)^{-1} + 6(K_m + 2G_m)(1-V_p)/(5G_m(3K_m + 4G_m))}$$

Young’s modulus and Poisson’s ratio are calculated from:

$$E_c = \frac{9K_c G_c}{3K_c + G_c}, \quad \nu_c = \frac{3K_c - 2G_c}{2(3K_c + G_c)}$$

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:

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.

$$\Delta\sigma_{\text{Orowan}} = \frac{0.4Gb}{\lambda}$$

where \(G\): shear modulus, \(b\): Burgers vector, \(\lambda\): interparticle spacing

Interparticle spacing can be estimated from particle size and volume fraction:

$$\lambda \approx d_p \left(\sqrt{\frac{\pi}{4V_p}} - 1\right)$$

```mermaid
flowchart TD
                            A[Dislocation Movement] --> B{Interaction with Particles}
                            B --> C[Particle Cutting PossibleWeak Interface]
                            B --> D[Particle Cutting ImpossibleHard Particles]

                            C --> E[Dislocation cuts particleSmall 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:

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 SystemCompositionCharacteristicsApplication
Metal LaminatesAl/Ti, Cu/AlThermal conductivity, weight reductionHeat exchangers, electronic devices
Clad SteelStainless steel/carbon steelCorrosion resistance + strengthChemical plants
Functionally Graded MaterialsCeramic → metalThermal stress mitigationThermal barrier coatings
Electromagnetic Shielding MaterialsCu/resin/CuEMI shieldingElectronic 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.

$$\sigma_{\text{thermal}} = \frac{E_1 E_2 (\alpha_1 - \alpha_2) \Delta T}{E_1 t_2 + E_2 t_1}$$

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:

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:

Advanced Level

Problem 3.8: Multi-Objective Optimization

For a SiC/Al composite, simultaneously optimize:

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

  1. Chawla, N. and Chawla, K. K., “Metal Matrix Composites”, 2nd ed., Springer, 2013, pp. 89-156, 234-278
  2. Clyne, T. W. and Withers, P. J., “An Introduction to Metal Matrix Composites”, Cambridge University Press, 1993, pp. 67-112
  3. Kainer, K. U., “Metal Matrix Composites: Custom-made Materials for Automotive and Aerospace Engineering”, Wiley-VCH, 2006, pp. 45-89
  4. Courtney, T. H., “Mechanical Behavior of Materials”, 2nd ed., Waveland Press, 2005, pp. 389-445
  5. 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
  6. Koizumi, M., “FGM Activities in Japan”, Composites Part B, Vol. 28, 1997, pp. 1-4
  7. Suresh, S. and Mortensen, A., “Fundamentals of Functionally Graded Materials”, IOM Communications, 1998, pp. 23-67, 134-189
  8. Naebe, M. and Shirvanimoghaddam, K., “Functionally Graded Materials: A Review of Fabrication and Properties”, Applied Materials Today, Vol. 5, 2016, pp. 223-245

Disclaimer