rblock distribute command


rblock distribute keyword ... <range>

Primary keywords:

bin    box    diameter    fish-size    number-bins    porosity    resolution

Create a distribution of rigid blocks with overlaps. This process ceases when a target porosity 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 sizes can also be drawn from a Gaussian distribution via the gauss keyword. A number of rigid block distributions—with size ranges and volume fractions that each use a unique rigid block template—can be specified. 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 generate command where rigid blocks, with sizes chosen from a single distribution, are generated without overlap until the target number of rigid blocks, or the number of attempts to place rigid blocks, is achieved.


  • A model domain must be specified prior to rigid block generation.
  • Significant rigid block overlaps will likely result from this operation.
  • While cycling, rigid blocks can only be created before cycle point 0 (i.e., when the timestep is calculated).
bin ibin keyword ...

Specify the distributional properties of bin ibin. Any number of distributions with radii ranges, volume fractions, and distributional types can be specified. The volume fractions of all distributions must sum to 1.

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.

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

The rigid block sizes are drawn from the distribution represented by the FISH function sfish. 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.

gauss <fcutoff >

Specify that the rigid block sizes are chosen from a Gaussian distribution with mean value (fradlow + fradhi)/2 and standard deviation (fradhi - fradlow)/2. The optional fcutoff (default 0.1), multiplied by fradlow, 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.

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.

template stname

Name of the rigid block template to be used.

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.

volume-fraction fvfrac

The volume fraction of rigid blocks in this distribution. The sum of volume fractions of all distributions must be 1.

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

fish-size sfname

The size used to scale the rigid blocks while generating can be specified by the FISH function with name sfname. 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.

number-bins inum

Number of distributions used to generate the assembly.

porosity fporos

The final porosity is set to fporos. By default, fporos = {0.16 in 2D; 0.359 in 3D}, corresponding to the porosity for a tight, monodisperse packing of {disks in 2D; spheres in 3D}.

resolution fres

Optional resolution that can be used as a multiplicative factor of the size of each rigid block generated. By default, fres = 1.0.

Usage Example

Create rigid blocks inside a box. Use the cube template for created blocks, in a size range between 20 and 30, to a porosity level of 0.2, with overlap as needed.

rblock distribute porosity 0.2 template 'cube' size 20 30 box -9 9