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

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

where \(\bar F\) and \(\bar u_k\) correspond to mean values of \(F\) and \(u_k\) over the timestep, and the superscripts \({}'\) and \({}^\circ\) denote new and old values, respectively. Hence,

The equation for the Maxwell sub-model is

which becomes

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

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

where:

By combining Equations (6) and (7), and substituting \(u'_k\) from Equation (8), we obtain

where:

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, \(e^K_{ij}\), 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, \(e^K_{ij}\),
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.

- bulk f
elastic bulk modulus, \(K\)

- shear-kelvin f
Kelvin shear modulus, \(G^K\)

- shear-maxwell f
Maxwell shear modulus, \(G^M\)

- viscosity-kelvin f
Kelvin viscosity, \(n^K\)

- viscosity-maxwell f
Maxwell viscosity, \(n^M\)

- strain-kelvin-xx f
Kelvin strain, \(e^K_{xx}\)

- strain-kelvin-yy f
Kelvin strain, \(e^K_{yy}\)

- strain-kelvin-zz f
Kelvin strain, \(e^K_{zz}\)

- strain-kelvin-xy f
Kelvin strain, \(e^K_{xy}\)

- strain-kelvin-xz f
Kelvin strain, \(e^K_{xz}\)

- strain-kelvin-yz f
Kelvin strain, \(e^K_{yz}\)

**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, \(e^K_{ij}\), 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, \(e^K_{ij}\), are available for user inspection and modification. An example FISH function is SetKStrain.f3fis. This function should be invoked immediately following initialization of stresses.

Was this helpful? ... | Itasca Software © 2023, Itasca | Updated: Nov 30, 2023 |