Contact Material Table

In large strain mode (model large-strain on), default contact constitutive models and properties must be defined for potential new contacts. Joint constiutive models and properties can be assigned to existing contacts with the block contact jmodel assign command and block contact property command respectively. For contacts that have not yet formed, the constitutive model and properties will be taken from the contact material table. The contact material table is a table of ranges and the associated joint consitutive models and properties.

An entry is added to the table with the block contact material-table command. The add keyword allows the user to specify an entry consisting of a range, a joint model and properties. The default keyword sets the joint model and properties for all new contacts not defined by another entry in the table. If large-strain is on, the default properties must be assigned. If not given, the default constitutive model is assumed to be mohr-coulomb.

A simple example is shown below. A slope is created composed of three different material types, defined by three different group names as shown in Figure 1. A single block slides down the slope. Different contact properties are assigned when different block groups come into contact as shown in the data file below. In this example, the default friction angle is 30^o, but the friction angle for contact between the sliding block and blocks with group sbase2 is 40^o. Since the slope angle is greater than 30^o and less than 40^o, the block slides initially, but then stops wne it overlaps the middle block with the group name sbase2. A plot of the x-velocity of the sliding block is shown in Figure 2

click to enlarge image in a new window

Figure 1: Model of the sliding block.

click to enlarge image in a new window

Figure 2: X-velocity history of the sliding block.

The full data file is below.

; test assiging of joint properties using the material table

model new

; create slope
block create brick -10 10
block cut joint-set dip 35 dip-dir 90
block delete range pos-z 0 10

; divide into three sections
block densify seg 3 1 1
block group 'base1' range pos-x -10 -3
block group 'base2' range pos-x -3 3
block group 'base3' range pos-x 3 10

; create block to slide down the slope
[tan35 = math.tan(35*math.degrad)]
block create prism face-1 -10,-2,[10*tan35] ...
                          -10,-2,[2+10*tan35] ...
                          -8,-2,[2+8*tan35] ...
                          -8,-2,[8*tan35] ...
                    face-2 -10,2,[10*tan35] ...
                          -10,2,[2+10*tan35] ...
                          -8,2,[2+8*tan35] ...
                          -8,2,[8*tan35] ...
                    group 'slider'

block fix range group 'base1' or 'base2' or 'base3'

block prop dens 2000

block contact material-table default prop ...
  stiff-norm 1e9 stiff-shear 1e9 fric 30

; assign different properties to new contacts that form between 'slider' and 'base2'
block contact material-table add jmodel mohr prop ...
  stiff-norm 1e9 stiff-shear 1e9 fric 40 ...
  range group-intersection 'slider' 'base2'
  
model gravity 0 0 -10

model large-strain on

block history vel-x pos -9 0 [1+10*tan35]
model cyc 20000