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 s a1...an

Define the generation rule for fracture orientations with the parameters \(a_{1}...a_{n}\). The following options for s are supported:

  • bootstrapped: The dip {and dip direction, in 3D} are bootstrapped from a file. One parameter must be given: the file name holding the discrete distribution of values. This file obeys the bootstrapped distribution file format given in DFN-Related File Formats.
  • dips (3D only): The dip and dip direction are bootstrapped from a DIPS file. One parameter must be given: the file name holding the discrete distribution of values. This file obeys the DIPS file format given in DFN-Related File Formats.
  • fish: The fish keyword is used to get values from a user-defined FISH function. The function name is given using \(a_{1}\), and the function arguments (any number) are given after the function name. The function must return a {float, in 2D; 2 dimensional vector, in 3D}.
  • fisher (3D only): The dip and dip direction are drawn from a Fisher distribution. Three additional parameters are required: dip, dip direction and \(\kappa\).
  • gauss: 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. No additional parameters can be given.

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 s a1...an

Define the generation rule for fracture position with parameters \(a_{1}...a_{n}\). The supported options for s are uniform, gauss, bootstrapped and fish. The meaning of these keywords is the same as for the orientation keyword except that the position is a {2D vector in 2D; 3D vector in 3D}. Consequently, if bootstrapped is specified, the file must contain the required number of values, and if fish is specified, the FISH function must return a vector of correct dimension. Additionally, the mean and standard deviations must be vectors if the gauss keyword is specified.

size s a1...an

Define the distribution of fracture sizes. The fracture size is defined as the {fracture length, in 2D; disk diameter, in 3D}. The supported options for s are uniform, gauss, power-law, bootstrapped and fish. The power-law specifier defines a negative power-law distribution which requires one parameter that is the exponent of the distribution with > 0. The remaining s options are as specified in the orientation description, except that the return value is a floating point value. Thus, only two arguments follow the gauss specifier: the bootstrapped file must follow a one-dimensional format; and the fish function must return a single value.

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
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
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

return 

See Also: fracture export | fracture generate | fracture import