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¶
Parameter |
Default |
Notes |
|---|---|---|
|
39 (odd) |
Matches SPPplus v2.1 parity |
|
8 |
8-point 4th-order stencil |
|
2 |
Periodic/looped differentiation |
|
True |
Infers γ. with periodic wrap when rate missing |
|
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:
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:
Elastic extension of microstructural cages
Static yielding when cages break
Viscous flow following the flow curve
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:
Elastic extension (1→2): Stress increases linearly with strain
Static yield (point 2): Maximum stress before cage rupture
Viscous flow (2→3→4): Power-law flow following the steady-state flow curve
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:
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:
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):
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):
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:
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:
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:
where r’ and r’’ are the first and second derivatives of the trajectory with respect to the arc-length parameter.
The stress decomposition becomes:
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:
where T is the unit tangent and N is the principal normal. The moduli are:
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:
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:
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:
Pre-yield: High Gcage, low δt (elastic solid)
Yielding: Rapid drop in Gcage, increasing δt
Post-yield: Power-law flow, δt → 90|deg|
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):
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.
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.
Recommended Workflow¶
For comprehensive LAOS characterization:
Start with Fourier/Chebyshev: Get standard nonlinear parameters (I3/1, e3/e1, v3/v1) for literature comparison
Apply SPP for physical insight: Extract yield stresses, cage modulus, and phase evolution
Cross-validate: Ensure both methods tell a consistent physical story
from rheojax.transforms import OWChirp, SPPDecomposer
# Fourier-based analysis
owchirp = OWChirp(extract_harmonics=True)
harmonics = owchirp.get_harmonics(laos_data)
I31 = harmonics['third'][1] / harmonics['fundamental'][1]
# SPP analysis
spp = SPPDecomposer(omega=1.0, gamma_0=1.0, n_harmonics=39)
result = spp.transform(rheo_data)
spp_metrics = spp.get_results()
# Compare interpretations
print(f"Fourier I_3/1 = {I31:.3f}")
print(f"SPP I3/I1 ratio = {spp_metrics['I3_I1_ratio']:.3f}")
print(f"SPP static yield = {spp_metrics['sigma_sy']:.0f} Pa")
print(f"SPP cage modulus = {spp_metrics['G_cage']:.0f} Pa")
Limitations and Caveats¶
Noise Sensitivity Near Zero Stress¶
SPP quantities involve ratios that become sensitive near zero stress:
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:
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¶
OWChirp — OWChirp for Fourier-based LAOS analysis
Herschel-Bulkley Model — Yield-stress model for flow curve fitting
Bayesian Inference — Uncertainty quantification for SPP parameters
Tutorial Notebooks — Tutorial notebooks including SPP Bayesian workflow