Fractional Zener Solid-Liquid (Fractional)

Quick Reference

  • Use when: Solid-like behavior with equilibrium plateau and fractional relaxation tails

  • Parameters: 4 (Ge, \(c_{\alpha, \alpha, \tau}\))

  • Key equation: \(G(t) = G_e + c_\alpha t^{-\alpha} E_{1-\alpha,1}(-(t/\tau)^{1-\alpha})\)

  • Test modes: Oscillation, relaxation, creep

  • Material examples: Viscoelastic solids with finite equilibrium modulus and power-law relaxation

Fractional Calculus Fundamentals

This model uses fractional calculus for power-law viscoelastic behavior. For mathematical foundations—SpringPot element, Mittag-Leffler functions, physical meaning of fractional order \(\alpha\), and derivation from molecular theory—see:

/user_guide/fractional_viscoelasticity_reference

Notation Guide

Symbol

Units

Description

\(G_e\)

Pa

Equilibrium modulus (parallel spring, long-time plateau)

\(c_\alpha\)

Pa·s\(^{\alpha}\)

SpringPot constant (relaxation magnitude)

\(\alpha\)

dimensionless

Fractional order (0 < \(\alpha\) < 1, power-law character)

\(\tau\)

s

Relaxation time (characteristic timescale)

\(E_{1-\alpha,1}(z)\)

dimensionless

Two-parameter Mittag-Leffler function

Overview

Fractional Maxwell element in parallel with a spring to capture solid-like plateaus with fractional relaxation tails.

Physical Foundations

The Fractional Zener Solid-Liquid (FZSL) combines a fractional Maxwell arm with a parallel equilibrium spring:

Mechanical Configuration:

[Spring Ge] ---- parallel ---- [SpringPot (c_α, α) in series with relaxation τ]

Microstructural Interpretation:

  • Parallel spring (Ge): Permanent network providing equilibrium modulus (crosslinks, crystalline regions, entanglements)

  • Fractional Maxwell arm: Additional stiffness that relaxes via power-law dynamics. The SpringPot creates broad relaxation spectrum.

  • Solid behavior: Finite equilibrium modulus Ge (no flow)

  • Relaxation: Material relaxes from Ge + (high-freq contribution) to Ge

This model bridges the gap between FZSS (two elastic plateaus) and FMG (liquid-like). It’s useful when the material has a clear equilibrium modulus but shows power-law relaxation dynamics.

Governing Equations

Time domain (relaxation modulus):

\[ G(t) = G_e + c_\alpha t^{-\alpha} E_{1-\alpha,1}\left(-\left(\frac{t}{\tau}\right)^{1-\alpha}\right). \]

Frequency domain (complex modulus):

\[ G^{*}(\omega) = G_e + \frac{c_\alpha (i\omega)^{\alpha}}{1 + (i\omega\tau)^{1-\alpha}}. \]

Parameters

Parameters

Name

Symbol

Units

Bounds

Notes

Ge

\(G_e\)

Pa

[1e-3, 1e9]

Equilibrium modulus

c_alpha

\(c_\alpha\)

Pa·sα

[1e-3, 1e9]

SpringPot constant

alpha

\(\alpha\)

dimensionless

[0, 1]

Fractional order

tau

\(\tau\)

s

[1e-6, 1e+6]

Relaxation time

Validity and Assumptions

  • Linear viscoelastic assumption; strain amplitudes remain small.

  • Isothermal, time-invariant material parameters throughout the experiment.

  • Supported RheoJAX test modes: relaxation, creep, oscillation.

  • Fractional orders stay within (0, 1) to keep kernels causal and bounded.

Regimes and Behavior

  • Low-frequency limit recovers the equilibrium modulus \(G_e\).

  • Mid-band shows fractional dissipation with slope \(\alpha\).

  • High-frequency response approaches \(G_e + c_\alpha (i\omega)^{\alpha}\).

Limiting Behavior

  • \(\alpha \to 1\): classical Zener solid-liquid.

  • \(G_e \to 0\): fractional Maxwell gel.

  • \(c_\alpha \to 0\): pure elastic spring.

What You Can Learn

This section explains what insights you can extract from fitting the Fractional Zener Solid-Liquid model to your experimental data, emphasizing the dual-modulus solid structure with one solid springpot (\(\alpha\)) and one liquid springpot (1-\(\alpha\)).

Parameter Interpretation

Equilibrium Modulus (Ge):

The low-frequency plateau modulus, indicating the material’s long-term stiffness under sustained load. This arises from the parallel spring providing permanent network structure.

For graduate students: Ge relates to crosslink density via rubber elasticity theory: Ge ≈ \(\nu \cdot kB \cdot T where \nu\) is network strand density. For chemically crosslinked networks, Ge is temperature-independent; for physical networks (entanglements), Ge scales with T. For practitioners: Higher Ge means stiffer equilibrium behavior. Compare to target specifications for structural applications. If Ge → 0, material flows—consider FMG instead.

Fractional Order ( \(\alpha\) ):

Controls the breadth of relaxation spectrum and power-law decay character. This model uses a “solid” springpot (\(\alpha\)) paired with a “liquid” springpot (1-\(\alpha\)) in series.

  • \(\alpha\) → 0: Very broad spectrum, solid-like response dominates, nearly elastic at short times

  • \(\alpha\) → 0.5: Critical gel behavior, balanced solid-liquid character, maximum spectrum breadth

  • \(\alpha\) → 1: Narrow spectrum, approaches classical Zener with exponential relaxation

For graduate students: \(\alpha\) quantifies polydispersity in the relaxation time distribution. Lower \(\alpha\) indicates greater microstructural heterogeneity (filler dispersion, crosslink density variation, molecular weight distribution). For practitioners: Lower \(\alpha\) means relaxation spreads over more time decades. Critical for predicting long-term creep and stress relaxation.

SpringPot Constant ( \(c_{\alpha}\) ):

Sets the magnitude of the fractional dissipation contribution from the Maxwell arm. Units are Pa·s\(^{\alpha}\).

  • High \(c_{\alpha/Ge}\) ratio (> 5): Strong viscoelastic dissipation, large relaxation from high-frequency to Ge

  • Moderate \(c_{\alpha/Ge}\) ratio (1-5): Balanced elastic-dissipative response

  • Low \(c_{\alpha/Ge}\) ratio (< 1): Predominantly elastic response, small relaxation

For graduate students: \(c_{\alpha}\) represents the spectral strength of the relaxing modes. Higher \(c_{\alpha}\) indicates more energy stored in temporary (relaxing) structures. For practitioners: High \(c_{\alpha/Ge}\) means large difference between short-time and long-time stiffness—critical for impact vs. sustained loading.

Relaxation Time ( \(\tau\) ):

Characteristic timescale for the transition from high modulus (Ge + high-frequency contribution) to equilibrium modulus Ge.

For graduate students: \(\tau\) is temperature-dependent (WLF/Arrhenius), enabling time-temperature superposition. Unusual units (s\(^{\alpha}\)) arise from fractional calculus. For practitioners: Compare \(\tau\) to service timescales. If tservice << \(\tau\), use high-frequency modulus; if tservice >> \(\tau\), use Ge.

Material Classification

Material Classification from Fractional Zener SL Parameters

Parameter Range

Material Type

Typical Materials

Processing Implications

Ge > \(10^5 Pa, \alpha\) < 0.3

Stiff crosslinked solid

Vulcanized rubber, thermosets

Load-bearing, minimal creep

\(G_e \sim 10^3-10^4\) Pa, \(\alpha \sim 0.4-0.6\)

Soft viscoelastic solid

Gels, soft tissues, elastomers

Damping, vibration isolation

Ge < \(10^3 Pa, \alpha\) > 0.7

Weakly crosslinked network

Hydrogels, biopolymers

Requires careful handling, creep-prone

Fractional Order Impact on Spectrum

\(\alpha\) Range

Spectrum Breadth

Typical Materials

Decades Needed

0.1-0.3

Very broad, hierarchical

Nanocomposites, biological tissues

5+ decades

0.4-0.6

Moderate

Standard elastomers, gels

3-4 decades

0.7-0.9

Narrow, near-exponential

Homogeneous networks

2-3 decades

Diagnostic Indicators

  • Ge fits near lower bound: Material may be liquid-like (Ge → 0); consider Fractional Maxwell Gel (FMG) instead

  • \(\alpha\) hits bounds (0.05 or 0.95): Data may not support fractional behavior; try classical Zener for simpler interpretation

  • \(c_{\alpha/Ge}\) > 100: Extreme relaxation; verify data quality at short times and check for nonlinear effects

  • Poor fit at low frequencies: Equilibrium plateau Ge not reached; extend frequency range or measurement time

  • Systematic residual trends: Check for thermorheological complexity (frequency-dependent shift factors) or nonlinear viscoelasticity

Fitting Guidance

Recommended Data Collection:

  1. Frequency sweep (SAOS) or Stress relaxation: 4-5 decades

  2. Coverage: Ensure equilibrium plateau Ge is clearly visible at low \(\omega\)

  3. Test amplitude: Within LVR (< 5% strain or stress)

  4. Temperature: Constant ±0.1°C

Initialization Strategy:

# From frequency sweep G'(ω)
Ge_init = G'(ω → 0)  # Low-frequency plateau
c_alpha_init = magnitude in intermediate regime
tau_init = 1 / (crossover frequency)
alpha_init = slope of power-law region

# From stress relaxation G(t)
Ge_init = G(t → ∞)  # Equilibrium modulus
c_alpha_init = (G(t=0) - Ge_init) * tau_init**alpha_init
tau_init = inflection point time

Optimization Tips:

  • Verify equilibrium plateau \(G_e\) is reached (\(G' \to G_e\) at low \(\omega\))

  • Use log-weighted least squares

  • Constrain Ge > 0 (solid-like behavior required)

  • Check that \(\alpha\) is well-constrained (not at bounds)

Common Pitfalls:

  • Ge near zero: Material may be liquid-like; use FMG instead

  • Poor low-frequency fit: Equilibrium not reached; extend frequency range

  • \(\alpha\) near 1: Consider classical Zener for simpler interpretation

Troubleshooting Table:

Common Issues and Solutions

Issue

Likely Cause

Solution

Ge converges to lower bound

Liquid-like behavior

Switch to FMG or FML model

\(\alpha\) hits upper bound (0.95+)

Nearly exponential relaxation

Use classical Zener for clarity

\(c_{\alpha/Ge}\) > 100

Extreme relaxation or data quality

Check short-time data, verify LVR

Poor fit at \(\omega\) → 0

Equilibrium not reached

Extend frequency range or measurement time

High correlation Ge-\(c_{\alpha}\)

Insufficient frequency coverage

Need broader data spanning 4+ decades

Non-monotonic residuals

Multiple relaxation mechanisms

Consider GMM or add second mode

Fit diverges

Poor initial guess

Use hierarchical fitting from simpler models

Practical Applications

Quality Control:

The fractional order \(\alpha\) and relaxation time \(\tau\) provide sensitive quality metrics for batch consistency. Monitor these parameters over production runs:

  • Decreased \(\alpha\): Indicates increased polydispersity from contamination, degradation, or processing variations

  • Increased \(\tau\): May signal molecular weight increase from post-cure or aggregation

  • Decreased Ge: Loss of crosslink density from aging or incomplete cure

Material Development:

Use FZSL fitting to guide formulation:

  1. Filler optimization: Lower \(\alpha\) with increasing filler loading indicates filler-matrix interphase effects. Target \(\alpha\) > 0.6 for good dispersion.

  2. Crosslink density: Ge scales with crosslink density. Track Ge vs. cure time or temperature to optimize curing protocols.

  3. Polymer blending: Broad \(\alpha\) (< 0.4) suggests incompatibility or phase separation. Target \(\alpha\) > 0.5 for miscible blends.

Failure Prediction:

The FZSL model enables long-term performance prediction:

  • Creep compliance: Convert to J(t) via Laplace transform to predict dimensional changes under sustained load

  • Stress relaxation: Calculate bolt preload decay in gasketing applications

  • Lifetime estimation: Extrapolate to service timescales (10+ years) using time-temperature superposition

Design Guidelines:

For structural applications:

  • Short-term loading (t << \(\tau\)): Use instantaneous modulus G(0) = Ge + \(c_{\alpha \tau^(-\alpha)}\)

  • Long-term loading (t >> \(\tau\)): Use equilibrium modulus Ge

  • Cyclic loading (\(\omega \approx 1/\tau\)): Maximum energy dissipation, critical for damping applications

Example Calculations

Relaxation Modulus Prediction:

Given fitted parameters Ge = 1.0 MPa, \(c_{\alpha}\) = 0.5 MPa·s^0.5, \(\alpha = 0.5, \tau\) = 10 s:

import numpy as np
from rheojax.models import FractionalZenerSolidLiquid
from rheojax.core.jax_config import safe_import_jax

jax, jnp = safe_import_jax()

model = FractionalZenerSolidLiquid()
model.parameters.set_value('Ge', 1.0e6)  # Pa
model.parameters.set_value('c_alpha', 0.5e6)  # Pa·s^0.5
model.parameters.set_value('alpha', 0.5)
model.parameters.set_value('tau', 10.0)  # s

# Predict at specific time points
t = jnp.logspace(-2, 4, 100)  # 0.01 to 10,000 s
G_t = model.predict(t, test_mode='relaxation')

# Check limiting behavior
print(f"G(t=0.01 s) = {G_t[0]/1e6:.3f} MPa (near instantaneous)")
print(f"G(t=10,000 s) = {G_t[-1]/1e6:.3f} MPa (near equilibrium Ge)")

Complex Modulus Prediction:

# Predict frequency response
omega = jnp.logspace(-2, 2, 100)  # 0.01 to 100 rad/s
G_star = model.predict(omega, test_mode='oscillation')

# Separate storage and loss moduli
G_prime = jnp.real(G_star)
G_double_prime = jnp.imag(G_star)

# Find crossover frequency (G' = G")
crossover_idx = jnp.argmin(jnp.abs(G_prime - G_double_prime))
omega_crossover = omega[crossover_idx]
print(f"G'/G\" crossover at ω ≈ {omega_crossover:.3f} rad/s")
print(f"Compare to τ = {1/omega_crossover:.3f} s")

Parameter Sensitivity Analysis:

# Study effect of α on spectrum breadth
alphas = [0.3, 0.5, 0.7, 0.9]
for alpha_val in alphas:
    model.parameters.set_value('alpha', alpha_val)
    G_star = model.predict(omega, test_mode='oscillation')
    G_prime = jnp.real(G_star)

    # Calculate decades of dispersion (width where G' varies significantly)
    G_range = jnp.where((G_prime > 1.1*Ge) & (G_prime < 0.9*G_max))
    decades = jnp.log10(omega[G_range].max() / omega[G_range].min())
    print(f"α = {alpha_val}: spectrum spans {decades:.1f} decades")

See Also

API References

  • Module: rheojax.models

  • Class: rheojax.models.FractionalZenerSolidLiquid

Usage

Basic Fitting

from rheojax.models import FractionalZenerSolidLiquid
from rheojax.core.data import RheoData
from rheojax.core.jax_config import safe_import_jax
import numpy as np

jax, jnp = safe_import_jax()

# Load experimental data (frequency sweep)
omega = np.logspace(-2, 2, 50)  # 0.01 to 100 rad/s
G_prime = ...  # Measured storage modulus
G_double_prime = ...  # Measured loss modulus
G_star = G_prime + 1j * G_double_prime

# Create RheoData object
data = RheoData(x=omega, y=G_star, test_mode='oscillation')

# Initialize and fit model
model = FractionalZenerSolidLiquid()
result = model.fit(data)

# Access fitted parameters
print(f"Ge = {model.parameters.get_value('Ge'):.2e} Pa")
print(f"c_alpha = {model.parameters.get_value('c_alpha'):.2e} Pa·s^α")
print(f"alpha = {model.parameters.get_value('alpha'):.3f}")
print(f"tau = {model.parameters.get_value('tau'):.2e} s")
print(f"R² = {result.r_squared:.4f}")

Bayesian Inference

# Bayesian inference with uncertainty quantification
from rheojax.pipeline.bayesian import BayesianPipeline

# Perform NLSQ fit first (warm-start for MCMC)
model.fit(data)

# Bayesian inference with default 4 chains
result = model.fit_bayesian(
    data,
    num_warmup=1000,
    num_samples=2000,
    num_chains=4,
    seed=42  # For reproducibility
)

# Extract posterior samples
samples = result.posterior_samples

# Get credible intervals
intervals = model.get_credible_intervals(samples, credibility=0.95)
for param, (lower, upper) in intervals.items():
    mean = samples[param].mean()
    print(f"{param}: {mean:.2e} [{lower:.2e}, {upper:.2e}]")

# Check convergence diagnostics
import arviz as az
inference_data = az.from_numpyro(result)
print(az.summary(inference_data, hdi_prob=0.95))

# Visualize posterior distributions
az.plot_pair(inference_data, divergences=True)

Advanced Usage with Pipeline

from rheojax.pipeline import Pipeline

# Complete workflow: load, fit, plot, save
pipeline = (Pipeline()
    .load('experimental_data.csv', x_col='omega', y_col='G_star')
    .fit('fractional_zener_sl')
    .plot(style='publication')
    .save('results.hdf5'))

# Access fitted model
model = pipeline.model
print(f"Equilibrium modulus: {model.parameters.get_value('Ge'):.2e} Pa")

Time-Temperature Superposition

from rheojax.transforms import Mastercurve

# Create master curve from multiple temperature datasets
datasets = [
    {'omega': omega_30C, 'G_star': G_star_30C, 'T': 30},
    {'omega': omega_50C, 'G_star': G_star_50C, 'T': 50},
    {'omega': omega_70C, 'G_star': G_star_70C, 'T': 70},
]

mc = Mastercurve(reference_temp=50, auto_shift=True)
master_curve, shift_factors = mc.transform(datasets)

# Fit FZSL to master curve
model = FractionalZenerSolidLiquid()
model.fit(master_curve.x, master_curve.y, test_mode='oscillation')

# Predict at different temperatures using shift factors
omega_pred = np.logspace(-4, 4, 100)
for T, aT in shift_factors.items():
    omega_shifted = omega_pred * aT
    G_star_T = model.predict(omega_shifted, test_mode='oscillation')
    print(f"T = {T}°C: shift factor aT = {aT:.2e}")

See also

References