viscousHookeanElastic
Small-strain linear viscoelasticity: a generalised Maxwell (Prony series) model with an elastic volumetric response and a relaxing deviatoric response. The runtime type is:
viscousHookeanElastic
The dictionary layout common to all laws is described in the material models page.
User Guide
What it computes
A relaxed spring (EInfinity) acts in parallel with a list of Maxwell arms (E[i], relaxationTimes[i]). The law first forms the instantaneous modulus and relative moduli:
E0 = EInfinity + sum(E[i])
gammaInf = EInfinity/E0
gamma[i] = E[i]/E0
mu = E0/(2*(1 + nu))
lambdaInf = nu*EInfinity/((1 + nu)*(1 - 2*nu)) // plane strain / 3-D
lambdaInf = nu*EInfinity/((1 + nu)*(1 - nu)) // planeStress yes
k = lambdaInf + (2/3)*gammaInf*mu
At each integration point, with epsilon = symm(grad(D)) from the solid model and deltaT the time step:
s = 2*mu*dev(epsilon)
h[i] = exp(-deltaT/tau[i])*h[i]_0 + exp(-deltaT/(2*tau[i]))*(s - s_0)
sigma = k*tr(epsilon)*I + gammaInf*s + sum(gamma[i]*h[i])
following Simo and Hughes (1998), eq. 10.3.12. Only the deviatoric response relaxes; the bulk response k is the long-term one and constant.
With the Williams-Landel-Ferry (WLF) shift enabled, each relaxation time is multiplied by
aT = 10^(-C1*(T - Tref)/(C2 + (T - Tref)))
evaluated with the temperature T at the integration point.
The law is small-strain only; a nonlinear geometry solid model stops with an error.
Model options
| Entry | Required | Default | Description |
|---|---|---|---|
rho | yes | - | Density, [1 -3 0 0 0 0 0] |
EInfinity | yes | - | Relaxed modulus, [1 -1 -2 0 0 0 0] |
E | yes | - | List of Maxwell-arm moduli, in Pa |
relaxationTimes | yes | - | List of relaxation times, in s |
nu | yes | - | Poisson's ratio, dimensionless |
WilliamsLandelFerry | no | no | Shift relaxation times with T |
WilliamsLandelFerryCoeffs | with WLF | - | Sub-dictionary of WLF data |
WilliamsLandelFerryCoeffs contains:
| Entry | Required | Default | Description |
|---|---|---|---|
C1 | yes | - | First WLF coefficient, dimensionless |
C2 | yes | - | Second WLF coefficient, [0 0 0 1 0 0 0] |
Tref | yes | - | Reference temperature, [0 0 0 1 0 0 0] |
The following are fatal errors at construction:
EInfinitywithout pressure dimensions, ornunot dimensionless;EandrelaxationTimesof different lengths, or empty;- any
E[i]orrelaxationTimes[i]belowSMALL; nuat or above0.5(to withinSMALL).
E and relaxationTimes are plain scalar lists, without dimensions; the relaxation times are in the case's time unit.
With WilliamsLandelFerry yes, the law asks the framework for a live temperature input T. It is taken from a registered T field (for example one solved by a thermal solid model), from a case directory given under inputCaseDirectories in the law's dictionary, or from a T file in the current or initial time directory; if none is found the run stops. See the framework README for the lookup order.
Tangents and volumetric split
- Scalar tangent:
factor*2*mu + lambdaInf, andfactor*(4/3)*mufor the deviatoric scalar tangent, withfactor = gammaInf + sum(gamma[i]*exp(-deltaT/(2*tau[i]))). It depends on the time step. The WLF shift is not included in it. - Fourth-order tangent:
fourthOrderFiniteDifferenceonly. Asking for the analyticalfourthOrdertangent is a fatal error. - Volumetric split: no. The law cannot be used with
solvePressureEqnor with the mixed displacement-pressure formulations.
State variables
| Name | Type | Role | Description |
|---|---|---|---|
s | symmTensor | persistent | Instantaneous deviatoric stress |
h0, h1, … | symmTensor | persistent | Maxwell-arm internal stress |
There is one h<i> per entry of E. At each write time, for cell-centred solid models, each persistent variable is written as a volField named after it (s, h0, h1, …) for viewing. The restart data are written alongside as <material>_<topology>_<variable>, for example polymer_cellCentredIntegrationPointTopology_h0, together with a <material>_<topology>_integrationPoints file. To restart a run from a later time, set restart yes; in the solid model's coefficients dictionary from the start of the run.
Example
From the viscoTube tutorial:
planeStress no;
mechanical
(
polymer
{
type viscousHookeanElastic;
rho rho [1 -3 0 0 0 0 0] 7850;
EInfinity EInfinity [1 -1 -2 0 0 0 0] 39.58e+9;
nu nu [0 0 0 0 0 0 0] 0.33;
E (2.9318518519e9 5.8637037037e9
6.5966666667e9 18.3240740741e9);
relaxationTimes (30 300 3000 12000);
// Optional temperature shift
// WilliamsLandelFerry yes;
// WilliamsLandelFerryCoeffs
// {
// C1 C1 [0 0 0 0 0 0 0] 17.44;
// C2 C2 [0 0 0 1 0 0 0] 51.6;
// Tref Tref [0 0 0 1 0 0 0] 293.15;
// }
}
);
Migrating from the legacy law
regionNameis no longer read. The legacy law silently ignoredsolvePressureEqn; the solid model now refuses it for this law.nu = 0.5is now a fatal error; the legacy law accepted it and setlambdaandktoGREAT.- The update is always written on the total displacement gradient and its old-time value. The legacy law had a separate incremental form, based on
grad(DD)and the old-time total stress. - The WLF temperature is gathered by the framework from any of the sources above; the legacy law required a
Tfield at cells or at faces, matching the stress location. - The scalar tangent no longer drops
lambdawhen a field namedpexists. - The Maxwell-arm stresses are now written (
h0, …) and restartable; the legacyh,hf,sandsffields were neither read nor written. - The law now serves every integration-point location, and a fourth-order tangent is available by finite differences.
Tutorials
- viscoTube, whose regression tests also cover restart
References
- J.C. Simo and T.J.R. Hughes, Computational Inelasticity, Springer, 1998.