FLAC3D Theory and Background • Constitutive Models

# Multi-Zone Confined Compression Test with IMASS Model

Note

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 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

ConfinedCompressionMultiZones.dat

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)
end
[size_input]
;
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

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
end

[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
end

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

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

model save 'confinedCompressionMultiZones'