wall generate command

Syntax

wall generate keyword ...

Primary keywords:

group    id    name    box    circle    cone    cylinder    disk    plane    point    polygon    sphere

Generate walls with specified shapes. The wall shapes include: {box, circle, and point in 2D; box, cone, cylinder, disk, line, plane, point, polygon, and sphere in 3D}.

Note

  • A model domain must be specified prior to wall creation.
  • All wall facets must fall within the model domain.
  • The id, name, and group keywords must be given prior to any additional keywords.
  • While cycling, walls can only be created before cycle point 0 (i.e., when the timestep is calculated).
group s <slot slot > <facet> ...

Assign name s to the group name at slot slot for the created wall or its constituent facets. If the slot keyword is not specified, then the group name is assigned to the slot Default. The optional facet keyword specifies that the group is assigned to the facets and not to the wall.

id id

Wall ID. If not specified, then the next available ID is used.

name s

Wall name. If not specified, then each shape defines a wall name with the ID post pended.

box fxmin fxmax fymin fymax fzmin fzmax <one-wall> (`z`-components are 3D ONLY)

Generate a closed box. If the name keyword has not been specified, then s = boxWall. By default, each side of the box is a separate wall. In this case, the wall name is concatenated with the wall side name (e.g., {top, bottom, left, or right in 2d; top, bottom, left, right, front, or back in 3D}) and the wall ID. For instance, if s = fred, the name of the top wall is fredTopXX, where XX is the wall ID. A unique ID, starting with id, is assigned to each wall. Use the one-wall keyword to specify that all box sides belong to a single wall. If fxmin and fxmax are specified alone, then the box is a cube with equal sides.

circle keyword ... (2D ONLY)

Generate a closed circle in 2D. If the name keyword has not been specified, then s = circleWall.

position vpos

Position of the center of the circle that is the origin by default.

radius frad

Radius of the circle that is 1.0 by default.

resolution fres

Resolution of the facets. The number of facets is set so that the facet length is smaller than fresfrad. By default, fres = 0.1.

cone keyword ... (3D ONLY)

Generate a cone in 3D. Either a cone or a conic frustum (i.e., cone with the tip cut off such as a funnel if the caps are absent) can be generated. If the name keyword has not been specified, then s = coneWall. By default, the cone base is closed and the base and side of the cone are separate walls. In this case, the wall name is concatenated with the wall side name (e.g., top (if a frustum), bottom, or side) and the wall ID. For instance, if s = fred, the name of the bottom wall is fredBottomXX, where XX is the wall ID. A unique ID, starting with id, is assigned to each wall. Use the one-wall keyword to specify that all cone sides belong to a single wall.

axis faxisx faxisy faxisz

Direction of the symmetry axis of the cone pointing from the base position that points in the positive \(z\)-direction by default.

base v

Position of the base of the cone (i.e., the center of the bottom end) that is the origin by default.

cap bbottom <btop >

Indicate the inclusion status of the end caps. If one boolean is specified, then this state is given to both end caps. If two booleans are specified, then the first one applies to the bottom cap and the second to the top cap. By default, the bottom cap is created. No top cap is created unless fradtop is specified and is nonzero.

height fheight

Height of the cone. This is the distance from the base position to the point or, if a frustum, to the center of the top end. By default, fheight = 1.

one-wall

Specify that the end caps and side of the cone (if all created) belong to a single wall.

radius fradbot <fradtop >

Radius of the cone. By default, fradbot = 1.0 and fradtop = 0.0, meaning that a cone is created. If fradtop > 0.0, then a conic frustum (i.e., cone with the tip cut off) is created. In this case, fradbot is the bottom radius at the base location and fradtop is the radius of the top of the frustum at a distance fheight from the base location along the symmetry axis.

resolution fres

Resolution of the edges of the cone ends. The number of end edges is set so that the edge is smaller than fres * fradbot. If a frustum is to be generated with fradtop > 0, then the end edge lengths are less than fres * min(fradbot,fradtop). By default, fres = 0.1.

cylinder keyword ... (3D ONLY)

Generate a cylinder in 3D. If the name keyword has not been specified, then s = cylinderWall. By default, the cylinder is closed and each side of the cylinder is a separate wall. In this case, the wall name is concatenated with the wall side name (e.g., top, bottom, or side) and the wall ID. For instance, if s = fred, the name of the top wall is fredTopXX, where XX is the wall ID. A unique ID, starting with id, is assigned to each wall. Use the one-wall keyword to specify that all cylinder sides belong to a single wall.

axis v

Direction of the symmetry axis of the cylinder pointing from the base position.

base v

Position of the base of the cylinder (i.e., the center of the bottom end) that is the origin by default.

cap bbottom <btop >

Indicate the inclusion status of the end caps. If one boolean is specified, then this state is given to both end caps. If two booleans are specified, then the first one applies to the bottom cap and the second to the top cap. By default, both caps are created.

height fheight

Height of the cylinder. This is the distance from the base position to the center of the top end. By default, fheight = 1.

one-wall

Specify that the end caps and side of the cylinder (if all created) belong to a single wall.

radius frad

Radius of the cylinder, or the distance from the axis of symmetry to the side.

resolution fres

Resolution of the edges of the cylinder ends. The number of end edges is set so that the edge is smaller than fresfrad. By default, fres = 0.1.

disk keyword ... (3D ONLY)

Generate a disk in 3D. If the name keyword has not been specified, then s = diskWall.

dip fdip

Dip angle of the disk in degrees in the range [0,90]. Dip is the angle from the dip direction projected on the xy plane to the disk surface measured in the negative \(z\)-direction. By default, fdip = 0.

dip-direction fddir

Dip direction of the disk in degrees as measured in a clockwise fashion from the positive \(y\)-axis in the range [0,360]. By default, fddir = 0.

position v

Position of the center of the disk that is the origin by default.

radius frad

Radius of the disk that is 1.0 by default.

resolution fres

Resolution of the disk edges. The number of disk edges is set so that the edge is smaller than fresfrad. By default, fres = 0.1.

plane keyword ...

Generate a plane wall that spans the entire domain and is truncated at the domain boundaries. If the name keyword has not been specified, then s = planeWall.

dip fdip

Dip angle of the plane in the range {[0,180] in 2D; [0,90] in 3D}. Dip is the angle from the {positive \(y\)-direction in 2D; dip direction projected on the xy plane to the disk surface measured in the negative \(z\)-direction in 3D}. By default, fdip = 0.

dip-direction fddir (3D ONLY)

Dip direction of the plane in degrees as measured in a clockwise fashion from the positive \(y\)-axis in the range [0,360]. By default, fddir = 0.

position v

Position of a point on the plane.

point keyword ...

Generate a point wall. If the name keyword has not been specified, then s = pointWall. A point wall is a {line segment in 2D; equilateral triangle in 3D} that should be much smaller (i.e., 1/10th the size) of the minimum ball/pebble in the model. Use the resolution keyword to specify the size.

position vpos

Position of the point wall with default the origin.

resolution fres

Resolution of the point wall. This corresponds to the {facet length in 2D; equilateral triangle edge length in 3D}. By default, fres is 1/100th of the minimum length of the sides of the model domain.

polygon vpos ... <make-planar> <triangulate> (3D ONLY)

Generate a planar, polygonal wall in 3D.

If the name keyword has not been specified, then s = polygonWall. There are two modes of operation: the default mode which is guaranteed to work for convex polygons and the triangulation mode, specified with the optional triangulate keyword, that works for both convex and concave polygons.

In both modes, the makeplanar keyword is used to snap the vertices to the plane with point equal to the average location of vertices (called the center). The plane normal is defined by the cross product of two vectors, namely the vector difference between the center and vertex 1 and the vector difference between the center and vertex 2.

In the default mode, the vertices of the wall can be input in any order and the command is guaranteed to work for sets of vertices defining convex polygons. The algorithm proceeds by ordering the points in clockwise order about the center. The first facet is created from the [1,2,num] vertex where num is the total number of vertices. The next facet is made from the [2,num,3] vertices, and the following from the [num,3,num-1] vertices, and so on.

In triangulation mode, the vertices must be input in an ordered fashion around the perimeter of the polygon. The sweep line algorithm is used to triangulate the polygon.

sphere keyword ... (3D ONLY)

Generate a closed sphere wall in 3D. The sphere is generated by refining an icosahedron (i.e., a sphere composed of 20 identical equilateral triangles) so that the edge lengths are smaller than a length defined by the resolution keyword.

position vpos

Position of the sphere centroid that is the origin by default.

radius frad

Radius of the sphere that is 1.0 by default.

resolution fres

Resolution of the facet edges. The number of facets is set so that the edge length is smaller than fresfrad. By default, fres = 0.1.

Usage Example

The wall generate can be used to generate walls of standard shapes in 3D (boxes, cones, cylinders, etc.) and 2D (circles, points).

Here is an example for the creation of a spherical wall.

model new
model domain extent -10 10

wall generate ...
    group 'spheres' ...
    sphere position 5.0 0.0 -2.0 ...
    radius 3.0 ...
    resolution 1

wall generate ...
    group 'spheres' ...
    sphere position -5.0 0.0 -2.0 ...
    radius 3.0 ...
    resolution 0.1

Two equally sized spherical walls are created. The resolution keyword determines the smoothness of the sphere surface, as shown on Fig. 1. Please be aware that using high values of resolution involves a strong increase of the computational cost.

../../../../../../_images/spheres.png

Figure 1: Spherical walls generated by using the wall generate command. The resolution keyword determines the smoothness of the sphere surface.

Here is another example for the generation of truncated, cone-shaped walls.

model new
model domain extent -20 20

wall generate ...
    group 'cones' ...
    cone ...
        axis 1 0 1 ...
        base -12.0 0.0 0 ...
        cap true true ...
        height 10.0 ...
        one-wall ...
        radius 5.0 3.0 ...
        resolution 1
    
wall generate ...
    group 'cones' ...
    cone ...
        axis -1 0 1 ...
        base 12.0 0.0 0 ...
        cap false false ...
        height 10.0 ...
        one-wall ...
        radius 5.0 3.0 ...
        resolution 0.1

As in the case of cylinder walls, the user can choose if cone/cylinder caps should be included when creating the wall. This can be done using the cap keyword (see Fig. 2). The one-wall keyword determines if either the cap and side facets should be assumed as belonging to a single wall or not.

../../../../../../_images/cones.png

Figure 2: Conical walls generated using the wall generate command. The resolution keyword determines the smoothness of the cone surface. The cap keyword allows the generation of capped/uncapped walls.

Further Examples

wall generate group 'leftlateral_1'  polygon ...
   ([-W/2],[-d],[A]) ([-W/2],0.0,[A]) ([-W/2],[-d],[H]) ([-W/2],0.0,[H])

from “Hopper_utilities.dat” in Hopper Flow


wall generate id 3 plane dip 90 dip-direction 90 position -0.025 0 0

from “make_sample.dat” in Rock Testing


wall generate group 'table' cylinder           ...
     axis 0 0 -1                               ...
     base [xTable(1,2)] [yTable(1,1)] [zTable] ...
     height [Ly*0.5]                           ...
     one-wall                                  ...
     radius [Lx*0.02]

from “CreateTable.dat” in Table Tennis


wall generate box -1 1

from “free_expansion.dat” in Heated Specimen with Free Boundaries