SGR GENERIC (Thermodynamically Consistent)¶
Quick Reference¶
Use when: Thermodynamic consistency required, entropy production analysis, nonequilibrium thermodynamics research
Parameters: 4+ (\(x\), \(G_0\), \(\tau_0\), dissipation parameters)
Key equation: GENERIC framework with Poisson bracket + friction matrix
Test modes: Oscillation, relaxation, creep, startup, steady shear (flow curve), LAOS
Material examples: Same as SGR Conventional, plus thermodynamic model validation
Notation Guide¶
Symbol |
Meaning |
|---|---|
\(\mathbf{z}\) |
State variables (probability distribution \(P(E, l, t)\)) |
\(E(\mathbf{z})\) |
Total energy functional (Hamiltonian) |
\(S(\mathbf{z})\) |
Entropy functional (Boltzmann form) |
\(F(\mathbf{z})\) |
Free energy \(F = E - xS\) |
\(\mathbf{L}\) |
Poisson bracket matrix (antisymmetric, reversible dynamics) |
\(\mathbf{M}\) |
Friction matrix (symmetric positive semidefinite, dissipative dynamics) |
\(\dot{S}_{\text{prod}}\) |
Entropy production rate (non-negative by construction) |
\(P(E, l, t)\) |
Distribution of trap depth \(E\) and local strain \(l\) |
\(\rho(E)\) |
Trap density of states \(e^{-E}\) |
\(x\) |
Effective noise temperature (control parameter) |
\(Z\) |
Partition function |
Overview¶
The SGR GENERIC model extends the conventional Soft Glassy Rheology framework to satisfy the GENERIC (General Equation for Nonequilibrium Reversible-Irreversible Coupling) structure—a mathematically rigorous framework for nonequilibrium thermodynamics [1].
The GENERIC formulation, developed by Grmela and Öttinger [2], guarantees:
First law: Total energy conservation
Second law: Non-negative entropy production
Onsager symmetry: Dissipative couplings satisfy reciprocal relations
Clear separation: Reversible (Hamiltonian) and irreversible (dissipative) dynamics
This implementation follows Fuereder and Ilg’s thermodynamically consistent reformulation of the SGR model [1], enabling entropy production calculations and thermodynamic validation.
Note
Implementation: Reduced 2D State Model
The full Fuereder & Ilg (2013) theory is formulated at the distribution level, evolving \(P(E, l, t)\) over all trap depths and local strains. This implementation uses a reduced 2D state representation \(\mathbf{z} = [\sigma, \lambda]\) (macroscopic stress and a structural parameter) with a binary mixing entropy, which captures the essential thermodynamic structure (energy conservation, non-negative entropy production, Onsager symmetry) while remaining computationally tractable. The rheological predictions (SAOS, relaxation, creep, flow curves) use the same SGR kernel functions as the conventional model. The GENERIC operators (Poisson bracket \(L\), friction matrix \(M\)) act on the reduced state space rather than the full distribution.
Physical Foundations¶
The GENERIC framework extends the SGR mesoscopic trap model with rigorous nonequilibrium thermodynamic structure. All physical foundations from the conventional SGR model apply (see SGR Conventional (Soft Glassy Rheology) — Handbook), with the addition of thermodynamically consistent separation of reversible and irreversible dynamics.
Key additions beyond conventional SGR:
Energy-Entropy Split: Dynamics are decomposed into Hamiltonian (energy-conserving) and dissipative (entropy-producing) contributions
Degeneracy Conditions: Mathematical constraints that enforce the first and second laws of thermodynamics
Fluctuation-Dissipation: Automatic consistency with equilibrium statistical mechanics when \(x = k_B T\)
The physical interpretation of traps, yielding, and effective temperature remains identical to conventional SGR. The GENERIC formulation adds mathematical rigor and enables calculation of thermodynamic quantities (entropy production, free energy).
Theoretical Foundation¶
GENERIC Structure¶
The GENERIC framework describes the time evolution of state variables \(\mathbf{z}\) as:
- where:
\(E(\mathbf{z})\) is the total energy (Hamiltonian)
\(S(\mathbf{z})\) is the entropy
\(\mathbf{L}\) is the Poisson bracket matrix (antisymmetric, reversible dynamics)
\(\mathbf{M}\) is the friction matrix (symmetric positive semidefinite, dissipative dynamics)
The two generators must satisfy degeneracy conditions:
These conditions ensure thermodynamic consistency: reversible processes conserve entropy, while irreversible processes conserve energy.
Poisson Bracket Structure¶
The reversible (Hamiltonian) part of the dynamics is encoded in the Poisson bracket \(\{A, B\}\) for any two functionals \(A[P]\) and \(B[P]\):
For the SGR model, the Poisson bracket captures the advection of elements by macroscopic flow:
Properties of the Poisson Bracket
The Poisson bracket must satisfy:
Antisymmetry: \(\{A, B\} = -\{B, A\}\)
Bilinearity: Linear in both arguments
Jacobi identity: \(\{A, \{B, C\}\} + \{B, \{C, A\}\} + \{C, \{A, B\}\} = 0\)
Leibniz rule: \(\{AB, C\} = A\{B, C\} + B\{A, C\}\)
The SGR advection bracket can be verified to satisfy all these conditions.
Derivation from Continuity
The Poisson structure arises from the continuity equation for \(P(E, l, t)\):
Under affine deformation, \(\dot{l} = \dot{\gamma}\), giving the advection flux. The reversible part corresponds to this flux without yielding, which is conservative (preserves \(\int P \, dE \, dl = 1\)).
Onsager-Casimir Symmetry¶
The dissipative part of the dynamics, encoded in the friction matrix \(\mathbf{M}\), must satisfy Onsager-Casimir reciprocal relations:
where \(\epsilon_i = \pm 1\) is the time-reversal parity of variable \(z_i\).
Time-Reversal Parities in SGR
For the SGR distribution \(P(E, l, t)\):
Trap depth \(E\): Even under time reversal (\(\epsilon_E = +1\))
Local strain \(l\): Even (\(\epsilon_l = +1\), since \(l\) is a displacement)
Strain rate \(\dot{\gamma}\): Odd (\(\epsilon_{\dot{\gamma}} = -1\))
The yielding rate \(\Gamma(E, l) = \exp(-E + l^2/2)\) is time-reversal symmetric (depends on \(l^2\)), ensuring:
This Onsager symmetry (all parities equal) follows from the detailed balance structure of the yielding process with respect to \(\rho(E)\).
Casimir Invariants
Quantities \(C[P]\) satisfying \(\{C, H\} = 0\) for all Hamiltonians \(H\) are Casimir invariants. For the SGR advection bracket:
Total probability \(\int P \, dE \, dl = 1\) is a Casimir (particle number conservation)
The trap distribution \(\rho(E)\) is invariant under reversible dynamics
Detailed Balance and Fluctuation-Dissipation¶
The friction matrix \(\mathbf{M}\) satisfies a detailed balance condition ensuring approach to equilibrium:
For the SGR yielding kernel:
The detailed balance is satisfied because the yielding rate \(\Gamma(E, l)\) together with rebirth into \(\rho(E)\) respects the equilibrium distribution structure.
Fluctuation-Dissipation Theorem
Near equilibrium, the GENERIC structure implies a fluctuation-dissipation relation:
where \(\delta z_i = z_i - \langle z_i \rangle_{\text{eq}}\) are fluctuations and \(\tau_{ij}\) is the relaxation time for the \((i, j)\) correlation.
This connects the microscopic yielding dynamics to macroscopic response functions, providing a thermodynamic foundation for the noise temperature \(x\).
State Variables for SGR¶
For the SGR model, the state variable is the probability distribution \(P(E, l, t)\) of finding mesoscopic elements with trap depth \(E\) and local strain \(l\).
The macroscopic observables are moments of this distribution:
Stress: \(\sigma = k \int dE \, dl \, l \, P(E, l, t)\)
Energy: \(U = \frac{1}{2}k \int dE \, dl \, l^2 \, P(E, l, t)\)
Energy Functional¶
The internal energy of the SGR system is:
The first term represents trap potential energy, and the second is elastic strain energy.
Entropy Functional¶
The entropy is given by the Boltzmann form:
where \(\rho(E) = e^{-E}\) is the trap density of states.
The equilibrium distribution maximizing \(S\) at fixed \(E\) is:
where \(Z\) is the partition function.
Free Energy¶
The nonequilibrium free energy is:
This Helmholtz-like free energy uses the effective noise temperature \(x\) instead of thermal temperature.
Entropic Stress Contribution¶
In the GENERIC framework, configurational entropy contributes an additional stress term beyond the mechanical (elastic) stress. From Fuereder & Ilg (2013), the configurational stress arises from the entropy functional:
This entropic stress vanishes in equilibrium (\(P = P_{\text{eq}}\)), but contributes during nonequilibrium flow when the distribution deviates from the Boltzmann form.
The total stress is thus:
The first term is the familiar elastic stress (local strain weighted by spring constant), while the second represents the thermodynamic driving force from configurational disorder.
Poisson Bracket (Reversible Dynamics)¶
The Poisson bracket for SGR describes convective transport under affine deformation:
This generates the affine strain rate contribution \(\dot{l} = \dot{\gamma}\) for all elements.
- Key properties:
Antisymmetry: \(\{A, B\} = -\{B, A\}\)
Jacobi identity satisfied
Energy conserved: \(\{S, E\} = 0\)
Generates Hamiltonian (time-reversible) dynamics
Friction Matrix (Irreversible Dynamics)¶
The friction matrix describes activated hopping (yielding) processes:
where the transition kernel \(M(E, E', l)\) satisfies:
This describes elements yielding from state \((E, l)\) to a new trap with depth \(E'\) drawn from \(\rho(E')\), resetting their strain to zero.
- Key properties:
Symmetric positive semidefinite: \(\mathbf{M} \geq 0\)
Satisfies detailed balance with \(\rho(E)\)
Generates entropy production
Energy conserved: \(\mathbf{M} \cdot \delta E / \delta P = 0\)
Entropy Production¶
The entropy production rate is always non-negative:
This is guaranteed by the positive semidefiniteness of \(\mathbf{M}\).
Explicitly:
At equilibrium, \(P = P_{\text{eq}}\) and \(\dot{S}_{\text{prod}} = 0\).
Entropy Production Decomposition¶
Following Fuereder & Ilg (2013), the total entropy change can be decomposed into distinct physical contributions:
where:
\(\dot{S}_{\text{res}}\): Entropy change in the thermal reservoir (heat bath at temperature \(\theta\))
\(\dot{S}_{\text{trans}}\): Entropy transfer between the configurational subsystem (at temperature \(\chi = x\)) and the thermal reservoir
\(\dot{S}_{\text{yield}}\): Entropy production from irreversible yielding transitions
The reservoir contribution captures heat exchange:
where \(\dot{Q}\) is the heat flow from reservoir to configurational degrees of freedom.
The transfer contribution arises from the temperature difference:
where \(A\) is the heat transfer coefficient. This term is always non-negative, representing the irreversible equilibration between thermal and configurational subsystems.
The yielding contribution is the dominant term during flow:
This decomposition illuminates the thermodynamic origin of dissipation in SGR: yielding events release elastic strain energy, which is partially converted to configurational entropy and partially transferred to the thermal reservoir.
Effective Temperature Dynamics¶
The configurational temperature \(\chi\) (identified with the noise temperature \(x\)) is not a fixed parameter but can evolve according to an energy balance. From Fuereder & Ilg (2013) and Sollich & Cates (2012):
where:
\(C_V^{\text{eff}}\): Effective heat capacity of configurational degrees of freedom
\(W = \sigma \dot{\gamma}\): Rate of mechanical work on the configurational subsystem
\(A\): Heat transfer coefficient between configurational and thermal subsystems
\(\theta\): Thermal (bath) temperature
Physical interpretation:
Mechanical injection (\(W > 0\)): Shear injects energy, raising \(\chi\) (“shear rejuvenation”)
Thermal relaxation (\(A(\theta - \chi)\)): Heat exchange drives \(\chi \to \theta\) (“physical aging”)
In steady shear, \(\dot{\chi} = 0\) implies:
Higher shear rates maintain higher effective temperatures, explaining why sheared glasses are “younger” (more fluid-like) than quiescent aged samples.
For quiescent aging (\(\dot{\gamma} = 0\)), the equation predicts exponential relaxation:
where \(\tau_{\text{age}} = C_V^{\text{eff}}/A\) is the aging timescale. This provides the thermodynamic foundation for the aging dynamics described in SGR Conventional (Soft Glassy Rheology) — Handbook.
Thermodynamic Consistency Verification¶
The GENERIC framework provides built-in thermodynamic consistency, but numerical implementations can violate these guarantees. This section describes verification procedures for detecting and preventing such violations.
Numerical Verification Checklist
Property |
Test |
Tolerance |
|---|---|---|
Antisymmetry of \(\mathbf{L}\) |
\(\|L_{ij} + L_{ji}\| < \epsilon\) |
\(\epsilon \sim 10^{-12}\) |
Positive semidefiniteness of \(\mathbf{M}\) |
All eigenvalues \(\geq -\epsilon\) |
\(\epsilon \sim 10^{-10}\) |
Energy degeneracy |
\(\|\mathbf{M} \cdot \partial E/\partial \mathbf{z}\| < \epsilon\) |
\(\epsilon \sim 10^{-10}\) |
Entropy degeneracy |
\(\|\mathbf{L} \cdot \partial S/\partial \mathbf{z}\| < \epsilon\) |
\(\epsilon \sim 10^{-10}\) |
Probability conservation |
\(|\int P \, dE\,dl - 1| < \epsilon\) |
\(\epsilon \sim 10^{-12}\) |
Non-negative entropy production |
\(\dot{S}_{\text{prod}} \geq -\epsilon\) |
\(\epsilon \sim 10^{-10}\) |
Pathological Case Detection
Certain parameter combinations or flow conditions can lead to thermodynamic inconsistencies even in formally correct implementations:
Negative effective temperature (\(x < 0\)):
Physically meaningless; indicates fitting error or data issues
Detection: Check \(x \geq 0.5\) before any calculation
Resolution: Constrain \(x \geq 0.5\) in optimization (code default lower bound)
Entropy decrease during equilibration:
Indicates numerical error in \(\mathbf{M}\) computation
Detection: Monitor \(\dot{S}_{\text{prod}}\) sign in quiescent simulations
Resolution: Reduce time step, check discretization of yielding kernel
Energy non-conservation in reversible limit:
Occurs if \(\mathbf{L}\) is not truly antisymmetric numerically
Detection: Run with \(\mathbf{M} = 0\), check \(\dot{E} = 0\)
Resolution: Symmetrize via \(L_{ij} \leftarrow (L_{ij} - L_{ji})/2\)
Divergent stress at finite strain:
Can occur for \(x \to 0\) (zero-temperature limit)
Detection: Monitor stress magnitude vs strain
Resolution: Regularize with \(x \geq x_{\text{reg}} \sim 0.01\)
Parameter Bounds for Consistency
The following bounds ensure well-posed GENERIC dynamics:
Parameter |
Constraint |
Physical Rationale |
|---|---|---|
\(x\) (noise temp) |
\(0.5 \leq x \leq 3\) |
Positive temperature; \(x > 3\) gives unphysical rapid relaxation |
\(G_0\) (modulus) |
\(G_0 > 0\) |
Elastic energy must be positive |
\(\tau_0\) (attempt time) |
\(\tau_0 > 0\) |
Microscopic timescale must be positive |
\(k\) (spring constant) |
\(k > 0\) |
Equivalent to \(G_0\) for normalized model |
Trap distribution |
\(\int \rho(E) \, dE = 1\) |
Proper normalization |
Thermodynamic Consistency Verification
from rheojax.models import SGRGeneric
model = SGRGeneric()
model.parameters.set_value('x', 1.3)
model.parameters.set_value('G0', 100.0)
model.parameters.set_value('tau0', 0.01)
# Verify thermodynamic consistency at a given state [sigma, lambda]
import numpy as np
state = np.array([0.0, 1.0]) # [stress, structural parameter]
consistency_report = model.verify_thermodynamic_consistency(state)
print(consistency_report)
Note
Numerical Precision Considerations
The GENERIC consistency checks require double precision (\(\sim 10^{-15}\) machine epsilon). Single precision implementations will routinely fail these checks due to floating-point accumulation errors. RheoJAX uses JAX’s float64 mode by default, ensuring adequate precision for thermodynamic verification.
Governing Equations¶
The GENERIC time evolution equation for the state variable \(\mathbf{z}\) is:
This structure guarantees:
First law: \(\dot{E} = \mathbf{L} \cdot \partial E/\partial \mathbf{z} \cdot \partial E/\partial \mathbf{z} + \mathbf{M} \cdot \partial E/\partial \mathbf{z} \cdot \partial S/\partial \mathbf{z} = 0\) (by degeneracy condition \(\mathbf{M} \cdot \partial E/\partial \mathbf{z} = 0\))
Second law: \(\dot{S} = \mathbf{M} \cdot \partial S/\partial \mathbf{z} \cdot \partial S/\partial \mathbf{z} \geq 0\) (by positive semidefiniteness of \(\mathbf{M}\))
For the SGR system, \(\mathbf{z} = P(E, l, t)\) is the distribution function, and the energy and entropy functionals are given in the theoretical foundation section.
Constitutive Equations¶
The GENERIC formulation reproduces all the linear and nonlinear constitutive equations of conventional SGR (see SGR Conventional (Soft Glassy Rheology) — Handbook), with the additional guarantee of thermodynamic consistency.
Linear Response (Oscillatory)¶
Same as conventional SGR:
- The GENERIC formulation allows verification that this response satisfies:
Kramers-Kronig relations (causality)
Fluctuation-dissipation theorem
Non-negative dissipation at all frequencies
Nonequilibrium Steady States¶
Under constant shear rate \(\dot{\gamma}\), the system reaches a nonequilibrium steady state (NESS) with constant entropy production:
where \(\sigma\) is the steady-state stress. This connects mechanical dissipation (\(\sigma \dot{\gamma}\)) to thermodynamic entropy production.
Rheological Analysis Equations¶
The GENERIC formulation validates the following constitutive laws for analyzing rheometer data. The control parameter is the noise temperature \(x\) (\(x=1\) is the glass transition).
Measurement Protocols¶
Steady Rotation (Flow Curve):
Stress Relaxation (Step Strain):
Creep (Step Stress):
Oscillatory Shear (SAOS):
Flow Curve (Rotation)¶
Fluid Regime (\(1 < x < 2\)):
Power-law shear thinning behavior.
Glass Regime (\(x < 1\)):
Herschel-Bulkley yield stress fluid behavior.
Stress Relaxation¶
Fluid Regime (\(1 < x < 2\)):
Power-law decay with exponent \(x-1\).
Glass Regime (\(x < 1\)):
Effectively permanent elasticity due to ergodicity breaking.
Creep Compliance¶
Fluid Regime (\(1 < x < 2\)):
Power-law growth with exponent \(x-1\).
Glass Regime (\(x < 1\), \(\sigma < \sigma_y\)):
Solid-like response below yield stress.
Oscillatory Shear (SAOS)¶
Fluid Regime (\(1 < x < 2\)):
Constant loss angle (phase angle) across frequency.
Glass Regime (\(x < 1\)):
Solid-like dominance with weak dissipation.
Scaling Summary Table¶
Measurement |
Regime |
Scaling Prediction |
|---|---|---|
Flow Curve |
Fluid (\(x > 1\)) |
\(\sigma \sim \dot{\gamma}^{x-1}\) |
Glass (\(x < 1\)) |
\(\sigma = \sigma_y + A\dot{\gamma}^{1-x}\) |
|
Relaxation |
Fluid (\(x > 1\)) |
\(G(t) \sim t^{-(x-1)}\) |
Glass (\(x < 1\)) |
\(G(t) \approx G_{\text{plateau}}\) |
|
Creep |
Fluid (\(x > 1\)) |
\(J(t) \sim t^{x-1}\) |
Glass (\(\sigma < \sigma_y\)) |
\(J(t) \to \text{const}\) |
|
Oscillation |
Fluid (\(x > 1\)) |
\(G', G'' \sim \omega^{x-1}\), \(\tan\delta = \tan((x-1)\pi/2)\) |
LAOS Extensions¶
To capture Large Amplitude Oscillatory Shear (LAOS) nonlinearities, the standard yielding rate \(\Gamma\) is modified with strain-dependent extensions.
Extended Master Equation¶
The LAOS yield rate includes a strain-enhancement factor \(h(\ell)\):
Model A: Strain-Activated Hopping¶
Enhances yielding at large absolute strains. Useful for fitting stress overshoots in startup flow:
- Parameters:
\(\gamma_c\): Critical strain (typically 0.1–1.0)
\(\nu\): Power-law exponent (typically 1 or 2)
Model B: Mechanical Fluidization¶
The noise temperature \(x\) becomes a dynamic variable driven by power input:
- Parameters:
\(\mu\): Fluidization susceptibility
This captures shear banding and viscosity bifurcations.
LAOS Observables¶
Fourier-Chebyshev Coefficients:
- Lissajous-Bowditch Figures:
Elastic projection (\(\sigma\) vs \(\gamma\)): Ellipse \(\to\) Parallelogram
Viscous projection (\(\sigma\) vs \(\dot{\gamma}\)): Ellipse \(\to\) Sigmoidal
Note
For LAOS simulations with strain-dependent extensions, use the PDE solver (Population Balance) rather than analytic solutions, which no longer exist in closed form.
Parameters¶
Name |
Symbol |
Units |
Bounds |
Notes |
|---|---|---|---|---|
|
\(x\) |
— |
\(0.5 \leq x \leq 3\) |
Effective noise temperature |
|
\(G_0\) |
Pa |
\(G_0 > 0\) |
Elastic modulus scale |
|
\(\tau_0\) |
s |
\(\tau_0 > 0\) |
Attempt time (inverse of \(\Gamma_0\)) |
What You Can Learn¶
The GENERIC formulation of SGR extends all insights from the conventional model with rigorous thermodynamic validation capabilities. The same parameters (\(x\), \(G_0\), \(\tau_0\)) appear, but with additional thermodynamic interpretation.
Parameter Interpretation¶
- :math:`x` (Effective Noise Temperature):
In the GENERIC framework, \(x\) is the configurational temperature that couples energy and entropy evolution.
For graduate students: \(x\) appears in the free energy \(F = E - xS\) as the Lagrange multiplier enforcing the constraint that reversible dynamics (Poisson bracket) conserve entropy while irreversible dynamics (friction matrix) conserve energy. The degeneracy conditions \(L \cdot \partial S/\partial z = 0\) and \(M \cdot \partial E/\partial z = 0\) ensure thermodynamic consistency. The glass transition at \(x = 1\) is where the entropy functional \(S[P]\) becomes unbounded, making equilibrium impossible.
For practitioners: Same interpretation as conventional SGR (\(x < 1\) is glass, \(1 < x < 2\) is power-law fluid, \(x \geq 2\) is Newtonian), but GENERIC provides additional validation: you can check that entropy production \(\dot{S}_{\text{prod}} \geq 0\) for all deformation histories. If this fails, your fitted parameters are thermodynamically inconsistent.
- :math:`G_0` (Plateau Modulus):
The elastic modulus scale, appearing in the energy functional \(E[P]\).
For graduate students: \(G_0\) sets the elastic strain energy contribution \(\frac{1}{2}k\int l^2 P(E,l)\,dE\,dl\) to the total energy. In GENERIC, the Poisson bracket generates affine deformation (\(\partial_t l = \dot{\gamma}\)), which is purely reversible (energy-conserving). The friction matrix generates yielding (\(l \to 0\)), which is dissipative (entropy-producing).
For practitioners: Same as conventional SGR. GENERIC adds the guarantee that the predicted \(G_0\) is consistent with thermodynamic stability (positive definite friction matrix \(M \geq 0\)).
- \(\tau_0\) (Attempt Time):
The microscopic timescale for dissipative transitions.
For graduate students: In GENERIC, \(1/\tau_0 = \Gamma_0\) appears in the friction matrix \(M\) as the rate coefficient for yield transitions. The detailed balance condition ensures that \(M\) satisfies Onsager reciprocity, connecting forward and reverse transition rates via the equilibrium distribution \(\rho(E)\).
For practitioners: Same as conventional SGR. GENERIC provides validation that \(\tau_0\) is consistent with equilibrium fluctuation-dissipation (FDT) relations if \(x\) equals thermal temperature.
Material Classification¶
x Range |
Thermodynamic State |
Typical Materials |
GENERIC Diagnostics |
|---|---|---|---|
:math:`x < 0.5` |
Deep non-equilibrium glass |
Highly aged colloidal gels, arrested emulsions, structural glasses |
Large \(\dot{S}_{\text{prod}}\) during flow, multiple \(F[P]\) minima, no normalizable \(P_{eq}(E)\) |
:math:`0.5 < x < 1` |
Marginal non-equilibrium glass |
Fresh colloidal suspensions, carbopol gels, foams |
Moderate \(\dot{S}_{\text{prod}}\), metastable \(F[P]\), equilibrium exists but unreachable |
:math:`1 < x < 1.5` |
Near-equilibrium fluid |
Dilute emulsions, soft foams, near-critical suspensions |
Low \(\dot{S}_{\text{prod}}\), single \(F[P]\) minimum, FDT approximately satisfied |
:math:`1.5 < x < 2` |
Equilibrium fluid |
Surfactant solutions, polymer-colloid mixtures |
\(\dot{S}_{\text{prod}} \to 0\) as \(\dot{\gamma} \to 0\), FDT satisfied, unique equilibrium state |
\(x \geq 2\) |
Thermalized fluid |
Dilute suspensions, simple liquids |
Exponential relaxation to equilibrium, full FDT, thermal noise dominates |
Thermodynamic Validation¶
Entropy Production Rate: Quantifies irreversibility during flow
Zero for quiescent aging: \(\dot{S}_{\text{prod}} = 0\) when \(\dot{\gamma} = 0\)
Positive during flow: Mechanical dissipation drives entropy production
Connection to Rayleighian: \(\dot{S}_{\text{prod}}\) can be derived from a variational principle
Free Energy Landscape: Compute the nonequilibrium free energy \(F = E - xS\):
Glass phase (:math:`x < 1`): Multiple metastable minima (aging attracts system to deeper states)
Fluid phase (:math:`x > 1`): Single global minimum (equilibrium state)
Barrier heights: Quantify activation energies for structural rearrangements
Fluctuation-Dissipation Verification: Check consistency between:
Storage modulus \(G'(\omega)\) (energy storage)
Loss modulus \(G''(\omega)\) (dissipation)
Thermal fluctuation spectrum (from \(S\))
Nonequilibrium Steady States (NESS)¶
Under constant shear rate, the system reaches a NESS with:
This connects the mechanical stress to the rate of configurational entropy production.
Interpretation: The effective temperature \(x\) acts as a “configurational temperature” that converts mechanical dissipation into entropy. Higher \(x\) means the system is more disordered, so the same dissipation produces less entropy.
Model Validation Beyond Rheology¶
The GENERIC formulation allows validation against:
Calorimetry: Specific heat related to \(c_0\) parameter
Structural probes: Trap distribution \(\rho(E)\) vs X-ray PDF analysis
Thermodynamic inequalities: Clausius-Duhem inequality satisfaction
Onsager reciprocity: Symmetry of dissipative couplings
When to use GENERIC: If you need to verify that your constitutive model satisfies fundamental thermodynamic laws, or if you want to compute entropy production and free energy evolution during complex deformation histories.
Validity and Assumptions¶
Same as conventional SGR, plus:
GENERIC structure: Satisfies all degeneracy conditions
Thermodynamic consistency: Guaranteed non-negative entropy production
Detailed balance: Transition rates satisfy equilibrium condition
Applications¶
Entropy Production Analysis¶
import numpy as np
from rheojax.models import SGRGeneric
model = SGRGeneric()
model.parameters.set_value('x', 1.3)
model.parameters.set_value('G0', 100.0)
model.parameters.set_value('tau0', 0.01)
# Compute entropy production under steady shear
# State vector: [sigma, lambda] where lambda is structural parameter
state = np.array([50.0, 0.8]) # stress=50 Pa, lambda=0.8
S_dot = model.entropy_production_rate(state)
print(f"Entropy production rate: {S_dot:.4f} J/(K·m³·s)")
# Verify second law
assert S_dot >= 0, "Second law violated!"
Free Energy Landscape¶
import numpy as np
from rheojax.models import SGRGeneric
model = SGRGeneric()
model.parameters.set_value('x', 0.8)
model.parameters.set_value('G0', 100.0)
model.parameters.set_value('tau0', 0.01)
# Compute free energy for a given state [sigma, lambda]
state = np.array([10.0, 0.5]) # stress=10 Pa, lambda=0.5
F = model.free_energy(state)
# For x < 1, the free energy landscape has multiple minima (glassy metastability)
Fluctuation-Dissipation Verification¶
from rheojax.models import SGRGeneric
import numpy as np
model = SGRGeneric()
model.parameters.set_value('x', 1.5)
model.parameters.set_value('G0', 100.0)
model.parameters.set_value('tau0', 0.01)
omega = np.logspace(-2, 2, 50)
# Compute complex modulus
G_star = model.predict(omega, test_mode='oscillation')
G_pp = np.imag(G_star)
# Fluctuation-dissipation: G'' relates to thermal fluctuations
# For SGR: G''(omega) ~ omega * S_omega / (x * omega)
# where S_omega is the strain fluctuation spectrum
Fitting Guidance¶
Same strategy as conventional SGR (see SGR Conventional (Soft Glassy Rheology) — Handbook), with additional thermodynamic validation steps:
Initial fit: Use NLSQ with oscillatory or flow curve data to estimate \(x, G_0, \tau_0\)
Check entropy production: Ensure \(\dot{S}_{\text{prod}} \geq 0\) for all flow rates
Bayesian with thermodynamic priors: Use informative priors based on calorimetric data if available
Troubleshooting: If entropy production is negative, the parameter values may be unphysical (e.g., negative \(\tau_0\) or \(G_0\)). Re-fit with tighter bounds.
Usage¶
Basic Example¶
import numpy as np
from rheojax.models import SGRGeneric
# Create GENERIC-consistent SGR model
model = SGRGeneric()
# Fit to oscillatory data
omega = np.logspace(-2, 2, 50)
model.fit(omega, G_star_data, test_mode='oscillation')
# Access thermodynamic functions (require a state argument)
E = model.internal_energy(state)
S = model.entropy(state)
F = model.free_energy(state)
print(f"Internal energy: {E:.2e} J/m³")
print(f"Entropy: {S:.2e} J/(K·m³)")
print(f"Free energy: {F:.2e} J/m³")
Thermodynamic Validation¶
import numpy as np
from rheojax.models import SGRGeneric
model = SGRGeneric()
model.parameters.set_value('x', 1.3)
model.parameters.set_value('G0', 100.0)
model.parameters.set_value('tau0', 0.01)
# Fit to data, then check entropy production for thermodynamic consistency
model.fit(omega, G_star_data, test_mode='oscillation')
state = np.array([50.0, 0.8]) # representative [sigma, lambda]
S_prod = model.entropy_production_rate(state)
print(f"Entropy production rate: {S_prod:.4f} (should be >= 0)")
Comparison with Conventional SGR¶
from rheojax.models import SGRConventional, SGRGeneric
import numpy as np
# Both models give identical rheological predictions
omega = np.logspace(-2, 2, 50)
conv = SGRConventional()
conv.parameters.set_value('x', 1.3)
conv.parameters.set_value('G0', 100.0)
conv.parameters.set_value('tau0', 0.01)
generic = SGRGeneric()
generic.parameters.set_value('x', 1.3)
generic.parameters.set_value('G0', 100.0)
generic.parameters.set_value('tau0', 0.01)
G_conv = conv.predict(omega, test_mode='oscillation')
G_generic = generic.predict(omega, test_mode='oscillation')
# Predictions match
np.testing.assert_allclose(G_conv, G_generic, rtol=1e-10)
# But SGRGeneric provides additional thermodynamic information
state = np.array([50.0, 0.8]) # representative [sigma, lambda]
S_prod = generic.entropy_production_rate(state)
print(f"Entropy production: {S_prod:.4f}")
See Also¶
SGR Conventional (Soft Glassy Rheology) — Handbook — Standard SGR model (simpler, same rheological predictions; start here)
Strain-Rate Frequency Superposition (SRFS) — Strain-Rate Frequency Superposition transform
Generalized Maxwell Model (Multi-Mode) — Alternative multi-mode approach for viscoelastic spectra
Fractional Maxwell Gel (Fractional) — Fractional models for power-law gels (alternative to SGR for \(x \sim 1.5\))
Related advanced models:
Shear Transformation Zone (STZ) — STZ theory (effective temperature formulation, similar aging physics)
../fluidity/fluidity_saramito_local — Fluidity models (phenomenological thixotropy)
API References¶
Module:
rheojax.modelsClass:
rheojax.models.SGRGeneric