LVEEnvelope¶
Overview¶
The rheojax.transforms.LVEEnvelope transform computes the linear viscoelastic
(LVE) startup stress envelope \(\sigma_{\text{LVE}}^+(t)\) from a Prony series
representation of the relaxation modulus. This analytical prediction provides the
theoretical stress growth response assuming linear viscoelasticity.
Key Capabilities:
Startup stress prediction: \(\sigma_{\text{LVE}}^+(t)\) for any shear rate
Nonlinearity detection: Compare with experimental startup data to identify strain hardening or softening
JIT-compiled: Fully JAX-accelerated evaluation for fast sweeps over multiple rates
Flexible input: Prony parameters via constructor or from
RheoDatametadata
The LVE envelope is a cornerstone of nonlinear rheology characterization. In a startup experiment, the material’s stress growth follows the LVE envelope at early times but deviates at a characteristic strain—the Hencky strain at onset of nonlinearity—revealing the material’s nonlinear response.
Mathematical Theory¶
Startup Stress in Linear Viscoelasticity¶
For a material subjected to constant shear rate \(\dot{\gamma}_0\) starting at \(t = 0\), the Boltzmann superposition integral gives the transient stress:
Substituting the Prony series \(G(t) = G_e + \sum_i G_i \exp(-t/\tau_i)\):
Limiting behaviors:
Short time (\(t \ll \tau_{\min}\)): \(\sigma \approx \dot{\gamma}_0 \left(G_e + \sum G_i\right) t\) (elastic response, slope = glassy modulus × rate)
Long time (\(t \gg \tau_{\max}\)): \(\sigma \to \dot{\gamma}_0 \left(G_e \, t + \sum G_i \tau_i\right)\) (steady state for viscoelastic solids, or constant \(\eta_0 \dot{\gamma}_0\) for liquids)
Steady-state viscosity (for liquids, \(G_e = 0\)):
Nonlinearity Assessment¶
Comparing \(\sigma_{\text{exp}}^+(t)\) with \(\sigma_{\text{LVE}}^+(t)\):
\(\sigma_{\text{exp}} > \sigma_{\text{LVE}}\): Strain hardening (common in branched polymers, associating networks)
\(\sigma_{\text{exp}} < \sigma_{\text{LVE}}\): Strain softening (common in linear polymers at high rates, shear thinning)
\(\sigma_{\text{exp}} = \sigma_{\text{LVE}}\): Linear regime (low rates, small strains)
Damping function extraction:
Parameters¶
Parameter |
Type |
Default |
Description |
|---|---|---|---|
|
float |
|
Applied shear rate \(\dot{\gamma}_0\) (s-1). |
|
ndarray | None |
|
Prony mode strengths (Pa). Read from |
|
ndarray | None |
|
Prony relaxation times (s). Read from |
|
float |
|
Equilibrium modulus (Pa). Set to 0 for viscoelastic liquids. |
|
ndarray | None |
|
Output time array. Auto-generated if |
Parameter Selection Guidelines¶
Shear rate:
Match the experimental startup rate for direct comparison
Sweep rates to generate a family of LVE envelopes for rate-dependent analysis
Prony parameters:
Obtain from PronyConversion transform
Or from ../models/gmm/generalized_maxwell model fitting
Or supply directly from literature values
Input / Output Specifications¶
Input: Optional
RheoData. IfG_i/tau_iwere set at construction,datacan beNone. Ifdatais provided, itsxvalues are used as the time array, andG_i/tau_ican be read fromdata.metadata.Output:
RheoDatawithx= time (s),y= \(\sigma_{\text{LVE}}^+(t)\) (Pa). Metadata includesshear_rate,n_modes, andsource_transform.
Usage¶
Direct Parameter Input¶
from rheojax.transforms import LVEEnvelope
import numpy as np
# Two-mode polymer melt
G_i = np.array([5e3, 2e3]) # Mode strengths (Pa)
tau_i = np.array([0.1, 10.0]) # Relaxation times (s)
# Compute LVE envelope at γ̇ = 1 s⁻¹
lve = LVEEnvelope(shear_rate=1.0, G_i=G_i, tau_i=tau_i)
envelope_data, info = lve.transform()
t = envelope_data.x
sigma_lve = envelope_data.y
# Steady-state viscosity: η₀ = Σ Gᵢτᵢ
eta_0 = np.sum(G_i * tau_i)
print(f"η₀ = {eta_0:.0f} Pa·s")
Rate Sweep for Nonlinear Comparison¶
import matplotlib.pyplot as plt
import numpy as np
from rheojax.transforms import LVEEnvelope
G_i = np.array([1e4, 3e3, 500])
tau_i = np.array([0.01, 1.0, 100.0])
rates = [0.01, 0.1, 1.0, 10.0]
t = np.logspace(-3, 3, 500)
fig, ax = plt.subplots()
for rate in rates:
lve = LVEEnvelope(shear_rate=rate, G_i=G_i, tau_i=tau_i, t_out=t)
data, _ = lve.transform()
ax.loglog(data.x, data.y, label=fr'$\dot{{\gamma}} = {rate}$ s$^{{-1}}$')
ax.set_xlabel('Time (s)')
ax.set_ylabel(r'$\sigma_{\mathrm{LVE}}^+$ (Pa)')
ax.legend()
ax.set_title('LVE Envelope Family')
From Prony Conversion Output¶
from rheojax.transforms import PronyConversion, LVEEnvelope
# Step 1: Fit Prony series
prony = PronyConversion(n_modes=10, direction="time_to_freq")
_, info = prony.transform(relaxation_data)
prony_result = info["prony_result"]
# Step 2: LVE envelope using fitted parameters
lve = LVEEnvelope(
shear_rate=0.5,
G_i=prony_result.G_i,
tau_i=prony_result.tau_i,
G_e=prony_result.G_e,
)
envelope_data, _ = lve.transform()
From Data Metadata¶
from rheojax.transforms import LVEEnvelope
from rheojax.core.data import RheoData
import numpy as np
# Data with Prony parameters in metadata
t = np.logspace(-2, 2, 100)
data = RheoData(
x=t, y=np.zeros_like(t),
metadata={'G_i': [5000, 2000], 'tau_i': [0.1, 10.0], 'G_e': 100.0}
)
lve = LVEEnvelope(shear_rate=1.0)
envelope_data, info = lve.transform(data)
result = info["lve_result"]
print(f"Modes: {len(result.G_i)}, Rate: {result.shear_rate} s⁻¹")
Output Structure¶
Attribute |
Type |
Description |
|---|---|---|
|
ndarray |
Time array (s) |
|
ndarray |
Stress envelope \(\sigma_{\text{LVE}}^+(t)\) (Pa) |
|
ndarray |
Prony mode strengths used (Pa) |
|
ndarray |
Prony relaxation times used (s) |
|
float |
Applied shear rate (s-1) |
See Also¶
PronyConversion — Fit Prony parameters from \(G(t)\) or \(G^*(\omega)\) data
SpectrumInversion — Continuous spectrum recovery (alternative to Prony)
../models/gmm/generalized_maxwell — Multi-mode Maxwell model (provides Prony parameters)
Maxwell (Classical) — Single Maxwell element (1-mode special case)
FFTAnalysis — Non-parametric time-frequency interconversion
API References¶
Module:
rheojax.transformsClass:
rheojax.transforms.LVEEnvelope
References¶
Ferry, J.D. (1980). Viscoelastic Properties of Polymers, 3rd ed. Wiley. Chapter 4: Stress growth in startup of steady shear.
Dealy, J.M. & Larson, R.G. (2006). Structure and Rheology of Molten Polymers: From Structure to Flow Behavior and Back Again. Hanser.
Wagner, M.H. (1976). “Analysis of time-dependent non-linear stress-growth data for shear and elongational flow of a low-density branched polyethylene melt.” Rheol. Acta, 15, 136–142. DOI: 10.1007/BF01517505
Osaki, K., Inoue, T., & Isomura, T. (2000). “Stress overshoot of polymer solutions at high rates of shear.” J. Polym. Sci. Part B: Polym. Phys., 38, 1917–1925. DOI: 10.1002/1099-0488(20000715)38:14<1917::AID-POLB100>3.0.CO;2-6