Sequence of Physical Processes (SPP)

Time-Domain LAOS Analysis Without Fourier Transform Limitations

Overview

The Sequence of Physical Processes (SPP) framework, introduced by Rogers et al. (2011), provides a fundamentally different approach to Large Amplitude Oscillatory Shear (LAOS) analysis. Unlike Fourier/Chebyshev decomposition methods, SPP operates entirely in the time domain, directly extracting transient elastic modulus and dynamic viscosity without the need for harmonic decomposition.

Key Insight

SPP reveals the instantaneous material physics at each point in the oscillatory cycle, making it particularly powerful for understanding yield-stress behavior, thixotropy, and other transient nonlinear phenomena. The approach views stress waveforms as representing a sequence of physical processes rather than a superposition of harmonics.

The foundational principle of SPP is that soft materials under LAOS undergo discrete physical processes in sequence: (i) elastic extension, (ii) yielding, (iii) flow, and (iv) reformation. This provides an intuitively simpler interpretation while removing the problem of infinite series encountered in Fourier transformation.

Tip

Rogers-parity defaults (RheoJAX)

Unless otherwise specified, RheoJAX SPP components use MATLAB/Rogers-aligned defaults: n_harmonics=39 (odd), step_size=8, num_mode=2 (periodic/looped), and wrapped strain-rate inference when rate is absent.

Current Defaults

Rogers-parity defaults (RheoJAX)

Parameter

Default

Notes

n_harmonics

39 (odd)

Matches SPPplus v2.1 parity

step_size

8

8-point 4th-order stencil

num_mode

2

Periodic/looped differentiation

wrap_strain_rate

True

Infers γ. with periodic wrap when rate missing

yield_tolerance

0.02

Static/dynamic yield detection tolerance

When to Use SPP

SPP is ideal for:

  • Yield-stress LAOS: Directly identifies yielding transitions within each cycle

  • Weak thixotropy: Tracks structural evolution without assuming steady-state

  • Phase transitions: Detects solid-liquid transitions during oscillation

  • Physical interpretation: Maps response to physical processes (cage modulus, flow)

  • Single-amplitude experiments: Extract static/dynamic yield stresses, cage modulus, and flow behavior

SPP complements (rather than replaces) Fourier methods for:

  • Broadband frequency characterization

  • Standard nonlinear parameters (e3/e1, v3/v1)

  • Comparison with literature using harmonic ratios

Theoretical Foundations

The SPP Framework

Traditional LAOS analysis decomposes stress into Fourier harmonics:

\[\sigma(t) = \sum_{n=\text{odd}} \left[ G'_n \sin(n\omega t) + G''_n \cos(n\omega t) \right]\]

This whole-waveform approach creates a potentially infinite number of hard-to-interpret harmonics, often generated by combinations of many distinct physical processes. The dynamic moduli \(G'\) and \(G''\) are not uniquely defined when the strain amplitude is sufficiently large to cause a nonlinear, non-sinusoidal stress response.

SPP instead views the stress response as representing a sequence of physical processes, with each process having distinct characteristics that can be independently analyzed:

  1. Elastic extension of microstructural cages

  2. Static yielding when cages break

  3. Viscous flow following the flow curve

  4. Cage reformation when instantaneous shear rate approaches zero

This approach provides clear quantifiable results while simultaneously removing the problem of attempting to understand a potential infinity of experimental values.

The Four-Step Yielding Sequence

For yield-stress materials (colloidal glasses, gels, pastes), SPP reveals a characteristic four-step sequence within each oscillatory cycle:

Four-Step Yielding Sequence

The four-step yielding sequence within each LAOS cycle:

  1. Elastic extension (1→2): Stress increases linearly with strain

  2. Static yield (point 2): Maximum stress before cage rupture

  3. Viscous flow (2→3→4): Power-law flow following the steady-state flow curve

  4. Cage reformation (point 4): Stress at zero rate when cages reform

Adapted from Rogers et al. (2011).

Step 1: Elastic Extension (1→2)

Beginning at zero stress, an increase in strain causes the microstructural cage to extend in a linear elastic fashion. The cage represents the effective constraint formed by nearest neighbors (colloidal particles, polymer entanglements, etc.). During this phase:

  • Stress increases linearly with strain

  • The slope represents the apparent cage modulus Gcage

  • Material behaves as an elastic solid

Step 2: Static Yielding (Point 2)

This proceeds until the cages are strained beyond their yield strains, whereupon the system begins to flow. Static yielding is associated with:

  • The “bump” or overshoot immediately following the linear stress buildup

  • The static yield stress σy,static: maximum stress before cage rupture

  • The static yield strain γy: strain at which cages break

Step 3: Viscous Flow (2→3→4)

After yielding, the material follows the steady-state flow curve according to the instantaneous shear rate. The stress response:

  • Exhibits power-law behavior: σ = K γ.n

  • Follows the same flow curve as steady-shear experiments

  • Continues until the instantaneous shear rate approaches zero

Step 4: Cage Reformation (Point 4)

When the instantaneous shear rate momentarily becomes zero at the strain extrema:

  • Cages instantaneously reform

  • The dynamic yield stress σy,dynamic: stress at zero rate (cage reformation point)

  • The straining-yielding-flowing-reformation process begins again in the opposite direction

Key Physical Parameters

Cage Modulus (Gcage)

The cage modulus represents the instantaneous elastic stiffness when strain rate is zero (maximum strain). It is defined as:

\[G_{\text{cage}} \equiv \left. \frac{d\sigma}{d\gamma} \right|_{\sigma=0}\]

This captures the elastic “cage” formed by microstructure at maximum deformation:

  • Constant across amplitudes: Unlike \(G'\), Gcage remains constant even at large amplitudes where \(G'\) decreases by more than a decade

  • State-dependent: Solid-state cages are stronger than soft-state cages

  • Recovers after breaking: Once broken, cages reform with the soft-state modulus

In the small phase angle, small-amplitude limit, the cage modulus reduces to the storage modulus:

\[\lim_{\delta, \gamma_0 \to 0} G_{\text{cage}} = \lim_{\delta, \gamma_0 \to 0} G'\]

Static Yield Stress (σy,static)

The static yield stress is the stress that must be overcome to make a material flow. It is extracted at the strain reversal point (γ = γ0, γ. = 0):

\[\sigma_{y,\text{static}} = \sigma(t)\big|_{\gamma=\pm\gamma_0}\]

This represents the maximum stress the material sustains before yielding and is directly comparable to yield stress from steady shear or stress growth tests.

Dynamic Yield Stress (σy,dynamic)

The dynamic yield stress is the stress below which the material ceases flowing. It is obtained at maximum strain rate (γ = 0, γ. = γ.0):

\[\sigma_{y,\text{dynamic}} = \sigma(t)\big|_{\dot{\gamma}=\pm\dot{\gamma}_0}\]

Key relationships between yield stresses:

  • Static and dynamic yield stresses have the same rate-dependence (power-law with identical index ~0.2 for typical soft glassy materials)

  • In the large-amplitude limit: σy,static ≈ 2.75 × σy,dynamic

  • Both depend on the strain-rate amplitude: σy ∝ γ00.2

Phase Without Fourier

SPP defines a time-domain phase δt without Fourier decomposition:

\[\delta_t(t) = \arctan\left( \frac{G''_t(t)}{G'_t(t)} \right)\]

This phase angle evolves continuously through the cycle:

  • δt → 0|deg|: Purely elastic response (solid-like)

  • δt → 90|deg|: Purely viscous response (liquid-like)

  • Transition regions reveal yielding and recovery

Power-Law Flow Analysis

For yielded materials exhibiting power-law flow, SPP extracts:

\[\sigma = K |\dot{\gamma}|^n \text{sign}(\dot{\gamma})\]

where K is the consistency and n is the flow index. This is evaluated in the flowing portions of each cycle where γ ≈ 0 (maximum strain rate).

Critical insight: The post-yielding oscillatory stress response follows the same flow curve as steady-shear experiments, providing a direct link between LAOS and steady-state rheology.

Mathematical Formulation

Frenet-Serret Frame Approach

The later SPP formulation (Rogers 2012) uses differential geometry on the 3D response trajectory r = [γ, γ./ω, σ] to extract instantaneous moduli:

\[G'_t = -\frac{(\vec{r}' \times \vec{r}'')_\gamma}{(\vec{r}' \times \vec{r}'')_\sigma}, \qquad G''_t = -\frac{(\vec{r}' \times \vec{r}'')_{\dot{\gamma}/\omega}}{(\vec{r}' \times \vec{r}'')_\sigma}\]

where r’ and r’’ are the first and second derivatives of the trajectory with respect to the arc-length parameter.

The stress decomposition becomes:

\[\sigma(t) = G'_t(t) \gamma(t) + \frac{G''_t(t)}{\omega} \dot{\gamma}(t) + G^d_t(t)\]

where Gdt is the dissipative modulus representing irreversible energy loss.

Binormal Vector Decomposition

The instantaneous moduli are extracted from the binormal vector components of the Frenet-Serret frame:

\[\vec{B} = \vec{T} \times \vec{N}\]

where T is the unit tangent and N is the principal normal. The moduli are:

\[G'_t = -\frac{B_\gamma}{B_\sigma}, \qquad G''_t = -\frac{B_{\dot{\gamma}/\omega}}{B_\sigma}\]

This formulation provides a robust numerical method for extracting instantaneous moduli from experimental LAOS data.

Complete Stress Reconstruction (Rogers 2017)

Rogers (2017) established that three, not two, time-dependent nonlinear viscoelastic functions are required to fully describe any LAOS response:

\[\sigma(t) = G'_t(t)[\gamma(t) - \gamma_{eq}(t)] + \frac{G''_t(t)}{\omega}\dot{\gamma}(t) + \sigma_y(t)\]

where:

  • \(G'_t(t)\) — instantaneous storage modulus

  • \(G''_t(t)\) — instantaneous loss modulus

  • \(\gamma_{eq}(t)\) — equilibrium strain position (can shift during deformation)

  • \(\sigma_y(t)\) — yield stress term (zero-rate stress intercept)

The third term, \(\sigma_y(t) - G'_t(t)\gamma_{eq}(t)\), represents the displacement of the osculating plane and accounts for:

  • Yield stresses: Stress offsets not captured by moduli alone

  • Shifting equilibria: The zero-elastic-extension point can move during deformation

  • Non-Newtonian flow: Deviation from simple viscoelastic behavior

Lab Frame vs. Material Frame

A key insight from Rogers (2017) is distinguishing between:

  • Lab frame strain: \(\gamma(t)\) — measured from the rheometer

  • Material frame strain: \(\gamma_{mat}(t) = \gamma(t) - \gamma_{eq}(t)\) — felt by the material

For linear viscoelastic materials, \(\gamma_{eq} = 0\) everywhere.

For generalized Newtonian fluids, \(\gamma_{eq}(t) = \gamma(t)\), ensuring zero elastic stress at all times (purely viscous).

For yield-stress materials, \(\gamma_{eq}\) shifts during yielding:

  • Before yield: \(\gamma_{eq} = 0\)

  • After yield: \(\gamma_{eq} \to \pm(\gamma_0 - \gamma_y)\)

  • The material experiences plastic deformation in its own reference frame

Rates of Change (Stiffening/Softening)

Rogers (2017) provides explicit equations for the rates at which moduli change:

\[\dot{G}'_t = \tau ||\dot{\mathbf{A}}|| \left( \frac{N_\gamma}{B_\sigma} - \frac{B_\gamma N_\sigma}{B_\sigma^2} \right)\]
\[\dot{G}''_t = \tau ||\dot{\mathbf{A}}|| \left( \frac{N_{\dot{\gamma}/\omega}}{B_\sigma} - \frac{B_{\dot{\gamma}/\omega} N_\sigma}{B_\sigma^2} \right)\]

where \(\tau\) is the torsion of the response trajectory and \(N_\gamma\), \(N_{\dot{\gamma}/\omega}\), \(N_\sigma\) are components of the principal normal.

Physical interpretation:

  • \(\dot{G}'_t > 0\): Stiffening (increasing elasticity)

  • \(\dot{G}'_t < 0\): Softening (decreasing elasticity)

  • \(\dot{G}''_t > 0\): Thickening (increasing viscosity)

  • \(\dot{G}''_t < 0\): Thinning (decreasing viscosity)

Critical insight: In the linear regime where trajectories are planar, torsion \(\tau = 0\) everywhere, making both rate derivatives zero. Nonzero torsion indicates nonlinear behavior.

Time-Domain Cole-Cole Plots

SPP enables dynamic Cole-Cole analysis by plotting \(G''_t(t)\) vs \(G'_t(t)\) parametrically through the oscillation cycle:

  • Linear regime: Collapses to a single point \((G', G'')\)

  • Nonlinear regime: Traces a trajectory showing material evolution

Trajectory interpretation (from Rogers 2017):

Position/Motion

Interpretation

\(G''_t = 0\)

Purely elastic

\(G'_t = 0\)

Purely viscous

\(G''_t > G'_t\)

Predominantly viscous

\(G'_t > G''_t\)

Predominantly elastic

Crossing \(G'_t = G''_t\) line

Fluidization or reformation transition

Application Scope

Yield-Stress LAOS

SPP excels at characterizing yield-stress materials under LAOS:

  1. Pre-yield: High Gcage, low δt (elastic solid)

  2. Yielding: Rapid drop in Gcage, increasing δt

  3. Post-yield: Power-law flow, δt → 90|deg|

  4. Recovery: Gcage rebuilds during strain reversal

This provides direct insight into yielding dynamics inaccessible to Fourier methods.

Soft Glassy Materials

SPP is particularly well-suited for soft glassy materials where the cage model applies:

  • Colloidal glasses: Star polymers, hard/soft spheres

  • Microgel pastes: Concentrated suspensions above jamming

  • Emulsions and foams: Droplet/bubble cages

  • Polymer gels: Entanglement networks

For these systems, the cage modulus directly measures the strength of microstructural caging, and the yield stresses quantify the breaking and reformation of cages.

Weak Thixotropy

For weakly thixotropic materials (structure recovers partially between cycles):

  • Gcage shows cycle-to-cycle evolution

  • Static yield stress may drift over many cycles

  • SPP tracks this evolution without assuming steady-state

Note

Scope limitation: SPP is best for weak thixotropy where structure partially equilibrates within each cycle. For strong thixotropy (structure changes dramatically over cycles), time-resolved rheology or stepped protocols may be more appropriate.

Rule of thumb: SPP works well when the structural relaxation time τs is longer than the oscillation period (τs > 2|pi|/ω).

Phase Transitions

SPP can detect phase transitions within the oscillatory cycle:

  • Solid |rarr| Liquid: δt increases sharply at yield

  • Liquid |rarr| Solid: δt decreases during recovery/gelation

  • Multiple transitions: Complex materials may show re-entrant behavior

Practical Implementation

Basic SPP Analysis

from rheojax.transforms import SPPDecomposer
from rheojax.io.readers import auto_read

# Load LAOS data
data = auto_read("laos_data.csv")

# Apply SPP decomposition
decomposer = SPPDecomposer(
    omega=1.0,              # Angular frequency (rad/s)
    gamma_0=1.0,            # Strain amplitude
    n_harmonics=39,         # Number of harmonics (Rogers default)
    use_numerical_method=False,
    step_size=8,            # Finite-difference step
)

result = decomposer.transform(data)
spp_results = decomposer.get_results()

# Access key SPP quantities
print(f"Cage modulus: {spp_results['G_cage']:.1f} Pa")
print(f"Static yield stress: {spp_results['sigma_sy']:.1f} Pa")
print(f"Dynamic yield stress: {spp_results['sigma_dy']:.1f} Pa")
print(f"I3/I1 ratio: {spp_results['I3_I1_ratio']:.4f}")

Cycle Selection

SPP analysis requires selecting appropriate cycles from the LAOS waveform:

# Skip first 2 cycles (startup transients), analyze cycles 2-5
spp = SPPDecomposer(
    omega=1.0,
    gamma_0=1.0,
    start_cycle=2,      # Skip cycles 0, 1 (0-indexed)
    end_cycle=5,        # Analyze up to cycle 5 (exclusive)
)

result = spp.transform(rheo_data)

# Check which cycles were actually analyzed
print(spp.results_['cycles_analyzed'])  # (2, 5)

Warning

Cycle selection matters! Early cycles may contain startup transients, while late cycles may show fatigue or structural breakdown. Always visualize multiple cycles before selecting the analysis window.

Numerical Differentiation Method

For raw experimental data compatibility (matching MATLAB SPPplus workflows), use the numerical differentiation method:

# MATLAB-compatible numerical SPP analysis
spp = SPPDecomposer(
    omega=1.0,
    gamma_0=1.0,
    use_numerical_method=True,  # Enable numerical derivatives
    step_size=8,                # 8-point finite-difference stencil
)

result = spp.transform(rheo_data)

# Access instantaneous moduli from numerical method
numerical = spp.results_['numerical']
Gp_t = numerical['Gp_t']       # G'(t) - instantaneous storage modulus
Gpp_t = numerical['Gpp_t']     # G''(t) - instantaneous loss modulus
delta_t = numerical['delta_t'] # delta(t) - instantaneous phase angle

# Mean values for comparison with linear measurements
print(f"Mean G'(t) = {spp.results_['Gp_t_mean']:.1f} Pa")
print(f"Mean G''(t) = {spp.results_['Gpp_t_mean']:.1f} Pa")

The numerical method implements the cross-product formula from Rogers (2012):

\[G'_t = -\frac{(\vec{r}' \times \vec{r}'')_0}{(\vec{r}' \times \vec{r}'')_2}, \qquad G''_t = -\frac{(\vec{r}' \times \vec{r}'')_1}{(\vec{r}' \times \vec{r}'')_2}\]

where \(\vec{r} = [\gamma, \dot{\gamma}/\omega, \sigma]\) is the response trajectory.

Amplitude Sweep Analysis

For comprehensive material characterization across strain amplitudes:

from rheojax.pipeline.spp import SPPAmplitudeSweepPipeline
import numpy as np

# Define amplitude sweep
gamma_0_values = np.logspace(-2, 1, 20)  # 0.01 to 10 strain

# Run amplitude sweep with SPP analysis
pipeline = SPPAmplitudeSweepPipeline(omega=1.0)
results = pipeline.run_sweep(
    data_files=amplitude_sweep_files,
    gamma_0_values=gamma_0_values,
)

# Extract amplitude-dependent quantities
G_cage_vs_gamma = results['G_cage']
sigma_sy_vs_gamma = results['sigma_sy']
sigma_dy_vs_gamma = results['sigma_dy']

Bayesian SPP Analysis

For uncertainty quantification on SPP-extracted yield stresses:

from rheojax.models import SPPYieldStress
from rheojax.core import RheoData

# Prepare SPP results for Bayesian fitting
rheo_data = RheoData(
    x=gamma_0_values,
    y=sigma_sy_values,
    test_mode='spp_yield',
)

# Fit SPP yield stress model with Bayesian inference
model = SPPYieldStress()
model.fit(rheo_data)  # NLSQ point estimate

# Bayesian inference with uncertainty
result = model.fit_bayesian(rheo_data, num_warmup=1000, num_samples=2000)

# Get credible intervals
intervals = model.get_credible_intervals(
    result.posterior_samples,
    credibility=0.95
)
print(f"K = {intervals['K']['mean']:.2f} [{intervals['K']['lower']:.2f}, {intervals['K']['upper']:.2f}]")
print(f"n = {intervals['n']['mean']:.3f} [{intervals['n']['lower']:.3f}, {intervals['n']['upper']:.3f}]")

Visualizing SPP Results

import matplotlib.pyplot as plt
import numpy as np

fig, axes = plt.subplots(2, 2, figsize=(12, 10))

# 1. Lissajous curve with SPP annotations
ax = axes[0, 0]
ax.plot(strain, stress, 'b-', linewidth=1.5)
ax.axhline(sigma_sy, color='r', linestyle='--', label=r'$\sigma_{y,static}$')
ax.axhline(sigma_dy, color='g', linestyle=':', label=r'$\sigma_{y,dynamic}$')
ax.axvline(gamma_y, color='orange', linestyle='-.', alpha=0.5, label=r'$\gamma_y$')
ax.set_xlabel(r'Strain $\gamma$')
ax.set_ylabel(r'Stress $\sigma$ (Pa)')
ax.legend()
ax.set_title('Lissajous Curve with Yield Points')

# 2. Instantaneous moduli through cycle
ax = axes[0, 1]
ax.plot(phase_in_cycle, Gp_t, 'b-', label=r"$G'_t$")
ax.plot(phase_in_cycle, Gpp_t, 'r--', label=r"$G''_t$")
ax.set_xlabel('Phase in Cycle (degrees)')
ax.set_ylabel('Instantaneous Modulus (Pa)')
ax.legend()
ax.set_title('Time-Resolved Moduli')

# 3. Cole-Cole plot (transient moduli)
ax = axes[1, 0]
ax.plot(Gp_t, Gpp_t, 'b-', linewidth=1)
ax.plot(Gp_t[0], Gpp_t[0], 'go', markersize=10, label='Start')
ax.set_xlabel(r"$G'_t$ (Pa)")
ax.set_ylabel(r"$G''_t$ (Pa)")
ax.set_aspect('equal')
ax.set_title('Cole-Cole Spiral')
ax.legend()

# 4. Amplitude dependence of yield stresses
ax = axes[1, 1]
ax.loglog(gamma_0_values, sigma_sy_values, 'ro-', label='Static yield')
ax.loglog(gamma_0_values, sigma_dy_values, 'bs-', label='Dynamic yield')
ax.set_xlabel(r'Strain amplitude $\gamma_0$')
ax.set_ylabel(r'Yield stress (Pa)')
ax.legend()
ax.set_title('Yield Stress vs Amplitude')

plt.tight_layout()
plt.savefig('spp_analysis.png', dpi=150)

SPP vs Fourier/Chebyshev Comparison

Understanding when to use SPP versus traditional Fourier-based methods is crucial for effective LAOS analysis.

SPP vs Fourier/Chebyshev Comparison

Aspect

SPP (Time-Domain)

Fourier/Chebyshev (Frequency-Domain)

Domain

Time (instantaneous properties)

Frequency (harmonic coefficients)

Basis functions

Physical processes (discrete)

Orthonormal harmonics (infinite series)

Yield stress

Direct extraction (σy,static, σy,dynamic)

Indirect (from GM, GL at large strain)

Physical interpretation

Intuitive (cage, flow, yielding)

Mathematical (harmonic ratios)

Transient phenomena

Captures within-cycle evolution

Averages over cycle

Higher harmonics

Explained by power-law flow

Individual harmonics assigned physical meaning

Noise sensitivity

Higher near zero stress

Lower (averaging effect)

Standard metrics

Gcage, σy,static, σy,dynamic, S/T factors

e3/e1, v3/v1, I3/I1

Truncation artifacts

None (raw data)

Possible (finite harmonics)

Best for

Yield-stress fluids, physical mechanisms

Material fingerprinting, literature comparison

Computational cost

O(N) per cycle

O(N log N) via FFT

Qualitative Consistency

SPP is qualitatively consistent with Fourier-Chebyshev analysis. The higher harmonics observed in Fourier spectra can be explained by the power-law flow response:

  • A power-law index of unity produces a simple sine wave (single harmonic)

  • A power-law index of zero produces a square wave (infinitely many harmonics with magnitudes 1/n)

  • Intermediate indices produce spectra with harmonics decreasing faster than 1/n

The relative magnitude of higher harmonics increases with strain amplitude because a larger proportion of the waveform comes from the power-law fluid response.

Limitations and Caveats

Noise Sensitivity Near Zero Stress

SPP quantities involve ratios that become sensitive near zero stress:

\[G'_t = \frac{\sigma}{\gamma} \quad \text{(problematic when } \sigma \approx 0\text{)}\]

Warning

Near-zero stress: When stress approaches zero (during flow reversal in some materials), SPP ratios can become noisy or undefined. Apply smoothing or exclude these regions from analysis.

Mitigation strategies:

import numpy as np
from scipy.signal import savgol_filter

# Option 1: Apply stress threshold (filter data before analysis)
valid_mask = np.abs(stress) > 1.0  # Pa threshold
filtered_stress = stress[valid_mask]

# Option 2: Use higher tolerance for yield point detection
spp = SPPDecomposer(omega=1.0, gamma_0=1.0, yield_tolerance=0.05)

# Option 3: Apply smoothing to raw data before SPP
stress_smooth = savgol_filter(stress, window_length=11, polyorder=3)

Cycle Selection Effects

The choice of which cycles to analyze significantly affects SPP results:

  • Too early: Transient effects, not representative of steady oscillation

  • Too late: Fatigue, structural breakdown, edge fracture

  • Single cycle: May not be representative; average multiple cycles

Best practice: Analyze a range of cycles and verify consistency.

Harmonic Truncation Not Applicable

Unlike Fourier methods, SPP does not truncate harmonics—it uses the raw stress-strain data. This means:

  • Advantage: No artifacts from harmonic truncation

  • Caution: Noise propagates directly into SPP quantities

For noisy data, consider smoothing the raw waveforms before SPP analysis.

Thixotropy Caveats

SPP assumes that properties can be meaningfully defined at each instant within a cycle. For strongly thixotropic materials:

  • Structure changes faster than the oscillation period

  • Instantaneous properties may not be well-defined

  • Consider time-resolved or protocol-based methods instead

Rule of thumb: SPP works well when the structural relaxation time τs is longer than the oscillation period (τs > 2|pi|/ω).

Rate-Dependent Yield Stresses

The static and dynamic yield stresses measured by SPP are rate-amplitude dependent:

\[\sigma_{y} \propto \gamma_0^{0.2} \propto \dot{\gamma}_0^{0.2}\]

This is consistent with the cage model where:

  • Dynamic yield: Finite relaxation time means viscous stress cannot fully relax before cage reformation

  • Static yield: Hopping from potential minima depends on effective shear rate

The rate-dependence of both yield stresses have the same power-law index, suggesting the finite dissipation time and hopping mechanics are intimately related.

macOS GPU Acceleration

Note

Platform limitation: GPU acceleration for SPP transforms is currently only supported on Linux with CUDA. macOS users will use CPU computation, which remains performant for typical LAOS datasets but may be slower for very large datasets.

Tutorial Notebooks

RheoJAX provides comprehensive tutorial notebooks demonstrating SPP analysis workflows:

Basic SPP Tutorial

Notebook: examples/advanced/10-spp-laos-tutorial.ipynb

This tutorial covers:

  • Loading and preprocessing LAOS data

  • Configuring SPPDecomposer with Rogers-parity defaults

  • Extracting instantaneous moduli \(G'(t)\), \(G''(t)\)

  • Visualizing Lissajous curves with yield point annotations

  • Amplitude sweep analysis for material classification

  • Comparison with Fourier/Chebyshev results

Bayesian SPP Workflow

Notebook: examples/bayesian/08-spp-laos.ipynb

This tutorial demonstrates:

  • SPP analysis with uncertainty quantification

  • NLSQ → NUTS warm-start for yield stress fitting

  • Convergence diagnostics (R-hat, ESS)

  • Posterior predictive checks

  • Model comparison for yield stress models

SPP RheoJAX Workflow

Notebook: examples/bayesian/09-spp-rheojax-workflow.ipynb

Advanced workflow covering:

  • SPPAmplitudeSweepPipeline for batch processing

  • Integration with ArviZ diagnostics

  • Publication-quality figure generation

  • Experimental data analysis with real LAOS measurements

References

Foundational SPP Papers:

  • Rogers, S. A., Erwin, B. M., Vlassopoulos, D., & Cloitre, M. (2011). “A sequence of physical processes determined and quantified in LAOS: Application to a yield stress fluid.” J. Rheol. 55, 435-458. https://doi.org/10.1122/1.3544591

  • Rogers, S. A. (2012). “A sequence of physical processes determined and quantified in LAOS: An instantaneous local 2D/3D approach.” J. Rheol. 56, 1129-1151. https://doi.org/10.1122/1.4726083

  • Rogers, S. A., & Lettinga, M. P. (2012). “A sequence of physical processes determined and quantified in large-amplitude oscillatory shear (LAOS): Application to theoretical nonlinear models.” J. Rheol. 56, 1-25. https://doi.org/10.1122/1.3662962

  • Rogers, S. A. (2017). “In search of physical meaning: defining transient parameters for nonlinear viscoelasticity.” Rheol. Acta 56, 501-525. https://doi.org/10.1007/s00397-017-1008-1

Applications and Extensions:

  • Lee, C.-W., & Rogers, S. A. (2017). “A sequence of physical processes quantified in LAOS by continuous local measures.” Korea-Australia Rheol. J. 29, 269-279.

  • Donley, G. J., et al. (2019). “Time-resolved dynamics of the yielding transition in soft materials.” J. Non-Newtonian Fluid Mech. 264, 117-134.

Comparison with Fourier Methods:

  • Hyun, K., et al. (2011). “A review of nonlinear oscillatory shear tests: Analysis and application of large amplitude oscillatory shear (LAOS).” Prog. Polym. Sci. 36, 1697-1753. https://doi.org/10.1016/j.progpolymsci.2011.02.002

  • Ewoldt, R., Hosoi, A., & McKinley, G. (2008). “New measures for characterizing nonlinear viscoelasticity in large amplitude oscillatory shear.” J. Rheol. 52, 1427-1458.

See Also