fracture generate command

Syntax

fracture generate keyword

Primary keywords:

connectivity-threshold    dfn    dfn-dominance    fish-stop    fracture-count    generation-box    mass-density    modify    p10    percolation    template    tolerance-box

Generate fractures from a statistical description. A model domain must be specified prior to generation. {Line segment fractures in 2D; disk-shaped fractures in 3D} are generated. If no fracture generation template (i.e., the statistical description defined with the fracture template create command) is specified, the default fracture generation template is used. The default fracture template parameters can be changed with the fracture template modify-default command. The DFN may be linked to the fracture generation template, provided that the modify keyword is not given and that the template is not the default. Fractures are generated until a specified stopping criterion is met. These conditions include:

  • a target fracture number (fracture-count);
  • a target P10 (p10);
  • a target density (P21 in 2D; P32 in 3D) (mass-density);
  • a target percolation volume (percolation);
  • DFN at the connectivity threshold (connectivity-threshold); and
  • user-defined criteria (fish-stop).

Note

The specified DFN must either not exist or be empty. If a DFN is not specified then a DFN is created with the next available ID, and the DFN name is dfnXX, where XX is the ID.

In addition, a user-defined FISH function can be called after each fracture is generated to modify the fracture, to skip it, or to add/calculate specific quantities (modify). Fracture characteristics can then be modified with the fracture attribute command, and properties assigned with the fracture property command.

The fracture dominance, used for contact-model assignment (see the fracture contact-model command), is assigned in the order of fracture generation.

connectivity-threshold

Generation terminates at the connectivity threshold (i.e., the instant one can traverse all dimensions of a spatial region via fracture intersections).

box fxl fxu fyl fyu fzl fzu (z-components are 3D only)

Generation terminates the instant one can traverse fracture intersections from each edge of the specified box to each other edge.

geometry s1 <s2 >

Generation terminates when the DFN is connected to all {edges in 2D; polygons in 3D} of the geometry set s1. If s2 is given, generation terminates when the DFN connects at least one {edge in 2D; polygon in 3D} of the geometry set s1 to at least one {edge in 2D; polygon in 3D} of the geometry set s2.

dfn s

Specify the DFN name. The DFN must either be empty or not exist.

dfn-dominance i

The dominance of the DFN is set to i. The DFN dominance is used during contact-model assignment when a contact intersects multiple fractures from different DFNs. The fractures from the DFN with the lowest DFN dominance will be further scrutinized by their dominance values, to assign the appropriate contact model properties.

fish-stop s a1...an

Generation is terminated if the FISH function s, with arguments \(a_{1}...a_{n}\), returns a nonzero integer.

fracture-count i

Generation terminates when the number of fractures generated is i.

generation-box fxmin fxmax fymin fymax fzmin fzmax (z-components are 3D only)

Generate fractures with positions (i.e., centers) within this rectangular generation region. By default, the generation-box is set to the model domain extent.

mass-density f

Generation terminates when the fracture density {P21 in 2D; P32 in 3D} in the tolerance-box reaches or exceeds f for the first time.

Note

Using a modification function prevents the linkage of the DFN to the underlying DFN template.

modify s a1...an

The FISH function s is called after each fracture is generated. The first argument of s is filled with the fracture pointer; this FISH function must take at least one argument. Additional arguments can be specified as \(a_{1}...a_{n}\). The FISH function can be used to access and/or change the fracture parameters. If the function returns the “remove” string, the fracture is deleted and removed from the generation process.

p10 f keyword

Generation terminates when P10 measured along either a specified scanline (using the begin and end) or a number of scanlines (using the geometry keyword) for the first time.

begin v

Specify the location of the beginning of the scanline. Cannot be given with the geometry keyword.

end v

Specify the location of the ending of the scanline. Cannot be given with the geometry keyword.

geometry s

Specify that the scanlines come from the edges in a geometry set. Generation terminates when the average P10 measured along the set of scanlines defined by the geometry set edges reaches or exceeds f for the first time. Cannot be used with the begin and end keyword.

percolation fval

Generation terminates when the fracture percolation volume in tolbox reaches or exceeds fval for the first time.

template s

Fractures are generated according to the specified template. If no fracture generation template is provided, then the default fracture generation template is used.

tolerance-box fxmin fxmax fymin fymax fzmin fzmax (z-components are 3D only)

The tolerance box is used to truncate fractures. This box may be larger or smaller than the generation box, but cannot exceed the model domain extent. It is used for density or percolation calculations if one of these conditions represents the specified termination criteria. The generation box (generation-box) (or the model domain, if the generation box exceeds it) is used if the tolerance box is not specified.

Usage Example

The following example illustrates how the fracture generate command can be used to generate a layered fracture network where fracture density is calibrated with different data. All fractures obey the same statistical laws (i.e., sizes drawn in a power-law distribution with an exponent of 3 truncate between 0.5 and 100), uniform orientations and uniform positions. Fracture positions are generated in a larger volume than the considered layer, to avoid finite-size effects.

In the first layer, the generation is stopped when the fracture density is equal to 1. In the second layer, it is stopped when the fracture frequency along the given line is equal to 0.5. Finally, in the third layer, it is stopped when the 2D density of fracture traces on the given outcrop is equal to 0.5.

model new
model random 10000
model domain extent -5 5
;Create a geometry set 'that' represents an ourcrop
geometry set 'outcrop'
geometry polygon create by-positions (-5,-5,3) (-5,5,3) (5,5,3) (5,-5,3)

;Define a stopping function
fish define stop
	stop = 0
	outcrop = geom.set.find('outcrop')
	if fracture.geomp21(outcrop,dfn.find('example3'))>0.5
		stop = 1
	endif
end

;Create a fracture template
fracture template create 'ex_temp' size power-law 3 size-limit 0.5 100
;Generate fracture using the template - stop at a specified mass density
fracture generate dfn 'example1' template 'ex_temp' generation-box -8 8 -8 8 -8 1 tolerance-box -5 5 -5 5 -5 -2 mass-density 1
;Generate fracture using the template - stop at a specified p10
fracture generate dfn 'example2' template 'ex_temp' generation-box -8 8 -8 8 -5 5 tolerance-box -5 5 -5 5 -2 2 p10 0.5 begin (-5,0,0) end (5,0,0)
;Generate fracture using the template - stop based on the FISH criteria
fracture generate dfn 'example3' template 'ex_temp' generation-box -8 8 -8 8 -1 8 tolerance-box -5 5 -5 5 2 5 fish-stop @stop
return 

The following example illustrates how the fracture generate command can be used to generate a DFN at the connectivity threshold without fractures intersecting a given borehole (3D). During the generation, fractures intersecting the borehole are removed by the use of the modify keyword and the remove_fracture FISH function. This kind of generation can be used after having deterministically added fractures intersecting the borehole.

model new
model random 10000
model domain extent -5.01 5.01
;Create a geometry set 'that' represents an ourcrop
geometry set 'borehole'
geometry edge create by-position (0,0,-4) (0,0,4)
;Define a stopping function
fish define remove_fracture(frac)
	remove_fracture = '0'
	borehole = geom.set.find('borehole')
	if fracture.gintersect(frac,borehole)>0
		remove_fracture = 'remove'
	endif
end

;Create a fracture template
fracture template create 'ex_temp' size power-law 3 size-limits 0.5 100
;Generate fractures using the template - generate to the connectivity threshold
fracture generate dfn 'example' template 'ex_temp' generation-box -8 8 -8 8 -8 8 connectivity-threshold box -5 5 -5 5 -5 5 modify remove_fracture
return 

See Also: fracture create | fracture attribute | fracture property | fracture template create