FLAC3D Theory and Background • Constitutive Models

Multi-Zone Confined Compression Test with IMASS Model


To view this project in FLAC3D, use the menu command Help ► Examples…. Choose “Imass/ ConfinedCompression” and select “ConfinedCompressionMultiZones.prj” to load. The project’s main data file is shown at the end of this example.

The overall behavior of a system of zones is dependent on but different than the behavior of each individual zone comprising that system under a similar stress path. In this example a confined compression test is performed on a prismatic specimen with a height-to-width ratio of 2:1 and a width of 40 m. The model is constructed with structured mesh, with edge lengths fixed at 1.5 m. A 1 MPa confinement is applied to the specimen prior to loading. The stress-strain response of the specimen is shown in Figure 1. At 0.5% axial strain the specimen behavior is characterized just past post-peak strength but well above its ultimate strength envelope. At this point strain is localized in some zones and shear bands are formed as shown by the maximum shear strain (radius of Mohr strain circle, or half of the difference between the maximum and minimum principal strains) in Figure 2 and accumulated plastic shear strain in Figure 3. In Figure 4 the corresponding contour of sloss is shown. Most of the zones forming the shear bands are in the close vicinity of the post-peak envelope at this stage of the test.


Figure 1: Stress-strain response of the specimen.


Figure 2: Contour of maximum shear strain indicating formation of shear bands on a cross section through middle of the specimen.


Figure 3: Contour of accumulated plastic shear strain indicating formation of shear bands on a cross section through middle of the specimen.


Figure 4: Contour of sloss on a cross section through the middle of the specimen.

Data File


model new
model large-strain off
model configure imass

fish define size_input
  global max_x = 40.
  global max_y = 40.
  global max_z = 80.
  global nzone = 1.5 ; zone size
  global nzxe = int(max_x/nzone)     
  global nzye = int(max_y/nzone) 
  global nzze = int(max_z/nzone)
zone create brick point 0 0 0 0 point 1 [max_x] 0 0 ...
                  point 2 0 [max_y] 0 point 3 0 0 [max_z]...
                  size [nzxe] [nzye] [nzze] group 'rock'
zone face skin

zone cmodel assign imass

[global conf = -1e6] ; confinement must be negative or zero
[global appliedVel = 1.e-5] ; loading velocity

zone initialize stress xx [conf] yy [conf] zz [conf] xy 0 xz 0 yz 0
zone face apply velocity-z [ appliedVel] range group 'Bottom'
zone face apply velocity-z [-appliedVel] range group 'Top'
zone face apply stress-normal [conf] range group 'South' or 'North'
zone face apply stress-normal [conf] range group 'West' or 'East'

[global gps_top = list(gp.list)(gp.isgroup(::gp.list,'Top'))]
[global area = max_y*max_x]
fish define stress_top
  local force_top = list.sum(gp.force.unbal(::gps_top)->z)
  global stress_top = force_top/area

[global gp_top1 = gp.near(max_x,max_y,max_z)]
[global zlength = max_z]
fish define strain_zz
  global strain_zz = 100.0*2.0*gp.disp.z(gp_top1)/zlength

zone initialize density 2600
zone property in_stren_gsi 70.0
zone property in_stren_ucsi 100.0e6
zone property in_stren_mi 15.0
zone property in_mod_youngintact 40e9
zone property in_weak_multecrit 0.25
zone property flag_bulking_denadj on

history interval 100
fish history stress_top
fish history strain_zz
model cycle 20000

model save 'confinedCompressionMultiZones'