FLAC3D Theory and Background • Fluid-Mechanical Interaction

Input Instructions for Fluid-Flow Analysis

Fluid Commands

The following commands are provided to run fluid problems. There is no fluid command. The commands used for fluid analysis take the form of fluid-related keywords on the commands used for standard mechanical analysis. The command model configure fluid must be the first fluid command given before any other commands for fluid analysis are issued. model configure fluid can be specified at any stage of a FLAC3D analysis.

Table 1: Fluid Commands

geometry generate from-faces fluid

model configure fluid

model history fluid

model results interval fluid

model solve fluid

model fluid

zone apply well

zone apply-remove well

zone face apply discharge

zone face apply leakage

zone face apply pore-pressure

zone face apply-remove discharge

zone face apply-remove leakage

zone face apply table fluid

zone face group fluid

zone gridpoint fix pore-pressure

zone gridpoint fix well

zone gridpoint free pore-pressure

zone gridpoint free well

zone gridpoint initialize pore-pressure

zone history property-fluid

zone list profile property-fluid

zone relax excavate table fluid

zone relax modify table fluid

zone results model-fluid

zone fluid

zone fluid zone-based-pp

zone water

Fluid FISH Variables

The following scalar variables are available in a FISH function to assist with fluid analysis.

Table 2: Fluid FISH Functions

gp.biot.modulus

gp.pp

gp.pp.fix

gp.flow

gp.fluid.modulus

gp.fluid.tension

gp.sat

zone.flux

zone.fluid.model

zone.fluid.prop

zone.fluid.ratio

zone.fluid.stress.normal

zone.fluid.time.total

zone.fluid.timestep

Zone-Based Pore Pressure

A feature that allows you to set zone based pore pressure using FISH has been added to FLAC3D. This allows for the rapid import of pore pressures from an external source. The stress increment resulting from this zone-based pore pressure change is also incorporated. This feature has been implemented strictly for calculating mechanical changes to a model that result from changes in pore pressure in a zone. Fluid flow should not to be active in FLAC3D when this zone-based pore pressure feature is active.

This feature assumes that FLAC3D is configured for fluid calculations (model configure fluid) and that fluid flow calculations are set to off (zone fluid active off).

Zone-based pore pressures are stored in a “fluid-zone” which is enabled by the model configure fluid command. The stress change generated by a change in zone-based pore pressure is determined by the following equations:

(1)\[\begin{split}\begin{matrix} \sigma_{11}^{new} = \sigma_{11}^{old} - \alpha \Delta p \\ \\ \sigma_{22}^{new} = \sigma_{22}^{old} - \alpha \Delta p \\ \\ \sigma_{33}^{new} = \sigma_{33}^{old} - \alpha \Delta p \\ \end{matrix}\end{split}\]

where \(\alpha\) is the Biot coefficient, a material property of a fluid model (the default is 1.0).

The command to signal the use of zone-based pore pressure to FLAC3D is zone fluid zone-based-pp on. When this command is used, the FISH function zone.pp will allow you to retrieve and assign pore pressure to a zone. Note that when zone fluid zone-based-pp on, FLAC3D keeps track of the last two pore pressures that were assigned to this zone with the zone.pp FISH function. This allows the computation of a pore pressure change (\(\Delta p = p^{new} - p^{old}\)). Each time a pore pressure is assigned to a zone with the zone.pp FISH function, the previously stored pore pressure becomes \(p^{old}\) and the newly assigned pore pressure becomes \(p^{new}\).

If zone fluid zone-based-pp is initially set to off, FLAC3D will use gridpoint-based pore pressures in its calculations (this is FLAC3D’s default mode).

If a zone fluid zone-based-pp on command is encountered, it automatically initializes the zone-based pore pressure (both \(p^{new}\) and \(p^{old}\)) with the average gridpoint-based pore pressures.

If zone fluid zone-based-pp was on and a zone fluid zone-based-pp off command is issued, then the zone-based pore pressures are not used to initialize the gridpoint-based pore pressures with the zone-based pore-pressures.

The commands zone gridpoint fix pore-pressure and zone gridpoint initialize pore-pressure do not alter the zone-based pore pressures. They only work with gridpoint-related quantities. Plotting “Zone -> Color by Contour -> Value: Pore Pressure” shows only gridpoint-related quantities. Instead, the zone-based pore pressure can be stored in zone.extra and then can be plotted through “Zone -> Color by Contour -> Extra; Source Zone.”

The following is one modeling sequence demonstrating the use of this feature.

  1. Create your model geometry (zones) — remembering model configure fluid.

  2. Assign mechanical model and properties to zones.

  3. Assign fluid model and Biot coefficient (1 by default) to zones.

  4. zone fluid active is set to off; zone mechanical active is set to on and zone fluid zone-based-pp is set to on.

  5. Assign a baseline pore pressure to each zone. Use the zone.pp function to do this.

  6. Assign updated pore pressure to each zone. Use the zone.pp function to do this.

  7. Solve to mechanical equilibrium.

A simple example case is provided in “\datafiles\Fluid\ZoneBasedPorePressure”; the main datafile is listed below.

ZoneBasedPorePressure.dat:

model new
model large-strain off
model configure fluid
;
zone create brick size 2 2 2 point 1 (1 0 0) point 2 (0 1 0) point 3 (0 0 1)
zone gridpoint fix velocity-x range union position-x 0 position-x 1
zone gridpoint fix velocity-y range union position-y 0 position-y 1
zone gridpoint fix velocity-z range position-z 0
; mechanical model
zone cmodel assign elastic
zone property density 1.0 bulk 400 shear 300
model gravity 0 0 -1
; fluid flow model
zone fluid cmodel assign isotropic
zone fluid property biot 1.0
;
model fluid active off
model mechanical active on
zone fluid zone-based-pp on
;
program call 'fishFunctions'
;
; read baseline pp from file basetp.dat and store in zones
[_baseline]
; read updated pp and temp from file updatetp.dat and store in zones
[_update]
;
model solve
; store zone-based pp to zone extra
[_pt2extra]
;
model save 'zonebased'
program return