FLAC3D Theory and Background • Constitutive Models

Burgers Model

The Burgers model is composed of a Kelvin model and a Maxwell model connected in series (see Figure 1 for symbol definitions). The equations for the Kelvin sub-model are

(1)˙uk=Fdη1
(2)Fd=Fk1uk

Combining Equations (1) and (2) in finite-difference form,

(3)uk=uk+(ˉFk1ˉuk)Δtη1

where ˉF and ˉuk correspond to mean values of F and uk over the timestep, and the superscripts and denote new and old values, respectively. Hence,

(4)uk=uk+{F+Fk1(uk+uk)}Δt2η1

The equation for the Maxwell sub-model is

(5)˙um=˙Fk2+ˉFη2

which becomes

(6)um=um+FFk2+{F+F2η2}Δt

when expressed in finite-difference form. Finally, the Kelvin and Maxwell displacement increments combine to give the applied displacement increment,

(7)uu=umum+ukuk

The unknowns in Equations (4), (6), and (7) are uk, um, and F, and the known values are uk and F. The response of the Burgers model is dependent on past history; the state variable that records history information is uk, which has an evolution equation derived from Equation (4):

(8)uk=1A{Buk+(F+F)Δt2η1}

where:

(9)A=1+k1Δt2η1
(10)B=1k1Δt2η1

By combining Equations (6) and (7), and substituting uk from Equation (8), we obtain

(11)F=1X{uu+YF(BA1)uk}

where:

(12)X=1k2+Δt2η2+Δt2Aη1
(13)Y=1k2Δt2η2Δt2Aη1
../../../../_images/modelburgers-1.png

Figure 1: Schematic of the Burgers model with definition of variables.

FISH function for initialization of Kelvin strains

If the stresses are changed in a FLAC3D model with the zone initialize command, the internal Kelvin strains, eKij, will not be compatible with them, and movement will occur until the strains adjust. To avoid this incompatibility, the internal strains may be set to reflect the current values of stresses. The internal Kelvin strains, eKij, are available for user inspection and modification as zone property variables: strain-kelvin-xx, strain-kelvin-yy, etc. An example FISH function to perform this step is given below. This function should be invoked immediately following initialization of stresses by “[SetKStrains(::zone.list)]”.

The following FISH function can be used to set Kelvin strains according to stresses.

SetKStrains.dat

fish operator setKstrains(p_z)
    local iflag = 0
    if zone.model(p_z) = 'burgers' then
        iflag = 1
    endif
    if zone.model(p_z) = 'burgers-mohr' then
        iflag = 1
    endif
    if iflag = 1 then
        local kg2 = 2.0 * zone.prop(p_z, 'shear-kelvin')
        if kg2 > 0.0 then
            local sig0 = (zone.stress.xx(p_z) + zone.stress.yy(p_z) ...
                          + zone.stress.zz(p_z))/3.0
            zone.prop(p_z,'strain-kelvin-xx') = ...
                     (zone.stress.xx(p_z) - sig0) / kg2
            zone.prop(p_z,'strain-kelvin-yy') = ...
                     (zone.stress.yy(p_z) - sig0) / kg2
            zone.prop(p_z,'strain-kelvin-zz') = ...
                     (zone.stress.zz(p_z) - sig0) / kg2
            zone.prop(p_z,'strain-kelvin-xy') = ...
                     zone.stress.xy(p_z) / kg2
            zone.prop(p_z,'strain-kelvin-xz') = ...
                     zone.stress.xz(p_z) / kg2
            zone.prop(p_z,'strain-kelvin-yz') = ...
                     zone.stress.yz(p_z) / kg2
        endif
    endif
end

burgers Model Properties

Use the following keywords with the zone property (FLAC3D) or block zone property (3DEC) command to set these properties of the Burgers model.

burgers
bulk f

elastic bulk modulus, K

shear-kelvin f

Kelvin shear modulus, GK

shear-maxwell f

Maxwell shear modulus, GM

viscosity-kelvin f

Kelvin viscosity, nK

viscosity-maxwell f

Maxwell viscosity, nM

strain-kelvin-xx f

Kelvin strain, eKxx

strain-kelvin-yy f

Kelvin strain, eKyy

strain-kelvin-zz f

Kelvin strain, eKzz

strain-kelvin-xy f

Kelvin strain, eKxy

strain-kelvin-xz f

Kelvin strain, eKxz

strain-kelvin-yz f

Kelvin strain, eKyz

Notes

  • Only one of the two options is required to define the elasticity: bulk modulus K and shear modulus G, or Young’s modulus E and Poisson’s ratio v.
  • The creep behavior is triggered by deviatoric stress, while the volumetric behavior does not consider creep.
  • If the stresses are changed in a FLAC3D model with the zone initialize command, the internal Kelvin strains, eKij, will not be compatible with them, and movement will occur until the strains adjust. To avoid this incompatibility, the internal strains may be set to reflect the current values of stresses. The internal Kelvin strains, eKij, are available for user inspection and modification. An example FISH function is SetKStrain.f3fis. This function should be invoked immediately following initialization of stresses.