ITT-MCT Schematic (F_1_2)¶
Quick Reference¶
Use when: Dense colloidal suspensions, glassy materials, yield-stress fluids,
materials showing glass transition behavior
Parameters: 5 (\(v_1\), \(v_2\), \(\Gamma\), \(\gamma_c\), \(G_\infty\)) or equivalently (\(\varepsilon\), \(v_1\), \(\Gamma\), \(\gamma_c\), \(G_\infty\))
Key equation: Memory kernel \(m(\Phi) = v_1\Phi + v_2\Phi^2\) with glass transition at \(v_2 = 4\)
Test modes: Flow curve, oscillation, startup, creep, relaxation, LAOS
Material examples: PMMA colloids, emulsions, carbopol gels, concentrated polymer solutions
Notation Guide¶
Symbol |
Meaning |
|---|---|
\(\Phi(t)\) |
Density correlator (normalized autocorrelation function) |
\(\Phi(t,t')\) |
Two-time correlator under shear (advected) |
\(m(\Phi)\) |
Memory kernel, \(m = v_1\Phi + v_2\Phi^2\) |
\(v_1, v_2\) |
Vertex coefficients (coupling constants) |
\(v_{2,c}\) |
Critical vertex coefficient (= 4 for \(v_1 = 0\)) |
\(\varepsilon\) |
Separation parameter, \(\varepsilon = (v_2 - v_{2,c})/v_{2,c}\) |
\(\Gamma\) |
Bare relaxation rate (1/s) |
\(\gamma_c\) |
Critical strain for cage breaking (dimensionless) |
\(h(\gamma)\) |
Strain decorrelation function (Gaussian or Lorentzian form) |
\(G_\infty\) |
High-frequency (instantaneous) modulus (Pa) |
\(f\) |
Non-ergodicity parameter (glass plateau height) |
\(\sigma_y\) |
Dynamic yield stress (Pa) |
Overview¶
The \(F_{12}\) schematic model is a simplified Mode-Coupling Theory (MCT) that captures the essential physics of the colloidal glass transition with minimal parameters.
Historical Context:
MCT was developed in the 1980s by Götze and collaborators to describe the dynamics of supercooled liquids and dense colloids. The full MCT involves coupled integro- differential equations for density correlators at all wave vectors \(k\). The schematic \(F_{12}\) model reduces this to a single scalar equation by replacing the \(k\)-dependent memory kernel with a polynomial form.
The Cage Effect:
In dense suspensions, each particle is “caged” by its neighbors. At short times, particles rattle within their cages (\(\beta\)-relaxation). At long times, cooperative rearrangements allow cage escape (\(\alpha\)-relaxation). The glass transition occurs when the \(\alpha\)-relaxation time diverges - particles become permanently trapped.
Why “ \(F_{12}\) “:
The name comes from the memory kernel having terms proportional to \(\Phi^1\) and \(\Phi^2\) — the “1-2” notation. This quadratic form is the simplest that captures the feedback mechanism responsible for the glass transition.
Physical Foundations¶
The Cage Effect in Dense Suspensions¶
In a dilute suspension, particles diffuse freely with diffusion coefficient:
where \(a\) is the particle radius and \(\eta_s\) is the solvent viscosity.
At high volume fractions (\(\phi > 0.4\)), particles begin to interfere with each other’s motion. The “cage” of nearest neighbors slows down diffusion:
where S(0) is the zero-wavevector structure factor (compressibility).
As \(\phi \to \phi_g \approx 0.516\), the cage becomes so strong that particles cannot escape on any experimental timescale - the system is a glass.
Green-Kubo and the Memory Function¶
The dynamics can be described through the density correlator:
which measures how density fluctuations at wave vector \(k\) decorrelate over time.
The equation of motion involves a memory kernel:
The memory kernel m(t) encodes how the cage “remembers” past configurations. This is the Zwanzig-Mori projection of the full dynamics.
MCT Approximation¶
MCT makes a specific approximation for the memory kernel:
The vertex V encodes how density fluctuations at different length scales couple. This “mode-coupling” gives the theory its name.
Memory Kernel Structure¶
The MCT memory kernel has a bilinear structure arising from the mode-coupling approximation:
where \(\mathbf{p} = \mathbf{q} - \mathbf{k}\).
For the schematic \(F_{12}\) model, this complicated \(k\)-space integral is replaced by a polynomial approximation:
The quadratic term (\(v_2\Phi^2\)) is essential for the glass transition — it creates the feedback mechanism where slow relaxation leads to stronger caging, which leads to even slower relaxation.
The \(F_{12}\) Schematic Model¶
Reduction to Scalar Equation¶
For the schematic model, we ignore the \(k\)-dependence and write:
with the polynomial memory kernel:
Why this form works:
The linear term (\(v_1\Phi\)) allows for standard viscoelastic relaxation
The quadratic term (\(v_2\Phi^2\)) creates the feedback: slow relaxation \(\to\) strong cage \(\to\) slower relaxation
Together, they capture the divergence of the relaxation time at the glass transition
Glass Transition Criterion¶
The glass transition occurs when the correlator has a non-zero long-time limit:
This happens when the self-consistent equation:
has a non-zero solution, i.e., when:
For \(v_1 = 0\): \(v_{2,c} = 4\).
The separation parameter \(\varepsilon\) measures distance from the transition:
\(\varepsilon < 0\): Ergodic fluid (\(\Phi \to 0\) at long times)
\(\varepsilon = 0\): Critical point (power-law decay)
\(\varepsilon > 0\): Glass state (\(\Phi \to f > 0\))
Two-Step Relaxation¶
Near the glass transition, the correlator shows characteristic two-step decay:
\(\beta\) -relaxation (short times): Initial decay to a plateau
\[\Phi(t) \approx f_c + h \cdot (t/t_0)^{-a}\]Plateau regime: Correlator “stuck” near \(f\)
\(\alpha\) -relaxation (long times): Final decay from plateau
\[\Phi(t) \approx f \cdot \exp\left[-(t/\tau_\alpha)^b\right]\]
The MCT exponents \(a\) and \(b\) are related to the “exponent parameter” \(\lambda\):
For \(F_{12}\) with \(v_1 = 0\): \(\lambda = 1\).
Integration Through Transients (ITT)¶
Extending MCT to Flow¶
Under shear, density fluctuations are “advected” by the flow.
General Deformation Gradient¶
For a general homogeneous flow with velocity gradient tensor \(\boldsymbol{\kappa}(t) = \nabla\mathbf{v}(t)\), the deformation gradient from time \(t'\) to \(t\) is:
where \(\mathcal{T}\) denotes time ordering.
Wavevectors are back-advected as:
For simple shear (flow in x, gradient in y):
This advection destroys the cage structure, leading to flow-induced relaxation.
Two-Time Correlator Definition¶
The transient density correlator under shear is:
This measures how density fluctuations at wavevector \(\mathbf{q}\) decorrelate between times \(t'\) and \(t\), accounting for the fact that the wavevector is advected by the flow.
Physical interpretation: The correlator tracks the “memory” of the cage structure. Under shear, this memory is progressively destroyed as accumulated strain \(\gamma(t,t')\) increases.
Zwanzig-Mori Equation Detail¶
The full ITT-MCT correlator dynamics obey the integro-differential equation:
with overdamped initial decay rate:
where \(D_0\) is the bare diffusion coefficient. The advected wavevector magnitude \(q(t,t')\) increases with strain, accelerating the initial decay.
Strain Decorrelation Function¶
The advected correlator is:
where the strain decorrelation function captures how accumulated strain breaks down the correlation. Two functional forms are available:
Gaussian (default): Fast exponential decay at large strains
Lorentzian: Slower algebraic decay (Brader et al. 2008)
Physical interpretation:
At \(\gamma = 0\): \(h = 1\) (full correlation)
At \(\gamma \gg \gamma_c\): \(h \to 0\) (cage is destroyed)
\(\gamma_c \approx 0.1\) corresponds to the “cage strain”
Choosing between forms: The Gaussian form (default) is most common in the
ITT-MCT literature and gives faster decay. The Lorentzian form may better
capture materials with extended yielding transitions or gradual cage breaking.
Use the decorrelation_form parameter to select:
# Default Gaussian
model = ITTMCTSchematic(epsilon=0.05)
# Lorentzian for extended yielding
model = ITTMCTSchematic(epsilon=0.05, decorrelation_form="lorentzian")
Generalized Green-Kubo Relation¶
The stress under shear is given by a generalized Green-Kubo formula:
where the time-dependent modulus:
Memory Kernel Forms¶
The memory kernel can be computed in two forms, controlled by the memory_form
parameter:
Simplified (default): Single strain decorrelation
Here, a single decorrelation factor \(h[\gamma_{\text{acc}}]\) accounts for all strain-induced cage breaking since flow started.
Full: Two-time strain decorrelation (Fuchs & Cates 2002)
The full form includes two decorrelation factors:
\(h[\gamma(t,t_0)]\): How much the cage has broken since flow started
\(h[\gamma(t,s)]\): How much the cage breaks during the memory integral (from time s to t)
This captures the physical effect that correlations at earlier times (larger s) have experienced more strain-induced decorrelation than recent correlations.
# Default simplified form (backward compatible)
model = ITTMCTSchematic(epsilon=0.05)
# Full two-time memory kernel
model = ITTMCTSchematic(epsilon=0.05, memory_form="full")
When to use full form: The full form is more physically accurate for strongly driven systems where the memory integral spans multiple decorrelation timescales. The simplified form is computationally faster and often sufficient for qualitative predictions.
Stress Computation Forms¶
The stress computation can use two approaches, controlled by the stress_form
parameter:
Schematic (default): Uses a proxy relation
This gives physically reasonable results with the single modulus parameter \(G_\infty\).
Microscopic: Includes wave-vector integration with structure factor weighting
The microscopic form uses the Percus-Yevick structure factor \(S(k)\) to weight contributions from different length scales. This provides quantitative stress predictions in physical units when the volume fraction is known.
# Default schematic form
model = ITTMCTSchematic(epsilon=0.05)
# Microscopic stress with Percus-Yevick S(k)
model = ITTMCTSchematic(
epsilon=0.05,
stress_form="microscopic",
phi_volume=0.5, # Volume fraction for S(k)
k_BT=4.11e-21, # Room temperature in Joules (optional)
)
Note: When stress_form="microscopic", the phi_volume parameter is
required. This is the colloidal volume fraction used to compute \(S(k)\) via the
Percus-Yevick approximation.
When to use microscopic form: Use microscopic stress when you need quantitative stress predictions tied to physical parameters (temperature, volume fraction). The schematic form is simpler and sufficient for qualitative comparisons or when fitting the modulus \(G_\infty\) as a free parameter.
Combining Memory and Stress Forms¶
Both forms can be combined for maximum physical accuracy:
# Full physics: two-time memory + microscopic stress
model = ITTMCTSchematic(
epsilon=0.1,
decorrelation_form="gaussian",
memory_form="full",
stress_form="microscopic",
phi_volume=0.55,
k_BT=4.11e-21,
)
# Predict flow curve
gamma_dot = np.logspace(-3, 3, 50)
sigma = model.predict(gamma_dot, test_mode='flow_curve')
The model’s __repr__ shows all form selections:
>>> model
ITTMCTSchematic(ε=0.100 [glass], v₂=4.40, h(γ)=gaussian, m=full, σ=microscopic, G_inf=1.00e+06 Pa)
Governing Equations¶
Flow Curve (Steady Shear)¶
At steady state with constant \(\dot{\gamma}\), the stress is:
where \(G(s) = G_\infty \Phi_{\text{eq}}(s)^2\) is the equilibrium relaxation modulus (Fuchs & Cates 2002). The squared correlator arises because the stress autocorrelator couples two density fluctuations.
Yield stress (glass state, \(\varepsilon > 0\)):
Shear thinning: As \(\dot{\gamma}\) increases, the cage is broken faster, and the effective viscosity decreases:
Small Amplitude Oscillation (SAOS)¶
For small strain \(\gamma_0 \ll \gamma_c\), we can linearize around equilibrium:
This gives the storage and loss moduli:
Glass plateau: For \(\varepsilon > 0\), \(G'(\omega \to 0) \to G_\infty f\) (non-zero plateau).
Startup Flow¶
Starting from rest with constant \(\dot{\gamma}\):
This shows a characteristic stress overshoot when \(\dot{\gamma} \tau_{\alpha} > 1\), where \(\tau_{\alpha}\) is the structural relaxation time.
Creep¶
At constant applied stress \(\sigma_0\), the strain rate adjusts to maintain:
In the glass state (\(\sigma_0 < \sigma_y\)): bounded deformation (solid-like). Above yield (\(\sigma_0 > \sigma_y\)): continuous flow (fluidization).
This leads to viscosity bifurcation - a sharp transition between solid and fluid behavior at the yield stress.
Stress Relaxation¶
After cessation of flow at \(t = 0\):
In the glass state, stress does not fully relax:
LAOS¶
For large amplitude oscillatory shear \(\gamma(t) = \gamma_0 \sin(\omega t)\):
The stress is non-sinusoidal and can be decomposed into Fourier harmonics:
Higher harmonics (\(n = 3, 5, \ldots\)) quantify nonlinearity. The ratio \(\sigma_3/\sigma_1\) increases with \(\gamma_0/\gamma_c\).
Parameters¶
Name |
Default |
Bounds |
Units |
Physical Meaning |
|---|---|---|---|---|
\(v_1\) |
0.0 |
(0, 5) |
— |
Linear vertex coefficient. Usually 0 for pure \(F_{12}\). |
\(v_2\) |
2.0 |
(0.5, 10) |
— |
Quadratic vertex coefficient. Glass at \(v_2 > 4\). |
\(\Gamma\) |
1.0 |
(\(10^{-6}\), \(10^6\)) |
1/s |
Bare relaxation rate. Sets microscopic timescale. |
\(\gamma_c\) |
0.1 |
(0.01, 0.5) |
— |
Critical strain for cage breaking. Typically 0.05–0.2. |
\(G_\infty\) |
\(10^6\) |
(1, \(10^{12}\)) |
Pa |
High-frequency elastic modulus. |
Alternative parameterization with \(\varepsilon\) :
Instead of specifying \(v_2\) directly, use the separation parameter \(\varepsilon\):
model = ITTMCTSchematic(epsilon=0.1) # Glass state
model = ITTMCTSchematic(epsilon=-0.1) # Fluid state
This automatically sets \(v_2 = v_{2,c} \times (1 + \varepsilon)\).
Typical Parameter Values¶
System |
\(\varepsilon\) |
\(\gamma_c\) |
\(G_\infty\) (Pa) |
Notes |
|---|---|---|---|---|
PMMA colloids (\(\phi = 0.55\)) |
0.1 |
0.08 |
\(10^2\) |
Hard-sphere reference |
Carbopol microgels |
0.05 |
0.15 |
\(10^3\) |
Soft particles |
Mayonnaise |
0.02 |
0.10 |
\(10^2\) |
Dense emulsion |
Silica suspensions |
0.15 |
0.05 |
\(10^4\) |
Strong glass |
Validity and Assumptions¶
When the model works well:
Dense suspensions (\(\phi > 0.4\) for hard spheres)
Near the glass transition (\(|\varepsilon| < 0.3\))
Monodisperse or narrow size distribution
No attractive interactions (hard-sphere-like)
Brownian timescales (colloidal, not granular)
Limitations:
Does not capture crystallization
Underestimates relaxation times in deeply supercooled regime
No hopping/activated processes (important at low \(T\) or high \(\varepsilon\))
Assumes isotropic structure (no shear-induced ordering)
What You Can Learn¶
The ITT-MCT model provides quantitative predictions of glass transition behavior through the lens of density correlators and cage dynamics. The separation parameter \(\varepsilon\) and critical strain \(\gamma_c\) are the key diagnostics.
Parameter Interpretation¶
- \(\varepsilon\) (Separation Parameter):
The distance from the glass transition, defined as \(\varepsilon = (v_2 - v_{2,c})/v_{2,c}\) where \(v_{2,c} = 4\) for the \(F_{12}\) model.
For graduate students: \(\varepsilon\) is the control parameter in the MCT bifurcation analysis. At \(\varepsilon = 0\), the self-consistent equation \(f = v_1 f + v_2 f^2\) undergoes a fold bifurcation, creating a non-zero long-time limit \(f > 0\) for \(\varepsilon > 0\). The \(\alpha\)-relaxation time diverges as \(\tau_\alpha \sim |\varepsilon|^{-\gamma}\) with \(\gamma \approx 2.5\) (MCT universal exponent). The power-law exponents \(a\) and \(b\) for \(\beta\)-relaxation and \(\alpha\)-relaxation are determined by the exponent parameter \(\lambda = \Gamma(1-a)^2 / \Gamma(1-2a)\).
For practitioners: \(\varepsilon < 0\) means fluid (full relaxation), \(\varepsilon > 0\) means glass (permanent caging). Fitting \(\varepsilon\) from oscillatory or flow curve data immediately tells you if the material has a yield stress. \(\varepsilon \approx 0.1\) is a typical moderately strong glass, \(\varepsilon \approx 0.5\) is a very strong glass. Near \(\varepsilon = 0\), expect extreme slowing down and sensitivity to temperature or concentration.
- \(\gamma_c\) (Critical Strain):
The strain scale at which the cage structure is destroyed by shear.
For graduate students: \(\gamma_c\) appears in the strain decorrelation function \(h(\gamma) = \exp[-(\gamma/\gamma_c)^2]\), which describes how accumulated strain breaks down density correlations. Physically, \(\gamma_c\) is related to the Lindemann criterion: when a particle is displaced by \({\sim}\gamma_c\) times the cage size (\(\approx\) particle diameter), the cage loses memory of its initial configuration. For hard spheres, \(\gamma_c \approx 0.05\text{--}0.1\) corresponds to the amplitude of thermal vibrations in the cage.
For practitioners: \(\gamma_c\) controls the onset of shear thinning in flow curves. Smaller \(\gamma_c\) means the material yields more easily under strain. Fitting \(\gamma_c\) from the crossover shear rate \(\dot{\gamma}^*\) (where viscosity drops) via \(\dot{\gamma}^* \approx 1/(\tau_\alpha \gamma_c)\) reveals the cage stiffness.
- \(v_1, v_2\) (Vertex Coefficients):
The mode-coupling constants determining the memory kernel \(m(\Phi) = v_1 \Phi + v_2 \Phi^2\).
For graduate students: \(v_1\) and \(v_2\) arise from the \(k\)-space convolution integral in the full MCT vertex \(V(k,q,|k-q|) \propto S(k)S(q)S(|k-q|)[\mathbf{k}\cdot\mathbf{q}\, c(q)/k^2 + \mathbf{k}\cdot\mathbf{p}\, c(p)/k^2]^2\). The \(F_{12}\) schematic replaces this with a polynomial approximation. For pure \(F_{12}\), \(v_1 = 0\) and \(v_2\) controls the distance from the glass transition. Higher \(v_2\) means stronger coupling \(\to\) stronger caging \(\to\) higher glass transition.
For practitioners: Usually keep \(v_1 = 0\) (default) and fit only \(v_2\) or equivalently \(\varepsilon\). If \(v_1 \neq 0\), the critical point shifts: \(v_{2,c} = 4/(1-v_1)^2\). Only adjust \(v_1\) if the model fails with \(v_1 = 0\).
- \(\Gamma\) (Bare Relaxation Rate):
The inverse microscopic timescale, \(\Gamma = 1/\tau_0\).
For graduate students: In MCT, \(\Gamma(k) = k^2 D_0 / S(k)\) is the bare (non-interacting) relaxation rate for mode k. For the schematic model, \(\Gamma\) is the average rate controlling the short-time \(\beta\)-relaxation. It sets the absolute timescale: all relaxation times scale as \(\Gamma^{-1}\).
For practitioners: \(\Gamma\) determines the high-frequency behavior in oscillatory tests. From the crossover frequency \(\omega^*\) in \(G'(\omega)\), estimate \(\Gamma \approx \omega^*\). Typical values: \(10^3\)-\(10^6\) s-1 for colloids (diffusion-limited), \(10^{-2}\)-\(10^2\) s-1 for pastes.
- \(G_\infty\) (High-Frequency Modulus):
The elastic modulus at frequencies above all relaxation processes.
For graduate students: \(G_\infty\) is the plateau modulus in the schematic stress formula \(\sigma = G_\infty \int \Phi^2 h(\gamma) \, dt'\). It corresponds to the \(k\)-space integral \(G_\infty = (k_B T / 60\pi^2) \int dk \, k^4 [S'(k)/S(k)^2]^2\) in the full MCT. For hard spheres, \(G_\infty \approx n k_B T\) where \(n\) is number density.
For practitioners: \(G_\infty\) is fitted from the high-frequency plateau in \(G'(\omega)\) or from the yield stress magnitude. Unlike phenomenological models, \(G_\infty\) has a microscopic interpretation tied to particle stiffness and number density.
Material Classification¶
\(\varepsilon\) Range |
Glass State |
Typical Materials |
Flow Characteristics |
|---|---|---|---|
\(\varepsilon\) < -0.2 |
Deep fluid |
Dilute colloids (\(\phi < 0.4\)), weak suspensions |
No yield stress, Newtonian or weakly shear-thinning, \(G'' > G'\) at all \(\omega\) |
-0.2 < \(\varepsilon\) < 0 |
Near-critical fluid |
Moderate colloids (\(0.4 < \phi < 0.516\)), pre-jammed emulsions |
Zero yield stress but very slow relaxation (\(\tau_{\alpha} \to \infty\)), \(G' \approx G''\) at low \(\omega\), extreme shear thinning |
0 < \(\varepsilon\) < 0.1 |
Marginal glass |
Dense colloids (\(\phi \approx 0.52\text{--}0.55\)), soft microgel pastes |
Small yield stress (10–100 Pa), fragile caging, strong overshoot in startup, \(G' > G''\) with small plateau |
0.1 < \(\varepsilon\) < 0.3 |
Moderate glass |
Hard-sphere colloids (\(\phi \approx 0.55\text{--}0.58\)), carbopol gels |
Clear yield stress (100–1000 Pa), robust caging, pronounced plateau in \(G'(\omega)\) |
\(\varepsilon\) > 0.3 |
Deep glass |
Jammed colloids (\(\phi > 0.58\)), concentrated emulsions |
Large yield stress (>1000 Pa), rigid caging, nearly frequency-independent \(G'\) |
Connection to Cage Breaking¶
Critical Strain ( \(\gamma_c\) ): Quantifies cage strength
\(\gamma_c\) ~ 0.05: Very rigid cages (hard-sphere-like, strong glass)
\(\gamma_c\) ~ 0.15: Soft cages (deformable particles, weak glass)
\(\gamma_c\) ~ 0.3: Fragile cages (near-critical or polymer-like)
The strain decorrelation function \(h(\gamma) = \exp[-(\gamma/\gamma_c)^2]\) describes how accumulated strain destroys the structural correlation:
At \(\gamma < \gamma_c\): cage is intact, correlations persist
At \(\gamma \sim \gamma_c\): cage begins to break, correlations decay rapidly
At \(\gamma \gg \gamma_c\): cage is destroyed, system is fully fluidized
Physical Interpretation: \(\gamma_c\) represents the typical strain needed to displace a particle by one particle diameter and escape the cage. It is related to the Lindemann criterion for melting.
Yield Stress Emergence¶
In the glass state (\(\varepsilon > 0\)), the model predicts a dynamic yield stress:
where \(f\) is the non-ergodicity parameter (glass plateau height). This connects the yield stress to three microscopic quantities:
\(G_\infty\): High-frequency modulus (single-particle stiffness)
\(\gamma_c\): Cage escape strain (local rearrangement threshold)
\(f\): Degree of caging (structural arrest parameter)
Diagnostic use: If fitted \(\sigma_y\) is much larger than expected from \(G_\infty \gamma_c f\), additional yield mechanisms (e.g., attractive forces, structural bonds) may be present beyond MCT caging.
Relaxation Timescale Hierarchy¶
The model distinguishes multiple timescales:
Microscopic time: \(\tau_0 = 1/\Gamma\) (Brownian diffusion timescale)
\(\beta\) -relaxation: Short-time rattling in cage, \(\tau_\beta \sim \tau_0\)
\(\alpha\) -relaxation: Cage escape time, \(\tau_\alpha \sim \tau_0 |\varepsilon|^{-\gamma}\) (diverges as \(\varepsilon \to 0\))
Near the glass transition, \(\tau_\alpha\) can be \(10^6\)-\(10^{10}\) times larger than \(\tau_0\), explaining why materials appear “glassy” on experimental timescales yet are technically ergodic.
From fitting: The crossover frequency in \(G'(\omega), G''(\omega)\) gives \(\omega_\alpha \sim 1/\tau_\alpha\), revealing the structural relaxation timescale.
Shear-Induced Fluidization¶
The ITT-MCT model shows how shear melts the glass through strain accumulation:
Low shear rates (\(\dot{\gamma} \tau_\alpha \ll 1\)): Cage has time to reform, system behaves as solid with yield stress
High shear rates (\(\dot{\gamma} \tau_\alpha \gg 1\)): Cage is continuously broken by flow, effective viscosity decreases (shear thinning)
The Weissenberg number \(Wi = \dot{\gamma} \tau_\alpha\) controls the flow-microstructure coupling:
\(Wi \ll 1\): Quasistatic flow, microstructure equilibrates
\(Wi \sim 1\): Transient regime, stress overshoot occurs
\(Wi \gg 1\): Driven flow, microstructure is fully perturbed
Practical insight: If startup experiments show stress overshoot at shear rate \(\dot{\gamma}_{\text{peak}}\), estimate \(\tau_\alpha \sim 1/\dot{\gamma}_{\text{peak}}\).
Regimes and Behavior¶
Fluid State (\(\varepsilon < 0\))¶
Long-time correlator: \(\Phi(\infty) = 0\)
Zero yield stress
Terminal viscosity: \(\eta_0 = G_\infty / \Gamma\)
Newtonian at low rates, shear-thinning at high rates
Glass State (\(\varepsilon > 0\))¶
Non-ergodicity: \(\Phi(\infty) = f > 0\)
Yield stress: \(\sigma_y \approx G_\infty \gamma_c f\)
Plateau modulus: \(G'(\omega \to 0) \approx G_\infty f\)
Stress overshoot in startup
Residual stress in relaxation
Critical Point (\(\varepsilon = 0\))¶
Power-law decay: \(\Phi(t) \sim t^{-a}\)
Diverging relaxation time
Maximum susceptibility
Singular behavior in rheology
Fitting Guidance¶
Initialization Strategy¶
Start with SAOS: Fit \(G'(\omega)\), \(G''(\omega)\) to estimate:
\(G_\infty\) from high-frequency plateau
\(\varepsilon\) from low-frequency plateau (glass) or terminal regime (fluid)
\(\Gamma\) from crossover frequency
Refine with flow curve: Adjust:
\(\gamma_c\) from onset of shear thinning
\(\varepsilon\) from presence/absence of yield stress
Validate with startup: Check:
Overshoot position and height
Troubleshooting¶
Problem: Poor fit at low frequencies
Solution: Check if system is actually glassy (try different \(\varepsilon\) sign)
May need to account for aging/thixotropy
Problem: Wrong shear-thinning slope
Solution: Adjust \(\gamma_c\)
Consider if there are multiple relaxation mechanisms
Problem: No stress overshoot in startup
Solution: Increase \(\dot{\gamma}\) or reduce \(\varepsilon\)
Overshoot requires \(Wi = \dot{\gamma} \tau_{\alpha} > 1\)
Model Comparison¶
ITT-MCT vs SGR¶
Aspect |
ITT-MCT |
SGR |
|---|---|---|
Physics |
Cage effect, density correlators |
Energy landscape, trap escape |
Control parameter |
Volume fraction / \(v_2\) |
Noise temperature \(x\) |
Glass transition |
Sharp (\(v_{2,c} = 4\)) |
Continuous (\(x \to 1\)) |
Shear melting |
Strain decorrelation |
Shear-induced trap escape |
Computation |
ODE integration |
Master equation |
ITT-MCT vs Fluidity Models¶
Aspect |
ITT-MCT |
Fluidity |
|---|---|---|
Foundation |
Microscopic correlators |
Phenomenological fluidity \(f\) |
Parameters |
~5 (schematic) |
~8–10 |
Glass transition |
From MCT vertex |
From fluidity bounds |
Aging |
Implicit in correlator |
Explicit \(df/dt\) term |
Shear banding |
Not in schematic |
In nonlocal version |
Usage¶
Basic Flow Curve¶
from rheojax.models.itt_mct import ITTMCTSchematic
import numpy as np
# Create glass-state model
model = ITTMCTSchematic(epsilon=0.1)
# Predict flow curve
gamma_dot = np.logspace(-3, 3, 50)
sigma = model.predict(gamma_dot, test_mode='flow_curve')
# Shows yield stress at low rates
print(f"Yield stress ≈ {sigma[0]:.1f} Pa")
Linear Viscoelasticity¶
# Get G', G''
omega = np.logspace(-2, 3, 50)
G_components = model.predict(
omega,
test_mode='oscillation',
return_components=True
)
G_prime = G_components[:, 0]
G_double_prime = G_components[:, 1]
# Glass plateau
print(f"G'(ω→0) ≈ {G_prime[0]:.1f} Pa")
Startup with Overshoot¶
# High shear rate startup
t = np.linspace(0, 10, 200)
gamma_dot = 10.0 # 1/s
sigma = model.predict(t, test_mode='startup', gamma_dot=gamma_dot)
# Find overshoot
i_max = np.argmax(sigma)
print(f"Overshoot at t = {t[i_max]:.2f} s")
print(f"Overshoot ratio = {sigma[i_max]/sigma[-1]:.2f}")
LAOS Harmonics¶
# Extract nonlinear harmonics
T = 2 * np.pi # Period
t = np.linspace(0, 5*T, 500)
sigma_prime, sigma_double_prime = model.get_laos_harmonics(
t, gamma_0=0.2, omega=1.0, n_harmonics=3
)
# Third harmonic ratio (nonlinearity measure)
I_3_1 = np.abs(sigma_prime[1]) / np.abs(sigma_prime[0])
print(f"I₃/I₁ = {I_3_1:.3f}")
Fitting Experimental Data¶
# Load data
gamma_dot_exp = np.array([...]) # Experimental shear rates
sigma_exp = np.array([...]) # Experimental stresses
# Initial guess
model = ITTMCTSchematic(epsilon=0.0)
model.parameters.set_value('G_inf', 1e4)
# Fit
model.fit(gamma_dot_exp, sigma_exp, test_mode='flow_curve')
# Check glass state
info = model.get_glass_transition_info()
print(f"Fitted ε = {info['epsilon']:.3f}")
print(f"System is {'glass' if info['is_glass'] else 'fluid'}")
Bayesian Inference¶
# Fit with uncertainty quantification
result = model.fit_bayesian(
gamma_dot_exp, sigma_exp,
test_mode='flow_curve',
num_warmup=1000,
num_samples=2000,
num_chains=4
)
# Get credible intervals
intervals = model.get_credible_intervals(
result.posterior_samples,
credibility=0.95
)
print(f"v₂ = {intervals['v2']['mean']:.2f} "
f"[{intervals['v2']['lower']:.2f}, {intervals['v2']['upper']:.2f}]")
Performance Tips¶
JIT Compilation and Precompilation¶
The ITT-MCT model uses JAX with diffrax for high-performance ODE integration. The first flow curve prediction triggers JIT (Just-In-Time) compilation, which can take 30-90 seconds depending on your hardware. Subsequent calls are very fast (< 1s for typical data sizes).
Precompilation: For predictable timing in interactive applications or
benchmarks, use the precompile() method to trigger compilation upfront:
from rheojax.models.itt_mct import ITTMCTSchematic
import time
model = ITTMCTSchematic(epsilon=0.1)
# Trigger JIT compilation (this is slow)
compile_time = model.precompile()
print(f"Compilation took {compile_time:.1f}s")
# Now flow curve predictions are fast
gamma_dot = np.logspace(-3, 3, 50)
start = time.time()
sigma = model.predict(gamma_dot, test_mode='flow_curve')
print(f"Prediction took {time.time() - start:.2f}s") # < 1s
Note: Precompilation only affects the diffrax-based flow curve solver. Other protocols (oscillation, startup, creep, relaxation, LAOS) use scipy and don’t require precompilation.
Prony Decomposition¶
The Volterra ODE approach converts the \(O(N^2)\) memory integral to \(O(N)\) using Prony series decomposition of the memory kernel. The quality of the Prony fit affects accuracy:
# Check Prony mode quality
model.initialize_prony_modes(t_max=1000.0, n_points=1000)
g, tau = model.get_prony_modes()
print(f"Prony modes: {len(g)}")
print(f"τ range: [{tau.min():.2e}, {tau.max():.2e}]")
If you see warnings about “Prony fit failed”, the memory kernel may be ill-conditioned. Solutions:
Increase
n_prony_modes(default: 10)Adjust the time range in
initialize_prony_modes()Check if the system is very close to the glass transition (\(\varepsilon \approx 0\))
Memory Usage¶
For large batch predictions, memory scales with:
Number of shear rates \(\times\) Prony modes \(\times\) time steps
Typical usage: ~100 MB for 50 shear rates with 10 Prony modes.
For memory-constrained systems:
# Reduce Prony modes (trades accuracy for memory)
model = ITTMCTSchematic(epsilon=0.1, n_prony_modes=5)
# Or process in smaller batches
for gamma_chunk in np.array_split(gamma_dot, 10):
sigma_chunk = model.predict(gamma_chunk, test_mode='flow_curve')
JAX Implementation Patterns¶
This section provides JAX code patterns for implementing ITT-MCT calculations. These patterns illustrate the core algorithms used internally by RheoJAX.
Memory Kernel Computation¶
The \(F_{12}\) memory kernel with strain decorrelation:
import jax.numpy as jnp
from jax import jit
@jit
def memory_kernel_f12(Phi, gamma, v1, v2, gamma_c):
"""
F₁₂ memory kernel: m(Φ, γ) = (v₁Φ + v₂Φ²) · h(γ)
Parameters
----------
Phi : float
Correlator value
gamma : float
Accumulated strain
v1, v2 : float
MCT vertex coefficients
gamma_c : float
Critical strain for cage breaking
"""
# Mode-coupling vertex
m_mct = v1 * Phi + v2 * Phi**2
# Shear decorrelation (Gaussian form)
h = jnp.exp(-(gamma / gamma_c)**2)
return m_mct * h
Stress from Correlator History¶
Computing stress from the correlator integral:
@jit
def compute_stress_from_correlator(Phi_history, dt, gamma_dot, G_inf):
"""
Compute stress from correlator history
σ(t) = γ̇ ∫₀ᵗ G(τ) dτ = γ̇ G_∞ ∫₀ᵗ Φ(τ)² dτ
Parameters
----------
Phi_history : array
Correlator values at each time step
dt : float
Time step
gamma_dot : float
Shear rate
G_inf : float
High-frequency modulus
"""
G_history = G_inf * Phi_history**2
return gamma_dot * jnp.trapezoid(G_history, dx=dt)
LAOS Harmonics Extraction¶
Extracting Fourier harmonics from LAOS stress response:
def extract_laos_harmonics(t, stress, omega, n_harmonics=5):
"""
Extract odd Fourier harmonics from LAOS stress
σ(t) = Σ [σ'_n sin(nωt) + σ''_n cos(nωt)]
Parameters
----------
t : array
Time points (should cover complete cycles)
stress : array
Stress response
omega : float
Angular frequency
n_harmonics : int
Number of harmonics to extract (1, 3, 5, ...)
Returns
-------
sigma_prime : array
In-phase components [σ'₁, σ'₃, σ'₅, ...]
sigma_double_prime : array
Out-of-phase components [σ''₁, σ''₃, ...]
"""
period = 2 * jnp.pi / omega
# Use last complete cycle
mask = t > (t[-1] - period)
t_cycle = t[mask] - (t[-1] - period)
stress_cycle = stress[mask]
sigma_prime = []
sigma_double_prime = []
for n in range(1, 2 * n_harmonics, 2): # Odd harmonics only
# Fourier coefficients via projection
sin_component = (2 / period) * jnp.trapezoid(
stress_cycle * jnp.sin(n * omega * t_cycle), t_cycle
)
cos_component = (2 / period) * jnp.trapezoid(
stress_cycle * jnp.cos(n * omega * t_cycle), t_cycle
)
sigma_prime.append(sin_component)
sigma_double_prime.append(cos_component)
return jnp.array(sigma_prime), jnp.array(sigma_double_prime)
Usage for nonlinearity quantification:
# Extract harmonics from LAOS simulation
sigma_prime, sigma_double_prime = model.get_laos_harmonics(
t, gamma_0=0.2, omega=1.0, n_harmonics=3
)
# Third harmonic ratio (intrinsic nonlinearity)
I_3_1 = jnp.abs(sigma_prime[1]) / jnp.abs(sigma_prime[0])
print(f"I₃/I₁ = {I_3_1:.4f}")
# Fifth harmonic ratio
I_5_1 = jnp.abs(sigma_prime[2]) / jnp.abs(sigma_prime[0])
print(f"I₅/I₁ = {I_5_1:.4f}")
See Also¶
ITT-MCT Isotropic (ISM) — Full \(k\)-resolved MCT for quantitative predictions with \(S(k)\) input
SGR Conventional (Soft Glassy Rheology) — Handbook — Alternative glass transition model (trap-based, no \(S(k)\) required)
../fluidity/fluidity_saramito_local — Simpler thixotropic yield stress model
Shear Transformation Zone (STZ) — Shear transformation zone theory (effective temperature approach)
Choosing between ITT-MCT and SGR:
Use ITT-MCT if: You have colloidal systems, know the volume fraction, want to connect to microscopic structure factor \(S(k)\)
Use SGR if: You have generic soft glasses (foams, emulsions, pastes), want simpler parameterization, focus on aging/rejuvenation dynamics
API Reference¶
See ITTMCTSchematic in the Models API reference
for the full class documentation, including all methods and attributes.