fracture template create command

Syntax

fracture template create s keyword ...

Primary keywords:

dip-direction-limits    dip-limits    orientation    position    size    size-limits

Create a fracture generation template. The name of the template is s. A fracture generation template is a set of statistical parameters used to generate fractures with the fracture generate command. These parameters are the size distribution, the position distribution and the orientation distribution. Once fractures have been generated, an association may exist between the fracture generation template and the generated fractures. Fracture generation templates can also be output to a file to be imported and reused (see the fracture export and fracture import commands).

By default, a fracture generation template has the following properties: uniform fracture positions, uniform orientations (dip between 0 and 180 degrees in 2D; dip between 0 and 90 degrees, dip direction between 0 and 360 degrees in 3D) and sizes obeying a negative power-law distribution with exponent 4 and with minimum (maximum) size 1.0 (∞), respectively.

A default fracture generation template is always present and its state is saved and restored with the model state. This default fracture generation template is used as the basis to generation fractures (i.e., with the fracture generate command) when no template is specified. See the fracture template modify-default command for details on how to modify the default fracture generation template.

dip-direction-limits fmin fmax (3D only)

Specify that the fracture dip directions must fall in the range [fmin, fmax] degrees. By default, fmin = 0 and fmax = 360.

dip-limits fmin fmax

Specify that the fracture dips must fall in the range [fmin, fmax] degrees. By default, {fmin = 0 and fmax = 180, in 2D; fmin = 0 and fmax =90, in 3D}.

orientation keyword

Define the generation rule for fracture orientations.

bootstrapped s

The dip {and dip direction, in 3D} are bootstrapped from the file s. This must obey the bootstrapped distribution file format given in DFN-Related File Formats.

dips s (3D only)

The dip and dip direction are bootstrapped from the DIPS file s. This file must obeys the DIPS file format given in DFN-Related File Formats.

fish s a1a2...

The fish keyword is used to get values from a user-defined FISH function. The function s is followed by the function arguments (any number). The function must return a {float, in 2D; 2 dimensional vector, in 3D}.

fisher fdip fdipdir fk (3D only)

The dip and dip direction are drawn from a Fisher distribution. One specifies the dip (fdip), the dip direction (fdipdir), and \(\kappa\) (fk), in that order.

gauss f1 f2 ...

The dip {and dip direction, in 3D} are drawn from Gaussian distributions. In 2D, two additional parameters are required, specifying the mean and standard deviation of the dip distribution. In 3D, four additional parameters are required: mean and standard deviation for the dip distribution, followed by mean and standard deviation for the dip-direction distribution.

uniform

The dip {and dip direction, in 3D} are drawn from a uniform distribution.

Note

In 2D, dip is the clockwise angle measured from the positive \(x\)-axis in degrees. In 3D, dip is the angle from the dip direction projected on the \(xy\)-plane to the fracture surface measured in the negative \(z\)-direction. Dip direction in 3D is measured in a clockwise fashion from the positive \(y\)-axis.

position keyword

Define the generation rule for fracture position.

bootstrapped s

The position is bootstrapped from the file s. This must obey the bootstrapped file format given in DFN-Related File Formats for the required dimension.

fish s a1a2...

The fish keyword is used to get values from a user-defined FISH function. The function s is followed by the function arguments (any number). The function must return a vector.

gauss fpx fsx fpy fsy fpz fsz

The position is drawn from a Gaussian distribution. Each mean direction is followed by the standard deviation in that direction. In 2D only four values are given.

uniform

The position is drawn from a uniform distribution.

size keyword

Define the distribution of fracture sizes. The fracture size is defined as the {fracture length, in 2D; disk diameter, in 3D}.

bootstrapped s

The size is bootstrapped from the file s. This must obey the 1D bootstrapped file format given in DFN-Related File Formats.

fish s a1a2...

The fish keyword is used to get values from a user-defined FISH function. The function s is followed by the function arguments (any number). The function must return a float.

gauss f1 f2

The size is drawn from a Gaussian distribution with mean f1 and standard deviation f2.

power-law f

Negative power-law distribution with exponent f.

uniform

The size is drawn from a uniform distribution.

size-limits fmin fmax

Fracture size limits must fall within the range [fmin, fmax]. By default, fmin = 1.0 and fmax = +∞. Fracture size is defined as the {length, in 2D; diameter, in 3D}.

Usage Example

The following example illustrates how the fracture template create command can be used to build a simple template and generate one realization. Here, the template defines a power-law distribution for fracture sizes with an exponent of 3.5 uniform positions and a fisher distribution for orientations.

model new
model random 10000
model domain extent -5 5 -5 5 -5 5 
;Create a fracture template
fracture template create 'example' orientation fisher 60 250 100 ...
                  position uniform size power-law 3.5 size-limits 0.5 10
;Generate fractures using the template
fracture generate template 'example' dfn 'realization_1' fracture-count 300
;Create more fractures using this template
fracture generate template 'example' dfn 'realization_2' mass-density 1
program return 

The following example illustrates how the fracture template create command can be used to build a tuned template and generate one realization. Here, fracture orientations and sizes are drawn from user-defined distributions. The orientation distribution is defined by the fish function d2uniform and the size distribution by the fish function lognormallaw.

model new
model random 10000
model domain extent -5 5 -5 5 -5 5 
;Define a log-normal distribution for fracture sizes
fish define log_normallaw(mean,sigma)
	w=2.0
	v1=0.0
	v2=0.0
	z1=1
	loop while w>=1
		v1 = 2.0*math.random.uniform-1.0
		v2 = 2.0*math.random.uniform-1.0
		w = v1*v1+v2*v2
	endloop
	w=math.sqrt((-2.0*math.log(w))/w)
	z1=v1*w;
	val=mean+z1*sigma
	log_normallaw = math.exp(val)
end
;Define the 2D normal distribution for dip and dip direction
fish define d2uniform(maxdip,maxdipd)
  local dip = math.random.uniform*maxdip
  local dipd = math.random.uniform*maxdipd
  d2uniform=vector(dip,dipd)
end
;Create a fracture template using these FISH functions
fracture template create 'example' orientation fish d2uniform(90,360) ...
                          size fish log_normallaw(0,2)
;Generate fractures using this template
fracture generate template 'example' mass-density 0.5
program return 

The same example in 2D:

model new

model domain extent -5 5 -5 5 
; define the log-normal distribution for fracture sizes
fish define lognormallaw(mean,sigma)
	w=2.0
	v1=0.0
	v2=0.0
	z1=1
	loop while w>=1
		v1 = 2.0*math.random.uniform-1.0
		v2 = 2.0*math.random.uniform-1.0
		w = v1*v1+v2*v2
	endloop
	w=math.sqrt((-2.0*math.log(w))/w)
	z1=v1*w;
	val=mean+z1*sigma
	lognormallaw = math.exp(val)
end
; define the 2D normal distribution for dip and dip direction
fish define d2uniform(maxdip)
  local dip = math.random.uniform*maxdip
  d2uniform=dip
end
; define the template
fracture template create 'example' orientation fish d2uniform(90) ...
                         size fish lognormallaw(0,2)
; generate one realization
fracture generate template 'example' mass-density 2

program return 

See Also: fracture export | fracture generate | fracture import