Stress Density Material

This command is used to construct a multi-dimensional stress density material object for modeling sand behaviour following the work of Cubrinovski and Ishihara (1998a,b). Note that as of January 2020 this material is still undergoing verification testing for more complex loading and initial conditions.

nDMaterial stressDensity $matTag $mDen $eNot $A $n $nu
        $a1 $b1 $a2 $b2 $a3 $b3 $fd $muNot $muCyc $sc $M $patm 
        < $ssl1 $ssl2 $ssl3 $ssl4 $ssl5 $ssl6 $ssl7 $hsl $pmin >
matTag

integer tag identifying material

mDen

mass density

eNot

initial void ratio

A

constant for elastic shear modulus

n

pressure dependency exponent for elastic shear modulus

nu

Poisson’s ratio

a1

peak stress ratio coefficient (etaMax = a1 + b1*Is)

b1

peak stress ratio coefficient (etaMax = a1 + b1*Is)

a2

max shear modulus coefficient (Gn_max = a2 + b2*Is)

b2

max shear modulus coefficient (Gn_max = a2 + b2*Is)

a3

min shear modulus coefficient (Gn_min = a3 + b3*Is)

b3

min shear modulus coefficient (Gn_min = a3 + b3*Is)

fd

degradation constant

muNot

dilatancy coefficient (monotonic loading)

muCyc

dilatancy coefficient (cyclic loading)

sc

dilatancy strain

M

critical state stress ratio

patm

atmospheric pressure (in appropriate units)

Optional steady state line parameters (default values shown for each, be careful with units)

ssl1

void ratio of quasi steady state (QSS-line) at pressure $pmin (default = 0.877)

ssl2

void ratio of quasi steady state (QSS-line) at 10 kPa (default = 0.877)

ssl3

void ratio of quasi steady state (QSS-line) at 30 kPa (default = 0.873)

ssl4

void ratio of quasi steady state (QSS-line) at 50 kPa (default = 0.870)

ssl5

void ratio of quasi steady state (QSS-line) at 100 kPa (default = 0.860)

ssl6

void ratio of quasi steady state (QSS-line) at 200 kPa (default = 0.850)

ssl7

void ratio of quasi steady state (QSS-line) at 400 kPa (default = 0.833)

hsl

void ratio of upper reference state (UR-line) for all pressures (default = 0.895)

pmin

pressure corresponding to $ssl1 (default = 1.0 kPa)

The material formulations for the stressDensity object are “PlaneStrain”


Code Developed by Saumyashuchi Das, University of Canterbury. Maintained by Chris McGann


General Information

This nDMaterial object provides the stress density model for sands under monotonic and cyclic loading as set forth by Cubrinovski and Ishihara (1998a,b). The original formulation for this model was applicable to plane strain conditions and this is the only currently available formulation.

Notes

Usage Examples

The following usage example provides the input parameters for dry pluviated Toyura sand (with initial void ratio e = 0.73) after Cubrinovski and Ishihara (1998b). The units of this analysis are Mg, kN, s, and m.

  1. mass density

set mDen 1.8

  1. atmospheric pressure

set patm 98.1

  1. stress density model parameters

set eNot 0.730 set A 250.0 set n 0.60 set a1 0.58 set b1 0.023 set a2 230.0 set b2 65.0 set a3 79.0 set b3 16.0 set fd 4.0 set muNot 0.22 set muCyc 0.0 set sc 0.0055 set M 0.607 nDMaterial stressDensity 1 $mDen $eNot $A $n $nu $a1 $b1 $a2 $b2 $a3 $b3 $fd $muNot $ muCyc $sc $M \(patm</p> <h3 id="references">References</h3> <p>Cubrinovski, M. and Ishihara K. (1998a) 'Modelling of sand behaviour based on state concept,' <em>Soils and Foundations,</em> 38(3), 115-127.</p> <p>Cubrinovski, M. and Ishihara K. (1998b) 'State concept and modified elastoplasticity for sand modelling,' <em>Soils and Foundations,</em> 38(4), 213-225.</p> <hr /> <h2 id="example_analysis">Example Analysis</h2> <p>Element test with pure shear loading starting from isotropic initial state of stress.</p> <p> ```tcl </p> <ol> <li>intended number of cycles in the test</li> </ol> <p>set nCycles 120</p> <ol> <li>shear strain increment for the test</li> </ol> <p>set dg 0.0001 set wg [expr 2.0*\)dg]

  1. max number of steps

set maxStep 20000

  1. initial confinement pressure (kPa)

set pNot -95.0

  1. max/min shear stress in the test (kPa)

set CSR 0.2 set maxShear [expr -\(CSR*\)pNot]

wipe

model BasicBuilder -ndm 2 -ndf 2

  1. Create nodes

node 1 0.0 0.0 node 2 1.0 0.0 node 3 1.0 1.0 node 4 0.0 1.0

  1. Create fixities

fix 1 1 1 fix 2 1 1 fix 3 1 1 fix 4 1 1

  1. atmospheric pressure

set patm 98.1

  1. mass density

set mDen 1.8

  1. steady state line void ratio

set ssl1 0.832 set ssl2 0.832 set ssl3 0.810 set ssl4 0.796 set ssl5 0.776 set ssl6 0.756 set ssl7 0.735

  1. hydrostatic state line void ratio

set hsl 0.852

  1. reference pressures for state lines

set p1 1.0

  1. stress density model parameters

set A 250.0 set m 0.60 set nu 0.20 set a1 0.592 set b1 0.021 set a2 291.0 set b2 55.0 set a3 98.0 set b3 13.0 set fd 4.0 set muNot 0.15 set sc 0.0055 set M 0.607

  1. initial void ratio

set emax 0.885 set emin 0.541 set Dr 0.54 set eNot [expr $emax - \(Dr*(\)emax-$emin)] set muCyc 0.0

  1. Create material

nDMaterial stressDensity 2 $mDen $eNot $A $m $nu $a1 $b1 $a2 $b2 $a3 $b3 $fd $muNot \(muCyc \ \)sc $M $patm $ssl1 $ssl2 $ssl3 $ssl4 $ssl5 $ssl6 $ssl7 $hsl $p1

nDMaterial InitStress 1 2 $pNot 2

  1. Create element

element SSPquad 1 1 2 3 4 1 PlaneStrain 1.0 0.0 0.0

  1. Create recorders

recorder Element -file stress.out -time stress recorder Element -file strain.out -time strain recorder Node -file disp.out -time -dof 1 2 disp

set dt 0.1

  1. Create analysis

constraints Penalty 1.0e18 1.0e18 algorithm Linear numberer RCM system ProfileSPD integrator LoadControl \(dt analysis Static</p> <p>set dMax [expr 0.6/\)wg] eval “timeSeries Path 400 -time {0 0.1 0.2 300.2} -values {0 0 0 $dMax} -factor 1.0” pattern Plain 400 400 { sp 3 1 $wg sp 4 1 \(wg } analyze 1</p> <p>setParameter -value 1 -ele 1 materialState</p> <p>analyze 1</p> <ol> <li>counter for max number of steps</li> </ol> <p>set count 0 set cCount 0 set cyc 1 puts "Beginning of Cycle 1"</p> <ol> <li>loop through the total number of cycles</li> </ol> <p>for {set i 1} {\)i <= [expr 2*\(nCycles]} {incr i} { if {\)cCount == 2} { set cyc [expr $cyc+1] puts “Beginning of Cycle \(cyc" set cCount 0 }</p> <ol> <li>loop within each cycle</li> </ol> <p>for {set j 1} {\)j < 5000} {incr j} {

  1. abort if count is greater than max number of steps

if {$count >= $maxStep} {break}

  1. analyze single step and get the current stress

analyze 1 set count [expr $count + 1]

  1. get stress from element

set stress [eleResponse 1 stress]

  1. shear stress is component 2

set tau [lindex \(stress 2]</p> <ol> <li>signal change in loading direction if needed</li> </ol> <p>if {[expr abs(\)tau)] >= $maxShear} {

  1. get strain from element

set strain [eleResponse 1 strain] set gamma [lindex $strain 2] puts “direction change required: tau = $tau; gamma = $gamma”

  1. get current displacements of shearing nodes

set f [expr 2.0[nodeDisp 3 1]] set b [expr 2.0[nodeDisp 4 1]]

  1. puts “current displacement of front row is $f”
  2. puts “current displacement of back row is \(b"</li> </ol> <ol> <li>get number of steps required to reach current disp from zero</li> </ol> <p>set nStep [expr round(abs(\)b/$wg))]

    1. puts “there are $nStep steps needed to get back to neutral loading”
    1. get current time

    set cTime [getTime]

    1. puts “current time is $cTime”
    2. set an end time for the load patterns

    set zTime [expr $cTime + \(nStep*\)dt] set eTime [expr \(zTime + 100.0*\)nStep]

    1. puts “end time for the new load pattern is \(eTime"</li> </ol> <p>remove loadPattern [expr 400+\)i-1]

      eval “timeSeries Path [expr 400+\(i] -time {\)cTime \(eTime 1e10} -values {1 -1000 -1000}" pattern Plain [expr 400+\)i] [expr 400+$i] { sp 3 1 $b sp 4 1 $b } set cCount [expr $cCount + 1] break } } }

      wipe ```

Back to top