VLBVariant — Bell, FENE-P & Temperature¶
Quick Reference¶
Model Class |
|
Physics |
VLB transient network with force-dependent breakage, finite extensibility, and/or temperature dependence |
Key Parameters |
\(G_0, k_d^0, \nu\) (Bell), \(L_{\max}\) (FENE), \(E_a, T_{\text{ref}}\) (Temperature) |
Protocols |
FLOW_CURVE, STARTUP, RELAXATION, CREEP, OSCILLATION, LAOS |
Key Features |
Shear thinning, stress overshoot, bounded extensional viscosity, Arrhenius scaling |
Reference |
Vernerey, Long & Brighenti (2017). JMPS 107, 1-20; Bell (1978). Science 200, 618 |
Import:
from rheojax.models import VLBVariant
Overview¶
VLBVariant extends the VLB transient network with three composable
physics options:
Bell breakage — Force-dependent dissociation rate that produces shear thinning, stress overshoot, and nonlinear LAOS response
FENE-P stress — Finite extensibility that bounds the extensional viscosity and adds strain hardening
Temperature dependence — Arrhenius scaling of \(k_d\) and thermal modulus \(G_0(T)\)
These can be combined freely through constructor flags. With all
flags off (breakage="constant", stress_type="linear",
temperature=False), VLBVariant exactly reproduces VLBLocal.
Constructor Flags¶
model = VLBVariant(
breakage="constant", # or "bell"
stress_type="linear", # or "fene"
temperature=False, # or True
)
Parameters¶
Parameter |
When Present |
Units |
Description |
|---|---|---|---|
\(G_0\) |
Always |
Pa |
Network modulus |
\(k_d^0\) |
Always |
1/s |
Unstressed dissociation rate |
\(\nu\) |
|
— |
Force sensitivity (0 = Newtonian, >1 = shear thinning) |
\(L_{\max}\) |
|
— |
Maximum chain extensibility |
\(E_a\) |
|
J/mol |
Activation energy for bond dissociation |
\(T_{\text{ref}}\) |
|
K |
Reference temperature |
Bell Breakage Model¶
Theory¶
The Bell model (1978) makes the dissociation rate force-dependent:
where \(\lambda_c = \sqrt{\text{tr}(\boldsymbol{\mu})/3}\) is the normalized average chain stretch. For the detailed theory including slip-bond and catch-bond formulations, see VLB Advanced Theory & Numerical Methods.
Physical effects:
Shear thinning: \(\eta(\dot\gamma)\) decreases with shear rate because stretched chains break faster, reducing effective cross-link density
Stress overshoot: At startup, transient stretch exceeds steady state, causing \(\sigma_{\max} > \sigma_{ss}\) at high Weissenberg numbers
Nonlinear LAOS: Higher harmonics \(I_3/I_1 > 0\) (unlike constant \(k_d\) which is purely linear)
Faster relaxation: Pre-stretched chains relax faster than predicted by the equilibrium \(k_d^0\)
Usage¶
from rheojax.models import VLBVariant
model = VLBVariant(breakage="bell")
model.parameters.set_value("G0", 1000.0)
model.parameters.set_value("k_d_0", 1.0)
model.parameters.set_value("nu", 5.0)
# Shear-thinning flow curve
gamma_dot = np.logspace(-2, 2, 50)
sigma = model.predict_flow_curve(gamma_dot)
# Stress overshoot in startup
t = np.linspace(0.01, 20, 200)
sigma_t = model.simulate_startup(t, gamma_dot=10.0)
FENE-P Finite Extensibility¶
Theory¶
The FENE-P (finitely extensible nonlinear elastic with Peterlin closure) model replaces the linear Hookean spring with a nonlinear spring:
At equilibrium (\(\boldsymbol{\mu} = \mathbf{I}\)), \(f = 1\) and the stress reduces to the linear Hookean form. As chains stretch toward their maximum extensibility, \(f \to \infty\), creating a strongly nonlinear stress response.
Physical effects:
Bounded extensional viscosity: The Trouton ratio remains finite even at high extension rates (resolves the Hookean singularity at \(\dot\varepsilon = k_d/2\))
Strain hardening: Stress increases super-linearly with strain
Large \(L_{\max}\) recovers linear: At \(L_{\max} \to \infty\), FENE-P reduces to the linear Hookean model
Usage¶
model = VLBVariant(stress_type="fene")
model.parameters.set_value("G0", 1000.0)
model.parameters.set_value("k_d_0", 1.0)
model.parameters.set_value("L_max", 10.0)
Temperature Dependence¶
Theory¶
Arrhenius temperature scaling of the dissociation rate:
Thermal modulus scaling (rubber elasticity):
At \(T = T_{\text{ref}}\), both reduce to their reference values.
Usage¶
model = VLBVariant(temperature=True)
model.parameters.set_value("G0", 1000.0)
model.parameters.set_value("k_d_0", 1.0)
model.parameters.set_value("E_a", 40000.0) # J/mol
model.parameters.set_value("T_ref", 300.0)
# Predict at different temperatures
sigma_300 = model.predict_flow_curve(gamma_dot, T=300.0)
sigma_350 = model.predict_flow_curve(gamma_dot, T=350.0)
Combined Usage¶
All flags compose naturally:
# Bell + FENE: shear thinning + bounded extension
model = VLBVariant(breakage="bell", stress_type="fene")
model.parameters.set_value("nu", 5.0)
model.parameters.set_value("L_max", 10.0)
# Full model with all extensions
model = VLBVariant(
breakage="bell",
stress_type="fene",
temperature=True,
)
SAOS Behavior¶
In the linear regime (SAOS), the Bell breakage reduces to constant \(k_d\) because at equilibrium the chain stretch is 1. Therefore SAOS predictions are always analytical Maxwell, regardless of breakage type.
This is exact — not an approximation — because SAOS probes infinitesimally small deformations around equilibrium.
Bayesian Inference¶
VLBVariant supports the standard NLSQ + NUTS pipeline:
# NLSQ warm start
model.fit(omega, G_star, test_mode='oscillation')
# Bayesian posterior
result = model.fit_bayesian(
omega, G_star, test_mode='oscillation',
num_warmup=1000, num_samples=2000,
)
The model_function is fully JAX-traceable, enabling gradient-based
NUTS sampling for all parameter combinations.
See Also¶
VLB Advanced Theory & Numerical Methods — Full theoretical foundations for Bell, FENE-P, Langevin, and temperature extensions
HVM Model Reference — HVM uses related TST kinetics (\(k_{BER} = \nu_0 e^{-E_a/RT} \cosh(V_{act} \sigma_{VM}/RT)\)) for vitrimer bond exchange, which is conceptually similar to Bell breakage but operates on the natural-state evolution rather than the dissociation rate
API Reference¶
- class rheojax.models.vlb.VLBVariant(breakage='constant', stress_type='linear', temperature=False)[source]¶
Bases:
VLBBaseVLB with Bell breakage, FENE-P stress, and/or temperature dependence.
This is the composable variant class for VLB models. It supports all 6 protocols via ODE integration (required when k_d depends on state).
When breakage=”constant” and stress_type=”linear”, the model matches VLBLocal exactly (regression verified).
- Parameters:
- __init__(breakage='constant', stress_type='linear', temperature=False)[source]¶
Initialize VLBVariant model.
- model_function(X, params, test_mode=None, **kwargs)[source]¶
NumPyro/BayesianMixin model function.
Routes to appropriate prediction based on test_mode.
- Parameters:
X (array-like) – Independent variable
params (array-like) – Parameter values in ParameterSet order: [G0, k_d_0, eta_s, (nu), (L_max), (E_a, T_ref)]
test_mode (str, optional) – Override stored test mode
**kwargs – Protocol-specific: gamma_dot, sigma_applied, gamma_0, omega, T
- Returns:
Predicted response
- Return type:
jnp.ndarray
- predict_saos(omega)[source]¶
Predict SAOS moduli (Maxwell, analytical).
In the linear regime, Bell reduces to constant k_d = k_d_0.
- predict_normal_stresses(gamma_dot)[source]¶
Predict steady-state first normal stress difference N1.
For Bell breakage, this requires ODE integration.
- simulate_relaxation(t, gamma_dot_preshear=10.0)[source]¶
Simulate stress relaxation after cessation of flow.
- simulate_laos(t, gamma_0, omega, n_cycles=10)[source]¶
Simulate Large Amplitude Oscillatory Shear (LAOS).
- predict_uniaxial_extension(eps_dot)[source]¶
Predict steady-state extensional stress.
For FENE-P, extensional stress is bounded (no singularity).
- extract_laos_harmonics(result=None, n_harmonics=5)[source]¶
Extract Fourier harmonics from LAOS data.