JMAK Crystallization Kinetics
Intermediate LevelIntroduction
The Johnson-Mehl-Avrami-Kolmogorov (JMAK) model is the cornerstone of crystallization kinetics in phase change materials. This tutorial will teach you how to model, simulate, and analyze crystallization processes using the JMAK framework, essential for understanding SET operations and retention behavior in PCM devices.
Learning Objectives
- Understand the JMAK equation and its parameters
- Determine Avrami exponent (n) from experimental data
- Extract activation energy using Arrhenius analysis
- Simulate isothermal and non-isothermal crystallization
- Apply JMAK to PCM device modeling
The JMAK Model
1
Understanding the JMAK Equation
X(t) = 1 - exp[-(kt)ⁿ]
Where:
- X(t): Crystalline fraction at time t
- k: Rate constant (temperature-dependent)
- n: Avrami exponent (reveals crystallization mechanism)
- t: Time
The Avrami exponent n tells us about nucleation and growth: n=3 for 3D growth with constant nucleation,
n=4 for 3D growth with decreasing nucleation rate.
2
Temperature Dependence
k(T) = k₀ × exp(-Eₐ/k_B T)
The rate constant follows Arrhenius behavior:
- k₀: Pre-exponential factor (~10¹⁶ s⁻¹)
- Eₐ: Activation energy (1.8-2.3 eV for GST)
- k_B: Boltzmann constant
- T: Absolute temperature
3
Interactive JMAK Simulator
Explore JMAK Parameters
Key Metrics:
Rate Constant k: --
t₅₀ (50% crystallization): --
t₉₀ (90% crystallization): --
Practical Implementation
# JMAK Crystallization Simulation
import numpy as np
import matplotlib.pyplot as plt
class JMAKModel:
def __init__(self, Ea=1.8, n=3.0, k0=1e16):
self.Ea = Ea # eV
self.n = n # Avrami exponent
self.k0 = k0 # Pre-exponential factor
self.kb = 8.617e-5 # eV/K
def rate_constant(self, T):
"""Calculate temperature-dependent rate constant"""
return self.k0 * np.exp(-self.Ea / (self.kb * T))
def crystalline_fraction(self, t, T):
"""Calculate crystalline fraction at time t and temperature T"""
k = self.rate_constant(T)
return 1 - np.exp(-(k * t)**self.n)
def time_to_fraction(self, X, T):
"""Calculate time to reach fraction X at temperature T"""
k = self.rate_constant(T)
return (-np.log(1 - X))**(1/self.n) / k
# Example usage
model = JMAKModel(Ea=1.8, n=3.0)
T = 500 # K
time = np.linspace(0, 100e-9, 1000) # 0 to 100 ns
X = model.crystalline_fraction(time, T)
t50 = model.time_to_fraction(0.5, T)
print(f"Time to 50% crystallization: {t50*1e9:.2f} ns")
Avrami Exponent Interpretation
| n Value | Nucleation | Growth Dimension | PCM Implication |
|---|---|---|---|
| 1.0 | Site saturation | 1D | Interface-controlled |
| 2.0 | Site saturation | 2D | Thin film growth |
| 3.0 | Constant rate | 3D | Bulk crystallization |
| 4.0 | Decreasing rate | 3D | Nucleation-limited |
Advanced Exercise: Multi-Temperature Analysis
Challenge
Use the simulator to determine:
- How does crystallization time scale with temperature?
- What n value best matches GST-225 behavior?
- Calculate the activation energy from multiple temperature points
- Predict retention time at 85°C storage temperature