Professional Documents
Culture Documents
Preparing Incremental Driver Input
Preparing Incremental Driver Input
A.Niemunis
1 Introduction
The purpose of IncrementalDriver is testing of routines describing constitutive models ∆T = f(∆, . . . ). The con-
stitutive routines are external (not a part of IncrementalDriver) and they should be written according to Abaqus
R
standard conventions for umat. Being given all state variables and a strain increment ∆, umat calculates a strain-
controlled increment ∆T = f(∆, . . . ) and updates the state T+= ∆T; . . . . Moreover umat should return the Jacobian
matrix (∂T/∂) necessary for equilibrium iteration. IncrementalDriver can apply series of such increments following
a prescribed strain path. In each increment it invokes umat for this purpose. IncrementalDriver can also follow stress
paths or mixed paths calling umat possibly many times within a single increment in an iterative process. This procedure
is similar to equilibrium iteration. The prescribed components of strain increment or strain increment are termed the
load and the calculated increments are called the response of the material.
IncrementalDriver is a Fortran90 project which consists of the following files
incrementalDriver.f
usolve.f compile
aba_param.inc −→ incrementalDriver.exe
umat.f
niemunis_tools_lt.f
After compilation the resulting program needs three input files and produces a single output file. The name of the output
file should be specified in the input file test.inp
initialConditions.inp
incrementalDriver.exe
parameters.inp −→ outputfile.out
test.inp
The above default names of the input files can be overridden by the command-line parameters. This example keeps the
defaults
incrementalDriver test=test.inp param=parameters.inp ini=initialconditions.inp out=x.out verbose=true
restricts the screen output during calculation. All command-line parameters of incrementalDriver are optional.
verbose=false
They may appear in any order. Spaces are treated as separators between the arguments.
1
• Strings in input must not have apostrophes. They should start from the first column (no preceding spaces). The
asterisk is the first character of each keyword. The capital letters are important in the keywords.
• Only spaces can be used as separators of data in a single line (no commas or semicolons)
is name character(len=260) of the output file. If the character # is encoutered then the portion before # is interpreted
as the name of the output file and the portion after # is copied into the output file as the first line (=heading). The
output file name is obligatory and there is no default. The output file name read from test.inp can be overridden by
anyName.out in the command line if the argument out=anyName.out appears in the command line of incrementalDriver. This
may be useful for writing scripts. The heading (i.e. the text after #) cannot be overridden.
The prescribed components deltaLoad of ”generalized load” and time interval deltaTime pertain to the whole step and
need to be apportioned to individual increments, usually dividing deltaLoad by ninc. Depending on the flag ifstress(i)
the respective (i-th) component of prescribed strain or stress increment is prescribed as ddstress(i) = deltaLoad/ninc
or strain increment dstran(i) = deltaLoad/ninc.
The required number of iterations maxiter is defined a priori and kept constant for all increments in a given step.
The time interval for a given step may be of importance for example in rate dependent constitutive models. The load
components may be defined using different components of stress and strain (work - conjugated)
2
• *Cartesian T11 , T22 , T33 , T12 , T13 , T23 and 11 , 22 , 33 , 12 , 13 , 23
• *Roscoe p, q, z, T12 , T13 , T23 and v , q , z , 12 , 13 , 23
with:
p = −(T11 + T22 + T33 )/3, q = −(T11 − 21 T22 − 21 T33 ), z = −(T22 − T33 )
v = −(11 + 22 + 33 ), q = − 32 (11 − 21 22 − 12 33 ), z = −(22 − 33 )/2,
√ q √
P = −(T11 + T22 + T33 )/ 3 , Q = − 23 (T11 − 21 T22 − 12 T33 ), Z = −(T22 − T33 )/ 2,
√ q √
P = −(11 + 22 + 33 )/ 3, Q = − 23 (11 − 21 22 − 12 33 ), Z = −(22 − 33 )// 2
The change within
Pn theHstep of the Hencky strain = ln U is applied in ninc equal increments ∆. In a 1D we would have
= ln H
H0
n
= i=1 ln i
Hi−1 so equal strain increments ln HHi−1
i
= const do not imply equal increments of displacement.
In the current version of the program there is no convergence criterion. The fixed number maxiter of
equilibrium iterations is carried out irrespectively of convergence. After the last equilibrium iteration the next
load increment is applied, no matter whether the previous iteration was successful (small out of balance stress)
or not. Controlling stress components we should carefully compare the desired stress path with the one indeed
applied to the material.
The loading prescribed in test.inp may demand a stress increment which cannot be achieved by the material (e.g.
going outside the yield surface despite softening). In this case the equilibrium iteration in incrementalDriver
cannot achieve the required state. The calculation will not be interrupted, however. Insufficient accuracy within
the stress controlled regime may also be caused by too small number maxiter of iterations. The number of
equilibrium iterations should be increased for inaccurate Jacobian matrices in umat.f and for large increments.
Equal increments of displacement can be also imposed by *DeformationGradient, for example:
∗DeformationGradient
n i n c m a x i t e r d e l t a T i m e ! number o f i n c r e m e n t s , max . number o f EI ( 1 s u f f i c e s h e r e ) and t h e s t e p t i m e i n t e r v a l
deltaLoad (1) ! i f s t r e s s f l a g i s a u t o m a t i c a l l y 0 (= s t r a i n −l i k e ) and t h e a x e s a r e ∗Cartesian
deltaLoad (2)
...
deltaLoad (9)
n o
This example defines nine components of the deformation gradient F̆11 , F̆22 , F̆33 , F̆12 , F̆21 , F̆13 , F̆31 , F̆23 , F̆32 between
1
the the beginning of the step and the end of the step. The ninc equal increments are calculated with ∆F = n (F − 1)
wherein ∆Li denotes either the increment of stress ddstress(i) or the increment of strain dstran(i), depending on the
value of ifstress(i) for the i-th component. Other variables are
deltaTime = the period T so that ω̇ = 2*Pi/deltaTime
∆t = dtime = deltaTime/ninc
Ai = deltaLoadCirc(i) = amplitude
3
Bi =deltaLoad(i)/ninc = linear shift
t = time(1) + dtime/2 ! step time in the middle of the increment
(0)
ωi = phase0(i)
The change of i-th stress component within the step is denoted as sdi. The change of j-th strain component within the
step is denoted as edj. The restrictions have the formal structure
Mt · ∆T + Me · ∆ = m (2)
t e
whereinPall components
P of M , M and m are known. The k-th restriction with k = 1, . . . 6 should be input as a separate
t e
line : Mki sdi + Mkj edj = mk with sum over complementary indices i, j from 1 to 6. The parsing abilities of
i j6=i
IncrementalDriver are very limited. Here are some formal rules:
• The input line cannot be longer than 120 characters.
• No brackets (), no exponents ** or divisions / may appear.
• An index number at components sd1,sd2,sd3,sd4,sd5,sd6,ed1,ed2,ed3,ed4,ed5,ed6 may appear at most once in
a restriction (at a strain or at a stress increment), i.e. one cannot write sd1 + sd1 = 0.0d0. Lower case is obligatory
for sd and ed.
• Each component constitutes a summand and can be preceded by a single factor, e.g. 9.0d-4*sd1 but not 3*3.0d-4*sd1 and
not sd1*3.14. Summands without stress or strain components must be delegated to the RHS, i.e. sd1 + 1.0 + sd2 = 5.0
should be rewritten as sd1 + sd2 = 4.0 .
• Only numerical coefficients are allowed, i.e. only 4.0 *sd1 = 1.0 instead of two lines t = 4 and t*sd1 = 1.0.
• In all multiplications the asterisk * is obligatory (i.e. not 3.0 sd3 = 2.0 but 3.0*sd3 = 2.0 ).
• The summands are separated by + or -.
• The spaces are ignored (not inside numbers, of course).
• There must be just a single constant value in each restriction. It must appear on the right-hand side of the restriction
and can be preceded by -. No multiplication on the right-hand side is allowed.
The end-of-line comments must begin with !. Exactly 6 lines with restrictions must be input.
4
4.5 Repetition of a group of steps
The keyword *Repetition introduces a group of nSteps which will be repeated nRepetitions times. Each step should
be defined according to its own syntax. Exactly nSteps steps must be defined. Often nSteps is set to 2 in order to
describe a simple stress (or strain) cycle. There is no end-of-repetition-loop statement so the next steps (beyond the
position nRepetitions ) will be executed just once unless wrapped in another *Repetition.
∗Repetition
nSteps nRepetitions
....
. . . . ! h e r e f o l l o w n S t e p s p r e c e d e d by t h e i r own keywords
...
For 1000 undrained triaxial stress cycles with the Amplitude q ampl = 10 kPa and with 1Hz we can write:
a saw-like version with *LinearLoad or a harmonic version or a saw-like with predefined shearing
*LinearLoad ∗Repetition ∗TriaxialUq
10 10 0.25 1 1000 10 10 1 . 0
*Roscoe ∗CirculatingLoad 10.0
0 0 40 10 1.0 ∗Repetition
1 10 ∗Roscoe 2 1000
0 0 0 0 0 0 ∗TriaxialUq
0 0 1 10 0 0 20 10 0.5
0 0 0 0 0 0 −20.0
0 0 0 0 0 0 ∗TriaxialUq
*Repetition 0 0 0 0 20 10 0.5
2 1000 0 0 0 0 20.0
*LinearLoad ∗TriaxialUq
20 10 0.5 10 10 0.2
*Roscoe −10
0 0
1 -20
0 0
0 0
0 0
0 0
*LinearLoad
20 10 0.5
*Roscoe
0 0
1 20
0 0
0 0
0 0
0 0
*LinearLoad
10 10 0.25
*Roscoe
0 0
1 -10
...
Several one-line steps have been predefined in incrementalDriver for the convenience of geotechnical users. These are:
*OedometricE1, *OedometricS1, *TriaxialE1, *TriaxialS1, *TriaxialUEq, *TriaxialUq, *PureRelaxation,
*PureCreep, *UndrainedCreep
These paths define the principal stresses / strains assuming x1 -axial symmetry of the applied components. The material
response depends on umat and it need not be axisymmetric, of course. The shear components of strain are prescribed as
constant
∗OedometricE1
n i n c m a x i t e r dtime
ddstran (1) // l a t e r a l strain i s assumed c o n s t a n t
∗OedometricS1
n i n c m a x i t e r dtime
ddstress (1) // l a t e r a l strain i s assumed c o n s t a n t
∗TriaxialE1
ninc maxiter dtime
ddstran (1) // l a t e r a l stress i s assumed c o n s t a n t
∗TriaxialS1
n i n c m a x i t e r dtime
ddstress (1) // l a t e r a l stress i s assumed c o n s t a n t
5
∗TriaxialUEq
ninc m a x i t e r dtime
ddstran (2) // volume = c o n s t a n t , Roscoe ’ s D e l t a e p s i l o n q is applied
∗TriaxialUq
ninc maxiter dtime
ddstress (2) // volume = c o n s t , Roscoe ’ s D e l t a q i s applied
∗PureRelaxation
ninc maxiter dtime
∗PureCreep
ninc m a x i t e r dtime
∗End // can be u s e d t o t e r m i n a t e t h e c a l c u l a t i o n