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: FIKHBase

Fractional 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. See FIKHBase for 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.

Parameters:
  • gamma_dot (numpy.typing.ArrayLike) – Shear rate array.

  • T (float | None) – Temperature (if thermal enabled).

Return type:

numpy.typing.ArrayLike

Returns:

Stress array.

predict_startup(t, gamma_dot=1.0, T_init=None)[source]

Predict startup shear response.

Parameters:
  • t (numpy.typing.ArrayLike) – Time array.

  • gamma_dot (float) – Constant shear rate.

  • T_init (float | None) – Initial temperature.

Return type:

numpy.typing.ArrayLike

Returns:

Stress vs time.

predict_relaxation(t, sigma_0=100.0, T_init=None)[source]

Predict stress relaxation.

Parameters:
  • t (numpy.typing.ArrayLike) – Time array.

  • sigma_0 (float) – Initial stress.

  • T_init (float | None) – Initial temperature.

Return type:

numpy.typing.ArrayLike

Returns:

Stress vs time.

predict_creep(t, sigma_applied=50.0, T_init=None)[source]

Predict creep response.

Parameters:
  • t (numpy.typing.ArrayLike) – Time array.

  • sigma_applied (float) – Applied constant stress.

  • T_init (float | None) – Initial temperature.

Return type:

numpy.typing.ArrayLike

Returns:

Strain vs time.

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().

Parameters:
  • omega (numpy.typing.ArrayLike) – Angular frequency array.

  • gamma_0 (float) – Strain amplitude (should be small).

  • n_cycles (int) – Number of cycles to simulate.

Return type:

Array

Returns:

Complex modulus G* = G’ + i·G’’ for each frequency.

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_dt grid (same as the fit path) so fit and predict stay in the linearization regime of the explicit return mapping. If strain is omitted, a clean sinusoid gamma_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 if strain is not given.

  • omega (float) – Angular frequency used if strain is not given.

  • T_init (float | None) – Initial temperature (thermal models only).

  • strain (Optional[numpy.typing.ArrayLike]) – Optional measured strain array aligned with t. When supplied, gamma_0 / omega are ignored for the simulation and the measured trace drives the return mapping.

Return type:

dict[str, Array]

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:
  • X (numpy.typing.ArrayLike) – Input data.

  • params (Union[numpy.typing.ArrayLike, dict[str, Any]]) – Parameter array or dictionary.

  • test_mode (str | None) – Protocol (uses stored _test_mode if None).

  • **kwargs – Protocol-specific arguments (e.g., strain, sigma_0).

Return type:

Array

Returns:

Predicted values.

get_limiting_behavior()[source]

Get limiting behavior diagnostics.

Return type:

dict[str, Any]

Returns:

Dictionary with limiting cases and expected behavior.

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:
  • test_mode (str) – Accepted for parent compatibility (unused).

  • X – Accepted for parent compatibility (unused).

  • y – Accepted for parent compatibility (unused).

  • n_points (int) – Number of time points for dummy data.

  • verbose (bool) – Print compilation time if True.

Return type:

float

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)
__repr__()[source]

String representation.

Return type:

str

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:

  1. Maxwell viscoelasticity: Stress relaxation via \(\eta\) (Maxwell viscosity)

  2. Kinematic hardening: Backstress evolution (Armstrong-Frederick type)

  3. Fractional thixotropy: Power-law memory via Caputo derivative of \(\lambda\)

  4. 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:

  1. Scott Blair (1940s): Introduced fractional elements for viscoelasticity

  2. Caputo (1967): Developed the Caputo derivative with physical initial conditions

  3. Bagley & Torvik (1983): Fractional derivatives in polymer viscoelasticity

  4. 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:

\[D_t^\alpha f(t) = \frac{1}{\Gamma(1-\alpha)} \int_0^t \frac{f'(s)}{(t-s)^\alpha} \, ds\]

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:

\[E_\alpha(z) = \sum_{k=0}^{\infty} \frac{z^k}{\Gamma(\alpha k + 1)}\]

For the fractional structure equation D\(^{\alpha \lambda = -(\lambda-\lambda_eq)/\tau}\), the solution is:

\[\lambda(t) = \lambda_{eq} - (\lambda_{eq} - \lambda_0) E_\alpha\left(-\left(\frac{t}{\tau}\right)^\alpha\right)\]

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:

  1. Frame invariance: Constitutive equations remain objective

  2. Second law compliance: Dissipation inequality satisfied

  3. 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:

\[\frac{d\sigma}{dt} = G(\dot{\gamma} - \dot{\gamma}^p) - \frac{G}{\eta}\sigma\]
  • 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):

\[\frac{dA}{dt} = \dot{\gamma}^p - q|A|^{m-1}A|\dot{\gamma}^p|\]

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:

\[A_{ss} = \frac{1}{q} \cdot \text{sign}(\dot{\gamma}^p)\]

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:

\[D_t^\alpha \lambda = \frac{1-\lambda}{\tau_{thix}} - \Gamma \lambda |\dot{\gamma}^p|\]

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:

\[\sigma_y(\lambda, T) = (\sigma_{y0} + \Delta\sigma_y \cdot \lambda^{m_y}) \exp\left(\frac{E_y}{R}\left(\frac{1}{T} - \frac{1}{T_{ref}}\right)\right)\]

Arrhenius viscosity:

\[\eta(T) = \eta_{ref} \exp\left(\frac{E_a}{R}\left(\frac{1}{T} - \frac{1}{T_{ref}}\right)\right)\]

Temperature evolution:

\[\rho c_p \dot{T} = \chi \sigma \dot{\gamma}^p - h(T - T_{env})\]

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:

\[\sigma_{total} = \sigma + \eta_{\infty} \dot{\gamma}\]

Total stress = elasto-plastic contribution + viscous background.

Yield condition:

\[f = |\xi| - \sigma_y(\lambda, T) \leq 0 \quad \text{where} \quad \xi = \sigma - C \cdot A\]

Material yields when relative stress \(|\xi|\) exceeds current yield stress.

Plastic flow rule (Perzyna regularization):

\[\dot{\gamma}^p = \frac{\langle f \rangle}{\mu_p} \cdot \text{sign}(\xi)\]

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}\) ):

\[\Lambda_\alpha = \dot{\gamma} \cdot \tau_{thix}^{1/\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):

\[De = \frac{\eta/G}{t_{exp}}\]

Ratio of Maxwell relaxation time to experimental time scale.

Memory Number (Me):

\[Me = \frac{t_{exp}}{\tau_{thix}} \cdot (t_{exp}/\tau_{thix})^{1-\alpha}\]

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:

\[\frac{d\sigma}{dt} = G(\dot{\gamma} - \dot{\gamma}^p) - \frac{G}{\eta}\sigma\]

Backstress evolution:

\[\frac{dA}{dt} = \dot{\gamma}^p - q|A|^{m-1}A|\dot{\gamma}^p|\]

Fractional structure evolution:

\[D_t^\alpha \lambda = \frac{1-\lambda}{\tau_{thix}} - \Gamma\lambda|\dot{\gamma}^p|\]

Plastic flow rate:

\[\dot{\gamma}^p = \frac{\langle |\sigma - C \cdot A| - \sigma_y(\lambda) \rangle}{\mu_p} \cdot \text{sign}(\sigma - C \cdot A)\]

Temperature evolution (if thermal):

\[\rho c_p \frac{dT}{dt} = \chi \sigma \dot{\gamma}^p - h(T - T_{env})\]

Protocol Equations

At steady state with constant \(\dot{\gamma}\), the Caputo derivative of a constant is zero:

\[0 = \frac{1-\lambda_{ss}}{\tau_{thix}} - \Gamma \lambda_{ss} |\dot{\gamma}|\]

Equilibrium structure:

\[\lambda_{ss}(\dot{\gamma}) = \frac{1}{1 + \Gamma \tau_{thix} |\dot{\gamma}|}\]

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:

\[\lambda(t) \approx \lambda_{ss} + (\lambda_0 - \lambda_{ss}) E_\alpha\left(-\left(\frac{t}{\tau_{eff}}\right)^\alpha\right)\]

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:

\[D_t^\alpha \lambda = \frac{1-\lambda}{\tau_{thix}}\]

Solution:

\[\lambda(t) = 1 - (1-\lambda_0) E_\alpha\left(-\left(\frac{t}{\tau_{thix}}\right)^\alpha\right)\]

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:

\[t_d \sim \tau_{thix} \left(\frac{\sigma_y(1) - \sigma_0}{\sigma_0}\right)^{1/\alpha}\]

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:

\[G^*(\omega) = G_0 \frac{(i\omega\tau)^\alpha}{1 + (i\omega\tau)^\alpha}\]

Storage modulus:

\[G'(\omega) = G_0 \frac{(\omega\tau)^{2\alpha} + (\omega\tau)^\alpha \cos(\pi\alpha/2)}{1 + 2(\omega\tau)^\alpha \cos(\pi\alpha/2) + (\omega\tau)^{2\alpha}}\]

Loss modulus:

\[G''(\omega) = G_0 \frac{(\omega\tau)^\alpha \sin(\pi\alpha/2)}{1 + 2(\omega\tau)^\alpha \cos(\pi\alpha/2) + (\omega\tau)^{2\alpha}}\]

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

Material Classification from FIKH Parameters

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

G

1000

(0.1, \(10^9\))

Pa

Shear modulus

eta

\(10^6\)

(\(10^{-3}\), \(10^{12}\))

Pa·s

Maxwell viscosity (\(\tau = \eta/G\))

C

500

(0, \(10^9\))

Pa

Kinematic hardening modulus

gamma_dyn

1.0

(0, \(10^4\))

Dynamic recovery parameter

m

1.0

(0.5, 3)

AF recovery exponent

sigma_y0

10

(0, \(10^9\))

Pa

Minimal yield stress (destructured)

delta_sigma_y

50

(0, \(10^9\))

Pa

Structural yield stress contribution

tau_thix

1.0

(\(10^{-6}\), \(10^{12}\))

s

Thixotropic rebuilding time

Gamma

0.5

(0, \(10^4\))

Structural breakdown coefficient

alpha_structure

0.5

(0.0, 1.0)

Fractional order for structure (practical range: 0.05–0.99; avoid degenerate limits α→0 and α→1)

eta_inf

0.1

(0, \(10^9\))

Pa·s

High-shear (solvent) viscosity

mu_p

\(10 \times 10^{-3}\)

(10\(^{-9, 10^3}\))

Pa·s

Plastic viscosity (Perzyna)

Parameter

Default

Bounds

Units

Description

T_ref

298.15

(200, 500)

K

Reference temperature

E_a

50000

(0, \(2 \times 10^5\))

J/mol

Viscosity activation energy

E_y

30000

(0, \(2 \times 10^5\))

J/mol

Yield stress activation energy

m_y

1.0

(0.5, 2)

Structure exponent for yield

rho_cp

\(4 \times 10^6\)

(\(10^5, 10^8\))

J/(\(m^3 \cdot K\))

Volumetric heat capacity

chi

0.9

(0, 1)

Taylor-Quinney coefficient

h

100

(0, \(10^6\))

W/(\(m^2 \cdot K\))

Heat transfer coefficient

T_env

298.15

(200, 500)

K

Environmental temperature

Parameter

Default

Bounds

Units

Description

Q_iso

0

(0, \(10^9\))

Pa

Isotropic hardening saturation

b_iso

1.0

(0, 100)

Isotropic hardening rate

Fitting Guidance

Initialization Strategy

  1. Estimate \(\alpha\) from Cole-Cole: Fit frequency sweep, measure depression angle \(\theta\), compute \(\alpha = 1 - 2\theta/\pi\)

  2. Flow curve first: Fit \(\sigma_{y0}, \Delta\sigma_y, \tau_{\text{thix}}, \Gamma, \eta_\infty\) from steady-state data

  3. Startup second: Fix flow curve params, fit \(G\), \(C\), \(\gamma_{\text{dyn}}\) from transient

  4. 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

flow_curve

Steady-state parameters (\(\sigma_{y0}, \Delta\sigma_y, \eta_\infty\))

startup

Elasticity (\(G\)), hardening (\(C\), \(\gamma_{\text{dyn}}\)), transient \(\alpha\) effects

relaxation

Maxwell viscosity (\(\eta\)), \(\alpha\) verification from power-law tail

creep

Combined viscoelastic-plastic, delayed yielding (\(\alpha-dependent\))

oscillation

Cole-Cole depression (\(\alpha\)), crossover frequency

laos

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:

\[D_t^\alpha \lambda_n \approx \frac{1}{\Gamma(2-\alpha) \Delta t^\alpha} \sum_{k=0}^{n-1} b_k (\lambda_{n-k} - \lambda_{n-k-1})\]

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:

\[\|D^{\alpha}\lambda - D^{\alpha}_h\lambda\| \leq C \cdot h^{2-\alpha}\]

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

Maxwell-Isotropic-Kinematic Hardening (MIKH)

FIKH reduces to MIKH as \(\alpha \to 1\) (exponential kinetics)

Fractional Multi-Lambda IKH (FMLIKH)

Multi-mode extension with N fractional modes

Multi-Lambda Isotropic-Kinematic Hardening (ML-IKH)

Integer-order multi-mode; similar multi-timescale physics, different math

Soft Glassy Rheology (SGR) Models

Alternative for glassy systems; SGR uses trap depths, FIKH uses fractional order

Fractional Maxwell

FIKH = Fractional Maxwell + plasticity + thixotropy

References

Fractional Calculus:

Numerical Methods:

Fractional Rheology:

IKH Foundation:

Thixotropic Modeling:

See Also