Fractional Isotropic-Kinematic Hardening (FIKH)¶
Quick Reference¶
Use when: Thixotropic elasto-viscoplastic materials with power-law memory, stretched exponential recovery, broad relaxation spectra
Parameters: 12 (base), 20 (with thermal), 22 (full thermal + isotropic hardening)
Key equation: \(D_t^\alpha \lambda = \frac{1-\lambda}{\tau_{thix}} - \Gamma \lambda |\dot{\gamma}^p|\) (Caputo fractional structure evolution)
Test modes: flow_curve, startup, relaxation, creep, oscillation, laos
Material examples: Waxy crude oils, colloidal gels, drilling fluids, food gels, greases
- class rheojax.models.fikh.fikh.FIKH(include_thermal=True, include_isotropic_hardening=False, alpha_structure=0.5, n_history=100, stable_dt=0.01)[source]
Bases:
FIKHBaseFractional Isotropic-Kinematic Hardening (FIKH) Model.
A thixotropic elasto-viscoplastic model extending MIKH with: 1. Caputo fractional derivative for structure evolution (power-law memory). 2. Full thermokinematic coupling (Arrhenius + viscous heating).
The fractional derivative captures memory effects in thixotropic recovery, where the structure remembers its history via a power-law kernel rather than simple exponential decay.
- Governing Equations:
σ_total = σ + η_inf·γ̇
- Stress Evolution (ODE):
dσ/dt = G(γ̇ - γ̇ᵖ) - (G/η)σ
- Yield Surface:
|σ - α| ≤ σ_y(λ, T) σ_y = σ_y0 + Δσ_y·λ^m_y · exp(E_y/R·(1/T - 1/T_ref))
- Fractional Structure Evolution (Caputo):
D^α_C λ = (1-λ)/τ_thix - Γ·λ·|γ̇ᵖ|
- Backstress (Armstrong-Frederick):
dα = C·dγᵖ - γ_dyn·|α|^(m-1)·α·|dγᵖ|
- Temperature:
ρc_p·dT/dt = χ·σ·γ̇ᵖ - h·(T - T_env)
- Parameters (22 with thermal):
G: Shear modulus [Pa] eta: Maxwell viscosity [Pa·s] C: Kinematic hardening modulus [Pa] gamma_dyn: Dynamic recovery parameter [-] m: AF recovery exponent [-] sigma_y0: Minimal yield stress [Pa] delta_sigma_y: Structural yield contribution [Pa] tau_thix: Thixotropic time scale [s] Gamma: Breakdown coefficient [-] alpha_structure: Fractional order (0 < α < 1) [-] eta_inf: High-shear viscosity [Pa·s] mu_p: Plastic viscosity [Pa·s] T_ref: Reference temperature [K] E_a: Viscosity activation energy [J/mol] E_y: Yield stress activation energy [J/mol] m_y: Structure exponent for yield [-] rho_cp: Volumetric heat capacity [J/(m³·K)] chi: Taylor-Quinney coefficient [-] h: Heat transfer coefficient [W/(m²·K)] T_env: Environmental temperature [K]
- Limiting Behavior:
α → 1: Recovers classical IKH/MIKH (exponential structure relaxation) E_a = E_y = 0: Isothermal behavior (temperature-independent)
Example
>>> # Isothermal FIKH >>> model = FIKH(include_thermal=False, alpha_structure=0.7) >>> model.fit(omega, G_star, test_mode='oscillation')
>>> # Thermal FIKH with startup >>> model = FIKH(include_thermal=True) >>> result = model.fit(t, stress, test_mode='startup', strain=strain) >>> sigma_pred = model.predict_startup(t_new, gamma_dot=1.0)
- __init__(include_thermal=True, include_isotropic_hardening=False, alpha_structure=0.5, n_history=100, stable_dt=0.01)[source]
Initialize FIKH model.
- Parameters:
include_thermal (
bool) – Enable thermokinematic coupling (Arrhenius + heating).include_isotropic_hardening (
bool) – Enable isotropic hardening R.alpha_structure (
float) – Fractional order for structure (0 < α < 1). - α → 0: Strong memory (slow recovery) - α → 1: Weak memory (fast, exponential recovery)n_history (
int) – History buffer size for Caputo derivative.stable_dt (
float) – Internal integration substep (seconds) for startup / LAOS. SeeFIKHBasefor the full explanation. Coarse user grids are densified to this step before the explicit return-mapping kernel runs. Set to 0 to disable. Default 0.02 s.
- predict_flow_curve(gamma_dot, T=None)[source]
Predict steady-state flow curve.
- predict_startup(t, gamma_dot=1.0, T_init=None)[source]
Predict startup shear response.
- predict_relaxation(t, sigma_0=100.0, T_init=None)[source]
Predict stress relaxation.
- predict_creep(t, sigma_applied=50.0, T_init=None)[source]
Predict creep response.
- predict_oscillation(omega, gamma_0=0.01, n_cycles=5)[source]
Predict oscillatory response (SAOS G*, G’, G’’).
For small amplitudes, this uses the linearized response. For accurate nonlinear response, use predict_laos().
- predict_laos(t, gamma_0=1.0, omega=1.0, T_init=None, strain=None)[source]
Predict LAOS (Large Amplitude Oscillatory Shear) response.
Integrates on the densified
stable_dtgrid (same as the fit path) so fit and predict stay in the linearization regime of the explicit return mapping. Ifstrainis omitted, a clean sinusoidgamma_0·sin(omega·t)is synthesized; pass the measured strain array for fit/predict consistency on experimental data.- Parameters:
t (numpy.typing.ArrayLike) – Time array at which to report the response.
gamma_0 (
float) – Strain amplitude used ifstrainis not given.omega (
float) – Angular frequency used ifstrainis not given.T_init (
float|None) – Initial temperature (thermal models only).strain (
Optional[numpy.typing.ArrayLike]) – Optional measured strain array aligned witht. When supplied,gamma_0/omegaare ignored for the simulation and the measured trace drives the return mapping.
- Return type:
- Returns:
Dictionary with ‘time’, ‘strain’, ‘stress’, and optionally ‘temperature’.
- model_function(X, params, test_mode=None, **kwargs)[source]
Model function for NumPyro Bayesian inference.
This method provides a pure function interface for Bayesian sampling, capturing the test_mode via closure for correct mode-aware inference.
- Parameters:
- Return type:
- Returns:
Predicted values.
- get_limiting_behavior()[source]
Get limiting behavior diagnostics.
- precompile(test_mode='relaxation', X=None, y=None, *, n_points=100, verbose=True)[source]
Precompile JIT kernels for faster subsequent predictions.
Triggers JAX JIT compilation of the core FIKH kernels by running a small dummy prediction. This is useful when you want to avoid the compilation overhead on first real prediction.
- Parameters:
- Return type:
- Returns:
Compilation time in seconds.
Example
>>> model = FIKH(include_thermal=True) >>> compile_time = model.precompile() # Triggers JIT >>> # Now predictions will be fast >>> sigma = model.predict_startup(t_real, gamma_dot=1.0)
Notation Guide¶
Symbol |
Units |
Description |
|---|---|---|
\(D^\alpha\) |
— |
Caputo fractional derivative of order \(\alpha\) |
\(\alpha\) |
— |
Fractional order (0 < \(\alpha\) < 1); controls memory strength |
\(\sigma\) |
Pa |
Deviatoric stress (elasto-plastic component) |
\(A\) |
— |
Backstress internal variable (\(\alpha_{back} = C \cdot A\)) |
\(\lambda\) |
— |
Structural parameter (0 = destructured, 1 = structured) |
\(\dot{\gamma}\) |
1/s |
Total shear rate |
\(\dot{\gamma}^p\) |
1/s |
Plastic shear rate |
\(\sigma_y\) |
Pa |
Current yield stress (depends on \(\lambda\) and T) |
\(\xi\) |
Pa |
Relative stress (\(\xi = \sigma - C \cdot A\)) |
\(E_\alpha(z)\) |
— |
Mittag-Leffler function (generalized exponential) |
\(\Gamma(\cdot)\) |
— |
Gamma function (appears in Caputo normalization) |
Overview¶
The FIKH (Fractional Isotropic-Kinematic Hardening) model extends the Maxwell-Isotropic-Kinematic Hardening (MIKH) framework by replacing integer-order structure kinetics with a Caputo fractional derivative. This captures the power-law memory observed in many complex fluids where recent deformation history affects current structure more strongly than distant past.
The model combines:
Maxwell viscoelasticity: Stress relaxation via \(\eta\) (Maxwell viscosity)
Kinematic hardening: Backstress evolution (Armstrong-Frederick type)
Fractional thixotropy: Power-law memory via Caputo derivative of \(\lambda\)
Thermokinematic coupling (optional): Temperature-dependent yield and viscosity
The FIKH model captures:
Power-law stress relaxation at long times (not just exponential)
Stretched exponential recovery after shear cessation
Cole-Cole depression in frequency sweeps
Delayed yielding in creep tests
Thermal feedback effects (shear heating, Arrhenius viscosity)
Theoretical Background¶
Historical Context¶
Fractional calculus emerged from Leibniz’s 1695 correspondence with L’Hôpital about the meaning of d^(1/2)y/dx^(1/2). It remained largely a mathematical curiosity until the 20th century, when its natural connection to power-law phenomena in physics became apparent.
In rheology, fractional derivatives gained prominence through:
Scott Blair (1940s): Introduced fractional elements for viscoelasticity
Caputo (1967): Developed the Caputo derivative with physical initial conditions
Bagley & Torvik (1983): Fractional derivatives in polymer viscoelasticity
Jaishankar & McKinley (2013-2014): Fractional K-BKZ for nonlinear rheology
The FIKH model synthesizes these developments with the IKH thixotropic framework, providing a thermodynamically consistent model for materials with power-law memory.
Physical Interpretation of Fractional Order¶
The fractional order \(\alpha \in (0, 1)\) controls the memory strength:
\(\alpha \to 1\): Weak memory, fast exponential recovery (recovers MIKH)
\(\alpha = 0.5\): Intermediate power-law relaxation (square-root memory)
\(\alpha \to 0\): Strong memory, very slow “glassy” dynamics
Microstructural interpretation: In complex fluids, \(\alpha\) relates to the breadth of the relaxation spectrum. A single exponential relaxation (narrow spectrum) corresponds to \(\alpha = 1\). As the spectrum broadens (multiple timescales), effective \(\alpha\) decreases. From Cole-Cole analysis, the depression angle \(\theta = (1-\alpha)\pi/2\).
Connection to stretched exponentials: The Mittag-Leffler function \(E_{\alpha(-x)}\) that appears in FIKH solutions interpolates between:
\(E_1(-x) = \exp(-x)\) (pure exponential)
\(E_\alpha(-x)\) for \(\alpha < 1\): stretched exponential at short times, power-law at long times
Caputo Fractional Derivative¶
For \(0 < \alpha < 1\), the Caputo fractional derivative is defined as:
Key properties:
\(D^\alpha\) (constant) \(= 0\) (compatible with physical initial conditions)
As \(\alpha \to 1\): \(D^\alpha f \to df/dt\) (recovers ordinary derivative)
Introduces power-law memory with kernel \((t-s)^{-\alpha}\)
Why Caputo over Riemann-Liouville? The Caputo derivative allows physical interpretation of initial conditions: \(D^\alpha(\text{constant}) = 0\), so \(\lambda(0) = \lambda_0\) is meaningful. The Riemann-Liouville derivative would require specifying fractional-order initial conditions, which lack physical interpretation.
Mittag-Leffler Relaxation¶
The Mittag-Leffler function is the fundamental solution to fractional relaxation equations:
For the fractional structure equation D\(^{\alpha \lambda = -(\lambda-\lambda_eq)/\tau}\), the solution is:
Asymptotic behavior:
Short times (\(t \ll \tau\)): \(\lambda(t) \approx \lambda_0 + (\lambda_{eq} - \lambda_0) \cdot (t/\tau)^\alpha / \Gamma(1+\alpha)\) (stretched exponential onset)
Long times (\(t \gg \tau\)): \(\lambda(t) \approx \lambda_{eq} - (\lambda_{eq} - \lambda_0) \cdot (\tau/t)^\alpha / \Gamma(1-\alpha)\) (power-law tail)
This interpolation between stretched exponential and power-law is the key signature of fractional kinetics in experimental data.
Thermodynamic Consistency¶
The FIKH model can be derived within a generalized thermodynamic framework that extends the Gurtin-Fried-Anand approach to fractional derivatives:
Frame invariance: Constitutive equations remain objective
Second law compliance: Dissipation inequality satisfied
Energy balance: Clear separation of stored and dissipated energy
The key modification for fractional models is replacing the standard dissipation rate with a fractional dissipation functional that accounts for the non-local memory effects. This ensures thermodynamic consistency while capturing power-law behavior.
Physical Foundations¶
Maxwell-Like Framework¶
The FIKH model retains the Maxwell viscoelastic element from MIKH:
Short times (\(t \ll \tau = \eta/G\)): Elastic response, \(\sigma \approx G \cdot \gamma\)
Long times (\(t \gg \tau\)): Viscous relaxation, \(\sigma \to 0\) under constant strain
The Maxwell viscosity \(\eta\) sets the characteristic relaxation time \(\tau = \eta/G\) for the elastic stress, while the fractional kinetics govern the structural parameter \(\lambda\) on potentially much longer timescales.
Armstrong-Frederick Kinematic Hardening¶
The backstress evolution captures directional memory (Bauschinger effect):
Where the physical backstress is \(\alpha_back\) = C·A. The Armstrong-Frederick law provides:
Hardening: Backstress builds with plastic deformation direction
Dynamic recovery: Prevents unbounded backstress growth
Bauschinger effect: Easier reverse flow after forward loading
Steady-state backstress: At constant shear rate:
The ratio C/q = C·A_ss determines the maximum backstress magnitude.
Fractional Structure Kinetics¶
The defining feature of FIKH is the fractional structure evolution:
Where:
\(\lambda \in [0, 1]\): Structure parameter (1 = fully structured, 0 = broken)
\(\tau_{\text{thix}}\): Thixotropic rebuilding time scale [s]
\(\Gamma\): Structural breakdown coefficient [–]
\(\alpha \in (0, 1)\): Fractional order (memory strength)
Physical interpretation of terms:
Build-up \((1-\lambda)/\tau_{\text{thix}}\): Structure recovers toward \(\lambda = 1\) via Brownian motion
Breakdown \(\Gamma \cdot \lambda \cdot |\dot{\gamma}^p|\): Shear breaks structure proportional to current structure and flow rate
Contrast with MIKH: In MIKH (\(\alpha = 1\)), this becomes \(d\lambda/dt = \ldots\), giving exponential dynamics. The fractional derivative introduces memory: the rate of structure change depends not just on current state, but on the entire history of \(\lambda\).
Thermokinematic Coupling¶
For thermal-coupled FIKH (include_thermal=True):
Temperature-dependent yield stress:
Arrhenius viscosity:
Temperature evolution:
Where:
\(\chi \approx 0.9\): Taylor-Quinney coefficient (fraction of plastic work \(\to\) heat)
\(h\): Heat transfer coefficient [W/(\(m^2 \cdot K\))]
\(T_{\text{env}}\): Environmental temperature [K]
This coupling enables prediction of thermal runaway at high shear rates and thermal droop in flow curves.
Mathematical Formulation¶
Core Equations¶
Stress decomposition:
Total stress = elasto-plastic contribution + viscous background.
Yield condition:
Material yields when relative stress \(|\xi|\) exceeds current yield stress.
Plastic flow rule (Perzyna regularization):
where ⟨·⟩ = max(·, 0). Small \(\mu_p\) gives rate-independent plasticity.
State Variables¶
The FIKH state vector is:
y = [σ, A, λ, (T if thermal)]
Dimension: 3 (base) or 4 (thermal)
────────────────────────────────────
y[0] = σ : deviatoric stress [Pa]
y[1] = A : backstress internal variable [-]
y[2] = λ : structure parameter [-]
y[3] = T : temperature [K] (if include_thermal=True)
Plus a history buffer for the fractional derivative:
λ_history = [λ_{n-N+1}, ..., λ_{n-1}, λ_n] # Shape: (n_history,)
The history buffer size N determines the memory truncation length and accuracy of the L1 scheme approximation.
Scaling Groups¶
Fractional Structure Number ( \(\Lambda_{\alpha}\) ):
Scaling parameter relating shear rate to the effective (fractional) structure buildup rate. Note the \(1/\alpha\) exponent reflecting fractional time scaling.
Note
\(\Lambda_\alpha\) is not dimensionless for \(\alpha \neq 1\) (it has dimensions \(\text{s}^{1/\alpha - 1}\)). It is a useful heuristic scaling parameter for comparing flow regimes within the FIKH model at fixed \(\alpha\), but cannot be directly compared to the standard Weissenberg number \(Wi = \dot{\gamma} \cdot \tau\).
Deborah Number (De):
Ratio of Maxwell relaxation time to experimental time scale.
Memory Number (Me):
Characterizes the importance of memory effects. \(Me \gg 1\) means strong history dependence; \(Me \ll 1\) approaches Markovian (memoryless) limit.
Governing Equations¶
The complete FIKH system:
Stress evolution:
Backstress evolution:
Fractional structure evolution:
Plastic flow rate:
Temperature evolution (if thermal):
Protocol Equations¶
At steady state with constant \(\dot{\gamma}\), the Caputo derivative of a constant is zero:
Equilibrium structure:
Note: The flow curve shape is identical to MIKH at constant temperature. Fractional effects appear only in transients. Thermal coupling causes “thermal droop” at high rates due to shear heating.
Protocol: \(\dot{\gamma}(t) = \dot{\gamma}_0 \cdot H(t)\), starting from \(\lambda(0)\) = 1 (aged sample)
Key difference from MIKH: Structure breakdown follows Mittag-Leffler decay:
where \(\tau_{\text{eff}} = \tau_{\text{thix}} / (1 + \Gamma \cdot \tau_{\text{thix}} \cdot |\dot{\gamma}|)\).
Signatures:
Broader stress overshoot than MIKH
Slower approach to steady state (“long tail”)
Power-law decay at long times, not exponential
Protocol: Step strain \(\gamma_0\) at t = 0, then \(\dot{\gamma}\) = 0
For strains below yield, structure rebuilds according to:
Solution:
Asymptotics:
Short time: \(\lambda(t) \approx \lambda_0 + (1-\lambda_0)(t/\tau)^\alpha / \Gamma(1+\alpha)\)
Long time: \(\lambda(t) \approx 1 - (1-\lambda_0)(\tau/t)^\alpha / \Gamma(1-\alpha)\) (power-law approach)
The stress may increase during relaxation (anti-thixotropic recovery) as \(\lambda \to 1\) increases the modulus.
Protocol: Constant stress \(\sigma_0\) applied at t = 0
Below fully-structured yield (\(\sigma_0 < \sigma_y(\lambda=1\), T)): Only elastic deformation initially. Structure may slowly break due to thermal fluctuations, leading to delayed yielding.
Intermediate stress (\(\sigma_y(\lambda=0) < \sigma_0 < \sigma_y(\lambda=1)\)): Viscosity bifurcation — delay followed by avalanche-like yielding:
The 1/\(\alpha\) exponent means smaller \(\alpha\) gives longer delays (stronger memory resists yielding).
Above yield: Immediate plastic flow with potential thermal runaway if dissipation exceeds heat loss.
Protocol: \(\gamma(t) = \gamma_0 \cdot \sin(\omega t)\), \(\gamma_0 \ll 1\) (linear regime)
For fractional viscoelastic response at equilibrium \(\lambda_eq\), the complex modulus follows a fractional Maxwell form:
Storage modulus:
Loss modulus:
Cole-Cole signature: Depressed arc with depression angle \(\theta = (1-\alpha)\pi/2\).
Protocol: \(\gamma(t) = \gamma_0 \cdot \sin(\omega t)\), \(\gamma_0\) finite (nonlinear, may yield)
Full coupled system requiring numerical integration. The fractional memory introduces:
Power-law decay of higher harmonics
Asymmetric Lissajous figures from back-stress
Delayed yielding within cycle (fractional delay)
Cycle-by-cycle thermal softening at high amplitude/frequency
What You Can Learn¶
This section explains what physical insights can be extracted from FIKH model parameters after fitting to experimental data.
Parameter Interpretation¶
Fractional Order \(\alpha\) :
\(\alpha \approx 0.9\text{--}1.0\): Material behaves like classical thixotropic fluid (single timescale)
\(\alpha \approx 0.5\text{--}0.7\): Broad distribution of restructuring timescales (typical for gels)
\(\alpha < 0.3\): “Glassy” dynamics with very long memory (aging-dominated)
Physical interpretation: \(\alpha\) relates to the breadth of the relaxation spectrum. From Cole-Cole analysis, depression angle \(\theta = (1-\alpha)\pi/2\). Materials with \(\alpha \approx 0.5\) show \(45°\) depression, indicating a very broad spectrum.
Practical measurement: Fit Cole-Cole plot from frequency sweep, or fit recovery data to stretched exponential (\(\beta \approx \alpha\) for moderate stretching).
Thixotropic Timescale \(\tau_{\text{thix}}\) :
Sets the characteristic time for structure recovery at rest
Larger \(\tau_{\text{thix}}\) \(\to\) slower rebuilding \(\to\) more thixotropic
Compare to process timescales: \(\tau_{\text{thix}} \gg t_{\text{process}}\) means structure won’t recover
Typical values: 1–1000 s for industrial fluids
Breakdown Coefficient \(\Gamma\) :
Rate of structure destruction under flow
\(\Gamma \cdot \tau_{\text{thix}}\) product determines equilibrium structure at given shear rate
\(\lambda_{eq} = 1/(1 + \Gamma \cdot \tau_{\text{thix}} \cdot |\dot{\gamma}|)\)
Critical shear rate: \(\dot{\gamma}_{\text{crit}} = 1/(\Gamma \cdot \tau_{\text{thix}})\) where \(\lambda\) drops to 0.5
Yield Stress Parameters:
\(\sigma_{y0}\): Residual yield when fully destructured (\(\lambda = 0\))
\(\Delta\sigma_y\): Additional yield from structure (total yield at \(\lambda = 1\) is \(\sigma_{y0} + \Delta\sigma_y\))
Ratio \(\Delta\sigma_y/\sigma_{y0}\) indicates how much structure contributes to yielding
Thermal Parameters:
\(E_a\): Viscosity activation energy [J/mol]. Typical: 20–50 kJ/mol for polymers
\(E_y\): Yield activation energy. Lower \(E_y\) \(\to\) yield is less temperature-sensitive
Higher \(E_a/E_y\) ratio \(\to\) viscosity drops faster than yield with temperature
Derived Quantities¶
From Flow Curve Fit:
# Critical shear rate where λ drops to 0.5
gamma_dot_crit = 1 / (Gamma * tau_thix)
# Viscosity ratio (structured / broken)
eta_ratio = (sigma_y0 + delta_sigma_y) / sigma_y0
# Structure number (dimensionless thixotropic intensity)
Str = Gamma * tau_thix * gamma_dot_applied
From Creep Analysis:
# Delay time for yielding at stress σ₀ (fractional)
sigma_y_full = sigma_y0 + delta_sigma_y
t_delay = tau_thix * ((sigma_y_full - sigma_0) / sigma_0)**(1/alpha)
From Frequency Sweep:
import numpy as np
# Cole-Cole depression angle
theta = (1 - alpha) * np.pi / 2 # radians
# Crossover frequency (where G' = G'')
omega_c = 1 / tau_maxwell # where tau_maxwell = eta / G
From Startup Overshoot:
# Peak strain (approximate)
gamma_peak = sigma_y_full / G
# Overshoot ratio
overshoot_ratio = sigma_peak / sigma_steady
Material Classification¶
Parameter Range |
Material Behavior |
Typical Materials |
Processing Implications |
|---|---|---|---|
\(\alpha > 0.8\), \(\tau_{\text{thix}} < 10\) s |
Near-exponential, fast recovery |
Simple gels, light emulsions |
Consider using MIKH instead |
\(\alpha = 0.5\text{--}0.8\), \(\tau_{\text{thix}} = 10\text{--}100\) s |
Moderate memory, stretched recovery |
Waxy crude oils, drilling muds |
Standard FIKH application range |
\(\alpha < 0.5\), \(\tau_{\text{thix}} > 100\) s |
Strong memory, slow glassy dynamics |
Aging glasses, cement pastes |
Long history buffer needed (n_history > 500) |
High \(E_a\) (> 50 kJ/mol) |
Strong temperature sensitivity |
Waxy crude oils, polymers |
Consider thermal coupling critical |
Process Design Insights¶
Pipeline Restart (waxy crude):
Fit FIKH to startup data at \(T_{\text{restart}}\)
Compute restart pressure from steady-state stress at desired flow rate
Account for thermal effects: higher \(h\) \(\to\) less softening \(\to\) higher restart pressure
Use delay time formula to estimate how long the pipeline can sit before gelation
Product Stability:
Compare \(\tau_{\text{thix}}\) to shelf-life timescales
If \(\tau_{\text{thix}} \gg t_{\text{shelf}}\) \(\to\) product remains broken (poor stability)
Recommendation: \(\tau_{\text{thix}} < 0.1 \times t_{\text{storage}}\) for structure recovery
Lower \(\alpha\) (stronger memory) means slower recovery but more stable once recovered
Processing Windows:
Critical shear rate \(\dot{\gamma}_{\text{crit}} = 1/(\Gamma \cdot \tau_{\text{thix}})\) defines transition from structured to flowing
Design mixers/pumps to operate above \(\dot{\gamma}_{\text{crit}}\) for easy flow
Storage vessels should see \(\dot{\gamma} \ll \dot{\gamma}_{\text{crit}}\) for structure recovery
Temperature control: higher \(T\) \(\to\) lower yield \(\to\) easier processing but more energy
Quality Control:
Monitor \(\alpha\) over production batches: consistent \(\alpha\) indicates consistent microstructure
Track \(\tau_{\text{thix}}\): increasing \(\tau_{\text{thix}}\) may indicate contamination or degradation
Plot \((\alpha, \tau_{\text{thix}})\) phase space to identify batch-to-batch variability
Industrial Applications¶
Waxy Crude Oil Pipeline Operations¶
The FIKH model is particularly suited for waxy crude oils where the wax crystal network exhibits power-law memory from hierarchical structure.
Pipeline Restart After Shutdown:
When a pipeline shuts down, wax precipitates and forms a gel network with complex relaxation dynamics. Key parameter ranges:
\(\alpha\) = 0.5-0.7: Power-law recovery from hierarchical crystal structure
\(\tau_{\text{thix}}\) = 100–10,000 s: Long aging times for gelled pipelines
\(\sigma_y,0 + \Delta\sigma_y\) = 50-500 Pa: Gel strength depends on cooling rate and rest time
Engineering implications:
Restart pressure scales with \(\sigma_y(t_rest)\) where t_rest follows fractional kinetics
The 1/\(\alpha\) exponent in delay time formula means \(\alpha\) = 0.5 gives 4× longer delays than \(\alpha\) = 1 for same stress ratio
Monitor thermokinematic memory: temperature cycling affects \(\alpha\) through wax morphology
Drilling Fluids¶
Water-based drilling fluids with clay platelets exhibit fractional behavior from distributed particle-particle bond energies:
\(\alpha\) = 0.4-0.7: Depending on clay type and concentration
\(\tau_{\text{thix}}\) = 1–100 s: Faster than crude oils due to smaller particles
Thermal coupling: Critical for deep wells (high T)
Borehole stability:
Fractional recovery means gel strength continues building over longer times than exponential models predict
API gel tests at 10 sec vs 10 min can show continued strength gain even after 10 min (power-law tail)
Greases and Lubricants¶
Greases exhibit fractional behavior from thickener fiber networks:
\(\alpha\) = 0.5-0.7: From distributed fiber entanglement dynamics
Thermal coupling: Critical for high-speed bearing applications
Bearing startup:
Fractional memory means cold-start torque depends on entire thermal history
Use FIKH with thermal coupling to predict temperature-dependent startup behavior
Parameters¶
Parameter |
Default |
Bounds |
Units |
Description |
|---|---|---|---|---|
|
1000 |
(0.1, \(10^9\)) |
Pa |
Shear modulus |
|
\(10^6\) |
(\(10^{-3}\), \(10^{12}\)) |
Pa·s |
Maxwell viscosity (\(\tau = \eta/G\)) |
|
500 |
(0, \(10^9\)) |
Pa |
Kinematic hardening modulus |
|
1.0 |
(0, \(10^4\)) |
— |
Dynamic recovery parameter |
|
1.0 |
(0.5, 3) |
— |
AF recovery exponent |
|
10 |
(0, \(10^9\)) |
Pa |
Minimal yield stress (destructured) |
|
50 |
(0, \(10^9\)) |
Pa |
Structural yield stress contribution |
|
1.0 |
(\(10^{-6}\), \(10^{12}\)) |
s |
Thixotropic rebuilding time |
|
0.5 |
(0, \(10^4\)) |
— |
Structural breakdown coefficient |
|
0.5 |
(0.0, 1.0) |
— |
Fractional order for structure (practical range: 0.05–0.99; avoid degenerate limits α→0 and α→1) |
|
0.1 |
(0, \(10^9\)) |
Pa·s |
High-shear (solvent) viscosity |
|
\(10 \times 10^{-3}\) |
(10\(^{-9, 10^3}\)) |
Pa·s |
Plastic viscosity (Perzyna) |
Parameter |
Default |
Bounds |
Units |
Description |
|---|---|---|---|---|
|
298.15 |
(200, 500) |
K |
Reference temperature |
|
50000 |
(0, \(2 \times 10^5\)) |
J/mol |
Viscosity activation energy |
|
30000 |
(0, \(2 \times 10^5\)) |
J/mol |
Yield stress activation energy |
|
1.0 |
(0.5, 2) |
— |
Structure exponent for yield |
|
\(4 \times 10^6\) |
(\(10^5, 10^8\)) |
J/(\(m^3 \cdot K\)) |
Volumetric heat capacity |
|
0.9 |
(0, 1) |
— |
Taylor-Quinney coefficient |
|
100 |
(0, \(10^6\)) |
W/(\(m^2 \cdot K\)) |
Heat transfer coefficient |
|
298.15 |
(200, 500) |
K |
Environmental temperature |
Parameter |
Default |
Bounds |
Units |
Description |
|---|---|---|---|---|
|
0 |
(0, \(10^9\)) |
Pa |
Isotropic hardening saturation |
|
1.0 |
(0, 100) |
— |
Isotropic hardening rate |
Fitting Guidance¶
Initialization Strategy¶
Estimate \(\alpha\) from Cole-Cole: Fit frequency sweep, measure depression angle \(\theta\), compute \(\alpha = 1 - 2\theta/\pi\)
Flow curve first: Fit \(\sigma_{y0}, \Delta\sigma_y, \tau_{\text{thix}}, \Gamma, \eta_\infty\) from steady-state data
Startup second: Fix flow curve params, fit \(G\), \(C\), \(\gamma_{\text{dyn}}\) from transient
Relaxation/creep: Fine-tune \(\eta\) (Maxwell viscosity) and verify \(\alpha\)
\(\alpha\) estimation from recovery data:
import numpy as np
from scipy.optimize import curve_fit
def stretched_exp(t, tau_c, beta):
return 1 - np.exp(-(t/tau_c)**beta)
# Fit stretched exponential to recovery
popt, _ = curve_fit(stretched_exp, t_recovery, lambda_recovery,
p0=[10.0, 0.7], bounds=([0.1, 0.1], [1000, 1.0]))
tau_c, beta = popt
# β ≈ α for moderate stretching
alpha_estimate = beta
Protocol Selection¶
Protocol |
Best for |
|---|---|
|
Steady-state parameters (\(\sigma_{y0}, \Delta\sigma_y, \eta_\infty\)) |
|
Elasticity (\(G\)), hardening (\(C\), \(\gamma_{\text{dyn}}\)), transient \(\alpha\) effects |
|
Maxwell viscosity (\(\eta\)), \(\alpha\) verification from power-law tail |
|
Combined viscoelastic-plastic, delayed yielding (\(\alpha-dependent\)) |
|
Cole-Cole depression (\(\alpha\)), crossover frequency |
|
Full nonlinear characterization, harmonic content |
Troubleshooting¶
Issue |
Solution |
|---|---|
Poor fit quality (low \(R^2\)) |
Check test_mode matches data; try different initial \(\alpha\) (0.3, 0.5, 0.7) |
Recovery too fast |
Decrease \(\alpha\) (stronger memory slows recovery) |
Long-time power-law not captured |
Increase n_history; verify \(\alpha\) < 1 |
MCMC convergence (R-hat > 1.1) |
Use NLSQ warm-start; increase num_warmup; check \(\alpha\) prior bounds |
Numerical instabilities (NaN) |
Check \(\tau_{\text{thix}} > 10^{-6}\); reduce dt or increase n_history for small \(\alpha\) |
Slow computation |
Use model.precompile(); reduce n_history if \(\alpha > 0.7\); consider MIKH if \(\alpha \approx 1\) |
Parameter Estimation Methods¶
Sequential Fitting Strategy¶
A sequential approach exploits the separation of timescales:
Stage 1: Flow Curve (Steady State)
From flow curve \(\sigma(\dot{\gamma})\), fit steady-state parameters (\(\alpha\) does not affect steady state):
from rheojax.models.fikh import FIKH
model = FIKH(alpha_structure=0.5) # α doesn't affect flow curve
# Fix elastic/hardening params, fit thixotropic
model.parameters.freeze(['G', 'C', 'gamma_dyn', 'eta', 'mu_p'])
model.fit(gamma_dot, sigma_ss, test_mode='flow_curve')
Stage 2: Startup Transients ( \(\alpha\) matters here)
From startup stress overshoot \(\sigma(t\); \(\dot{\gamma}_0\)), fit G and refine \(\alpha\):
# Unfreeze elastic parameters and α
model.parameters.unfreeze(['G', 'C', 'gamma_dyn', 'alpha_structure'])
model.fit(t_startup, sigma_startup, test_mode='startup')
Stage 3: Relaxation ( \(\alpha\) verification)
From stress relaxation, verify \(\alpha\) from power-law tail:
model.parameters.unfreeze(['eta', 'mu_p'])
model.fit(t_relax, sigma_relax, test_mode='relaxation')
Bayesian Inference with MCMC¶
For uncertainty quantification, use NumPyro NUTS with NLSQ warm-start:
# Stage 1: Point estimate
model.fit(data)
# Stage 2: Bayesian inference
result = model.fit_bayesian(
data,
num_warmup=1000,
num_samples=2000,
num_chains=4,
seed=42
)
# Check convergence
print(f"R-hat: {result.r_hat}") # Target: <1.01
print(f"ESS: {result.ess}") # Target: >400
Prior Selection for \(\alpha\) :
# Recommended: Beta distribution centered on expected α
# α ~ Beta(a, b) with mode at (a-1)/(a+b-2)
# For α expected around 0.6:
# α ~ Beta(3, 2) gives mode at 0.67, mean at 0.6
# Or use truncated normal:
# α ~ TruncatedNormal(0.5, 0.2, low=0.1, high=0.95)
Numerical Implementation¶
The Caputo fractional derivative is discretized using the L1 scheme:
Where b_k = (k+1)^(1-\(\alpha\)) - k^(1-\(\alpha\)).
L1 Scheme Details¶
The L1 scheme is a first-order accurate discretization of the Caputo derivative:
Error bounds:
where h = \(\Delta t\). Important: Lower \(\alpha\) requires finer time steps for same accuracy.
Coefficient computation (precomputed for efficiency):
def compute_l1_coefficients(alpha, n):
"""L1 scheme coefficients b_k = (k+1)^(1-α) - k^(1-α)"""
k = jnp.arange(n)
return jnp.power(k + 1, 1 - alpha) - jnp.power(k, 1 - alpha)
History Buffer Management¶
The FIKH model uses a fixed-window history buffer (short-memory truncation) rather than storing the entire history:
λ_history = [λ_{n-N+1}, ..., λ_{n-1}, λ_n] # Rolling window of N points
Recommended n_history Selection:
\(\alpha\) Range |
Recommended n_history |
Memory Usage |
Accuracy |
|---|---|---|---|
0.7 - 0.99 |
50-100 |
~400 bytes |
Good (fast convergence) |
0.4 - 0.7 |
100-500 |
~4 KB |
Good |
0.05 - 0.4 |
500-1000 |
~8 KB |
Adequate (strong memory) |
When to Increase n_history:
Long simulations (\(t \gg \tau_{\text{thix}}\))
Very small \(\alpha\) (< 0.3)
Accuracy-critical applications
Oscillatory protocols (LAOS)
Computational Considerations¶
Memory: O(N) history storage via fixed-window buffer
Cost: O(n_history) per step (vs O(\(N^2\)) for naive full-history convolution)
JIT Compilation: First call triggers ~1-5s compilation; subsequent calls fast
Precompilation (optional):
# Trigger JIT compilation before production runs
compile_time = model.precompile()
print(f"Compiled in {compile_time:.1f}s")
Usage Examples¶
Basic Usage¶
import numpy as np
from rheojax.models.fikh import FIKH
# Initialize model with fractional order
model = FIKH(alpha_structure=0.6, include_thermal=False)
# Set parameters
model.parameters.set_value("G", 1000.0)
model.parameters.set_value("sigma_y0", 20.0)
model.parameters.set_value("tau_thix", 50.0)
model.parameters.set_value("Gamma", 0.5)
Flow Curve¶
# Predict steady-state flow curve
gamma_dot = np.logspace(-2, 2, 50)
sigma = model.predict_flow_curve(gamma_dot)
# Note: Flow curve is independent of α (steady state)
Startup Shear¶
# Predict startup response (α affects overshoot shape)
t = np.linspace(0, 50, 500)
sigma_startup = model.predict_startup(t, gamma_dot=1.0, lambda_init=1.0)
# Compare different α values
for alpha in [0.3, 0.5, 0.7, 0.9]:
model_alpha = FIKH(alpha_structure=alpha)
sigma = model_alpha.predict_startup(t, gamma_dot=1.0)
# Lower α → broader overshoot, longer tail
Stress Relaxation¶
# Predict relaxation with Mittag-Leffler decay
t = np.linspace(0, 200, 500)
sigma_relax = model.predict_relaxation(t, sigma_0=100.0, lambda_init=0.5)
# Long-time tail follows power law: σ ~ t^(-α)
Creep with Delayed Yielding¶
# Predict creep under constant stress
t = np.linspace(0, 500, 500)
strain = model.predict_creep(t, sigma_applied=45.0, lambda_init=1.0)
# Delayed yielding: lower α → longer delay before avalanche
Comparing \(\alpha\) Effects¶
import numpy as np
import matplotlib.pyplot as plt
from rheojax.models.fikh import FIKH
t = np.linspace(0, 100, 500)
plt.figure(figsize=(10, 4))
for alpha in [0.3, 0.5, 0.7, 0.9]:
model = FIKH(alpha_structure=alpha, include_thermal=False)
model.parameters.set_value("tau_thix", 10.0)
model.parameters.set_value("G", 1000.0)
# Recovery at rest
result = model.predict_relaxation(t, sigma_0=50.0, lambda_init=0.2)
plt.plot(t, result, label=f'α = {alpha}')
plt.xlabel('Time [s]')
plt.ylabel('Stress [Pa]')
plt.legend()
plt.title('FIKH Relaxation: Effect of Fractional Order α')
Thermal Coupling¶
# FIKH with thermal effects
model = FIKH(include_thermal=True, alpha_structure=0.6)
model.parameters.set_value("E_a", 50000.0) # J/mol
model.parameters.set_value("E_y", 30000.0) # J/mol
model.parameters.set_value("T_ref", 300.0) # K
model.parameters.set_value("chi", 0.9) # Taylor-Quinney
model.parameters.set_value("h", 100.0) # Heat transfer
# Startup at different temperatures
for T_init in [280, 300, 320]:
sigma = model.predict_startup(t, gamma_dot=10.0, T_init=T_init)
Bayesian Fitting¶
from rheojax.models.fikh import FIKH
model = FIKH(alpha_structure=0.5, include_thermal=True)
# Point estimate first (critical for MCMC)
model.fit(t, stress_data, test_mode='startup')
# Bayesian inference
result = model.fit_bayesian(
t, stress_data,
num_warmup=1000,
num_samples=2000,
num_chains=4,
seed=42
)
# Credible intervals
intervals = model.get_credible_intervals(
result.posterior_samples,
credibility=0.95
)
Limiting Behavior¶
\(\alpha \to 1\) (Classical Limit):
Recovers exponential MIKH behavior
Mittag-Leffler \(E_1(-x) = \exp(-x)\)
Use standard MIKH for computational efficiency
\(\alpha \to 0\) (Strong Memory Limit):
Very slow power-law relaxation
Long “memory” of deformation history
Numerical challenges (need long history buffer)
Consider if material is truly “glassy” (SGR may be more appropriate)
Thermal Coupling Effects:
High \(E_a\): Strong temperature sensitivity
Low \(h\): Poor heat dissipation, thermal runaway risk
\(\chi \sim 0.9\): Most plastic work converts to heat
Relation to Other Models¶
Model |
Relationship to FIKH |
|---|---|
FIKH reduces to MIKH as \(\alpha \to 1\) (exponential kinetics) |
|
Multi-mode extension with N fractional modes |
|
Integer-order multi-mode; similar multi-timescale physics, different math |
|
Alternative for glassy systems; SGR uses trap depths, FIKH uses fractional order |
|
Fractional Maxwell |
FIKH = Fractional Maxwell + plasticity + thixotropy |
References¶
Fractional Calculus:
Numerical Methods:
Li, C. and Zeng, F. (2015). Numerical Methods for Fractional Calculus. CRC Press. https://doi.org/10.1201/b18503
Fractional Rheology:
Jaishankar, A. and McKinley, G. H. (2013). “Power-law rheology in the bulk and at the interface: quasi-properties and fractional constitutive equations.” Proc. R. Soc. A, 469(2149), 20120284. https://doi.org/10.1098/rspa.2012.0284
Jaishankar, A. and McKinley, G. H. (2014). “A fractional K-BKZ constitutive formulation for describing the nonlinear rheology of multiscale complex fluids.” J. Rheol., 58, 1751-1788. https://doi.org/10.1122/1.4892114
IKH Foundation:
Dimitriou, C. J. and McKinley, G. H. (2014). “A comprehensive constitutive
law for waxy crude oil: a thixotropic yield stress fluid.” Soft Matter,
10(35), 6619-6644.
DOI: 10.1039/C4SM00578C
PDF
Geri, M., Venkatesan, R., Sambath, K., and McKinley, G. H. (2017).
“Thermokinematic memory and the thixotropic elasto-viscoplasticity of
waxy crude oils.” J. Rheol., 61(3), 427-454.
DOI: 10.1122/1.4978259
PDF
Thixotropic Modeling:
de Souza Mendes, P. R. and Thompson, R. L. (2019). “Time-dependent yield stress materials.” Curr. Opin. Colloid Interface Sci., 43, 15-25. https://doi.org/10.1016/j.cocis.2019.01.018
Larson, R. G. and Wei, Y. (2019). “A review of thixotropy and its rheological modeling.” J. Rheol., 63(3), 477-501. https://doi.org/10.1122/1.5055031
See Also¶
Fractional Multi-Lambda IKH (FMLIKH) — Multi-mode fractional IKH for hierarchical structures
Maxwell-Isotropic-Kinematic Hardening (MIKH) — Classical IKH model (\(\alpha\) = 1 limit)
Multi-Lambda Isotropic-Kinematic Hardening (ML-IKH) — Integer-order multi-mode IKH
Soft Glassy Rheology (SGR) Models — Soft Glassy Rheology (alternative for aging systems)
Section 3: Advanced Topics (Weeks 7-12) — Advanced thixotropic modeling