compute crosssection command

Warning

GPU support for this command has not been tested and may not work as expected.

Syntax

compute ID group-ID crosssection general_keyword general_values dim d min mi max ma n_cuts nc cut_thickness ct keywords value   ...
  • ID, group-ID are documented in compute command

  • crosssection = style name of this compute command

  • general_keywords general_values are documented in compute

  • skin = obligatory keyword

  • s = skin used for coordination number calculation

  • dim = obligatory keyword

  • d = axis of cross-sections (any x,y,z)

  • min = obligatory keyword

  • mi = lo value for cross-sections (length units)

  • max = obligatory keyword

  • ma = hi value for cross-sections

  • n_cuts = obligatory keyword

  • nc = number of cross-sections to be evaluated

  • cut_thickness = obligatory keyword

  • ct = obligatory keyword

  • zero or more keyword/value pairs may be appended

  • keyword = file, region or angle

region value = region-ID
  region-ID = ID of region atoms must be in to be included in cross-section
file value = filename
  v_name = filename to write data to
angle value = yes or no

Examples

compute      chull all crosssection skin 0.003 dim z  min 0.0 max 0.05  n_cuts 3 cut_thickness 0.005

Description

Define a computation that calculates cross-sectional areas of medium to densely packed particle beds. This is done for multiple cuts in a defined dimension, as defined by keyword dim. The number of cross-sectional cuts is defined by keyword n_cuts, the location of the cross-sections are defined by min and max. Example: If dim = x, n_cuts = 3, min = 0.5 and max = 0.7, then cross-sectional areas are calculated for x = 0.5, x = 0.6, and x = 0.7.

Mathematically, the 2D convex hull of all particles is included, if the normal distance to a cross-section plane is less than cut_thickness. Example: If cut_thickness = 0.05, in the above example, all particles with 0.45 < x < 0.55 would be included in the first cross-section, all particles with 0.55 < x < 0.65 would be included in the second cross-section, etc. Note that particles are ONLY INCLUDED IF their coordination number (number of contacts) is 2 or higher. This is to avoid that only particles which are part of a packed bed are taken into account. The coordination number is calculated based on the skin keyword, i.e. if two particles are separated by a distance less than the sum of their radii + skin, then the particle pair is counted for the coordination number. If the cut_thickness is larger than the cut distance (which is defined by (max-min)/(n_cuts-1)), a warning will be shown and the cut_thickness value is limited to this cut distance.

The optional keyword file can be used to write out the results to a text file, following this format:

coo_1 area_1 r_1
coo_2 area_2 r_2
...

where the coo_X values are the dim = const coordinate values, area_X are the corresponding cross-section areas, and the r_X values are the radii of the area-equivalent circle.

The optional keyword region can be used to restrict the calculation to a certain region.

The optional keyword angle triggers the calculation of the average angle formed by the different cross-section cuts.

Output info:

This compute calculates a local vector. The length of the vector is equal to n_cuts, and each value is equal to the cross-sectional area for this cut. The vector or array can be accessed by any command that uses local values from a compute as input. If the angle keyword is active, an additional vector entry containing the angle is available. See this section for an overview of Aspherix® output options.

For information on the units of the output, see above.

Restrictions

Can only be used together with a granular pair style.

Default

angle off