FLAC3D Theory and Background • Constitutive Models

Uniaxial Compression and Extension Tests with Concrete Model

Note

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

In this example to test the Concrete model, a 1 m x 1 m single zone is generated, and the material properties are listed in Table 1.

Table 1: Concrete Model Properties

Parameter

Value

\(E\) (MPa)

3.14e4

\(\nu\)

0.18

\(f_t^m\) (MPa)

3.48

\(f_t^0\) (MPa)

3.48

\(G_t\) (MN/m)

40e-6

\(l_t\) (m)

0.0826

\(D_t^{half}\)

0.5

\(f_c^m\) (MPa)

27.6

\(f_c^0\) (MPa)

16.04

\(G_c\) (MN/m)

5690e-6

\(l_c\) (m)

0.0826

\(D_c^{peak}\)

0.4

\(f_b^0/f_c^0\)

1.16

\(a_p\)

0.2

\(s_0\)

0.2

The first test is the uniaxial compression loading. the numerical result is shown in Figure 1. The numerical model correctly duplicated the whole loading, which can be verified by the elastic slope (Young’s modulus), initial and peak compression yield stress.

../../../../../_images/modelconcrete-stress-strain-compression.png

Figure 1: Uniaxial stress vs. uniaxial strain in compression.

The second test is the uniaxial tension loading. the numerical result is shown in Figure 2. Since \(f_t^0=f_t^m\), the uniaxial tension stress vs train curve has immediate softening, which has been correctly simulated by the numerical model the whole loading.

../../../../../_images/modelconcrete-stress-strain-tension.png

Figure 2: Uniaxial stress vs. uniaxial strain in extension.

Data File

uniaxialCompression.dat

model new
model large-strain off
;
fish define parameters
    global young = 3.1e4  ; MPa
    global poisson = 0.18 
    global ft = 3.48      ; MPa
    global Gt = 40e-6     ; MN/m
    global Lt = 0.0826    ; m
    global fc = 27.6      ; MPa
    global ft = 3.48      ; MPa
    global Gc = 5690e-6   ; MN/m
    global Lc = 0.0826    ; m  
    global kbc0 = 1.16 
    global fc0 = 16.04    ; MPa
    global ft0 = 3.48     ; MPa 
    global dc = 800       ; dc
    global dt = 3000    ; dt
end
[parameters]
;
[global dim = 1]
zone create brick size 1 1 1 edge [dim]
zone face skin
[global gpsTop = list(gp.list)(gp.isgroup(::gp.list,"top"))]

zone cmodel assign concrete
zone property young [young] poisson [poisson]
zone property com-strength [fc] com-initial [fc0] com-energy-fracture [Gc] 
zone property com-length-reference [Lc] com-d [dc] 
zone property ten-strength [ft] ten-initial [ft0] tens-energy-fracture [Gt] 
zone property ten-length-reference [Lt] ten-d [dt]
zone property ratio-biaxial [kbc0] ten-recovery 0.2 
zone property dilation 20

zone face apply vel-z 0 range group 'bottom'

[zptr = zone.head]
[gptr = gp.near(dim,dim,dim)]
fish define szz
   strain  = gp.disp(gptr)->z / dim
   szz = list.sum(gp.force.unbal(::gpsTop)->z)/(dim*dim)
end

history interval 200
fish history name 'strain' strain 
fish history name 'szz' szz

zone face apply vel-z -1e-7 range group 'top'
model step [50000]

history export  'szz' vs 'strain' table 'stess-strain-compression'
table 'stess-strain-compression' export 'stess-strain-compression' truncate

model save 'uniaxial-Compression'

uniaxialTension.dat

model new
model large-strain off
;
fish define parameters
    global young = 3.1e4  ; MPa
    global poisson = 0.18 
    global ft = 3.48      ; MPa
    global Gt = 40e-6     ; MN/m
    global Lt = 0.0826    ; m
    global fc = 27.6      ; MPa
    global ft = 3.48      ; MPa
    global Gc = 5690e-6   ; MN/m
    global Lc = 0.0826    ; m  
    global kbc0 = 1.16 
    global fc0 = 16.04    ; MPa
    global ft0 = 3.48     ; MPa 
    global dc = 800       ; dc
    global dt = 3000      ; dt
end
[parameters]
;
[global dim = 1]
zone create brick size 1 1 1 edge [dim]
zone face skin
[global gpsTop = list(gp.list)(gp.isgroup(::gp.list,"top"))]

zone cmodel assign concrete
zone property young [young] poisson [poisson]
zone property com-strength [fc] com-initial [fc0] com-energy-fracture [Gc] 
zone property com-length-reference [Lc] com-d [dc] 
zone property ten-strength [ft] ten-initial [ft0] tens-energy-fracture [Gt] 
zone property ten-length-reference [Lt] ten-d [dt]
zone property ratio-biaxial [kbc0] ten-recovery 0.2
zone property dilation 20

zone face apply vel-z 0 range group 'bottom'

[zptr = zone.head]
[gptr = gp.near(dim,dim,dim)]
fish define szz
   strain  = gp.disp(gptr)->z / dim
   szz = list.sum(gp.force.unbal(::gpsTop)->z)/(dim*dim)
end

history interval 100
fish history name 'strain' strain 
fish history name 'szz' szz

zone face apply vel-z 2e-8 range group 'top'
model step [25000]

history export  'szz' vs 'strain' table 'stess-strain-tension'
table 'stess-strain-tension' export 'stess-strain-tension' truncate

model save 'uniaxial-Tension'