rblock generate command


rblock generate keyword ... <range>

Primary keywords:

azimuth    box    diameter    density    elevation    fish-distribution    fish-size    gauss    group    id    number    size    templates    tilt    tries

Generate non-overlapping rigid blocks. The process ceases when the target number of rigid blocks are created or when the number of attempts to place rigid blocks without overlap is achieved. By default, the rigid block positions and sizes are drawn from uniform distributions throughout the model domain. As a result, the set of rigid blocks generated is affected by the state of the random-number generator (see model random). The rigid block size can also be drawn from a Gaussian distribution via the gauss keyword. A number of rigid block templates can be used during a single rblock generate command. The optional range is applied to each rigid block upon generation and, if the rigid block does not fall within the range, it is not added to the model and does not affect the stopping criteria. This command contrasts with the rblock distribute command where rigid blocks are distributed without regard for overlap until a target porosity is achieved.


  • A model domain must be specified prior to rigid block generation.
  • While cycling, rigid blocks can only be created before cycle point 0 (i.e., when the timestep is calculated).
azimuth fazlow fazhi

Range of azimuths to rotate the rigid block template randomly about. An azimuthal rotation is a right-hand rotation about the {out of plane direction in 2D; \(z\)-axis in 3D} in degrees.

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

Rigid blocks will fully fall within this box, such that they will not overlap the box faces or edges. By default, the box is the model domain.


Specify that the linear size used to scale the rigid blocks is the volume equivalent diameter of a {disk in 2D; sphere in 3D}.

density fdens

The rigid block density that is 1 by default.

elevation fellow felhi (3D ONLY)

Range of elevations to rotate the rigid block template randomly about. An elevating rotation is a right-hand rotation about the \(y\)-axis in degrees.

fish-distribution fdist a1...an

The rigid block sizes are drawn from the distribution represented by the FISH function fdist. Function arguments can be specified as though no function arguments are required. The FISH function must return a floating point value that is the rigid block size. A FISH distribution cannot be specified with the gauss or size keywords.

fish-size fsize

The size used to scale the rigid blocks while generating can be specified by the FISH function with name fsize. The return value of the FISH function should be a linear measure of the rigid block size and the function should take one argument that is a rigid block pointer.

gauss <fcutoff >

Specify that the rigid block sizes are chosen from a Gaussian distribution with mean value (fsizelow + fsizehi)/2 and standard deviation (fsizehi - fsizelow)/2. The optional fcutoff (default 0.1), multiplied by fsizelow, constitutes the minimum size allowed.

group s <slot slot > ...

Specify that generated rigid blocks are given group name s at slot slot. If the slot keyword is not specified, then the group name is assigned to the slot Default.

id idlow <idhi >

The ID of the first rigid block generated is set to idlow that, by default, is the next available ID. idhi, if specified, is used to calculate the number of rigid blocks to generate. rigid block IDs are chosen sequentially.

number inum

Specify the number of rigid blocks to be generated.

size fsizelow <fsizehi >

Specify the size range to be used during generation. If fsizehi is not specified, then fsizehi = fsizelow. By default, fsizehi = fsizelow = 1.0. Cannot be given with the fish-distribution keyword.

templates inum stname <f > ...

Specify the number inum of rigid block template pairs to be entered followed by the pairs. The pairs are composed of the rigid block template name and the relative proportion of the rigid block template to be used during generation. The relative proportions are divided by the sum of the proportions to yield a percentage. If no percentages are specified, then rigid block templates are drawn equally from those given. If no templates are specified, then they are randomly selected from all rigid block templates.

tilt ftiltlow ftilthi (3D ONLY)

Range of tilts to rotate the rigid block template randomly about. A tilting rotation is a right-hand rotation about the \(x\)-axis in degrees.

tries itries

Number of tries to fill the specified region with the number of rigid blocks. By default, itries = 20,000.

Usage Examples

Create 65 non-overlapping rigid blocks ranging in size from 0.5 to 4.

rblock generate size 0.5 4 number 65

Create 27 non-overlapping rigid blocks between 0.5 and 2 in size, scaled according to the value computed by the FISH function computeSize.

rblock generate fish-size computeSize size 0.5 2 number 27

Create 2000 non-overlapping rigid blocks, between 0.25 and 2.5 in size. The blocks are to be generated in a box and above the plane given in the range.

rblock generate number 2000 size 0.25 2.5 ...
                            box (-720,-660) (818,880) (630,668) ...
                            range plane origin (-677.244,828.895,644.82) ...
                            normal (0.220853,-0.560137,0.798418) above

from “setup.dat” in Rigid Block Model of a Rockslide