Specifies a surface for particle tracking.


AcuSolve Command


PARTICLE_SURFACE("name") {parameters...}


User-given name.


shape (enumerated) [no default]
Shape of the surfaces in this set.
three_node_triangle or tri3
Three-node triangle.
four_node_quad or quad4
Four-node quadrilateral
six_node_triangle or tri6
Six-node triangle.
element_set or elem_set (string) [no default]
User-given name of the parent element set.
surfaces (array) [no default]
List of element surfaces.
type (enumerated) [=wall]
Type of the boundary surface.
Impenetrable wall.
inflow or in
Inflow surface. Currently not used..
outflow or out
Outflow surface. Currently not used.


This command specifies the surfaces (element faces) that comprise a particular kind of surface for particle tracking. Currently particle tracking is done as part of a post-processing module. The only type supported is wall, which is used by the particle tracker to prevent particles from penetrating the given surface. It is not necessary to use a PARTICLE_SURFACE command for surfaces specified in a SIMPLE_BOUNDARY_CONDITION command with type = wall, type = slip, or type = symmetry.

The particle surfaces are defined with respect to the elements of an element set. For example,
ELEMENT_SET( "interior" ) {
    shape        = four_node_tet
    elements     = { 1, 8, 3, 4, 9 ;
                     3, 3, 4, 9, 5 ;
                     ... }
    shape        = three_node_triangle
    element_set  = "interior"
    surfaces     = { 1, 12, 9, 3, 4 ;
                     3, 52, 5, 3, 4 ; }
    type         = wall

specifies that two surfaces of the element set "interior" are on a wall and that no particles are allowed to penetrate this wall.

There are two main forms of this command. The legacy version (or single topology version) of the command relies on the use of the surfaces parameter to define the surfaces. When using this form of the command, all surfaces within a given set must have the same shape, and it is necessary to include both the element_set and shape parameters in the command. shape specifies the shape of the surface. This shape must be compatible with the shape of the "parent" element set whose user-given name is provided by element_set. The element set shape is specified by the shape parameter of the ELEMENT_SET command. The compatible shapes are:
Element Shape
Surface Shape

The surfaces parameter contains the faces of the element set. This parameter is a multi-column array. The number of columns depends on the shape of the surface. For three_node_triangle, this parameter has five columns, corresponding to the element number (of the parent element set), a unique (within this set) surface number, and the three nodes of the element face. For four_node_quad, surfaces has six columns, corresponding to the element number, a surface number, and the four nodes of the element face. For six_node_triangle, surfaces has eight columns, corresponding to the element number, a surface number, and the six nodes of the element face. One row per surface must be given. The three, four, or six nodes of the surface may be in any arbitrary order, since they are reordered internally based on the parent element definition.

The surfaces may be read from a file. For the above example, the surfaces may be placed in a file, such as wall.srf:
1 12 9 3 4
3 52 5 3 4
and read by:
PARTICLE_SURFACE ( "no-slip wall" ) {
   shape       = three_node_triangle
   element_set = "interior"
   surfaces    = Read( "free.srf" )
The mixed topology form of the PARTICLE_SURFACE command provides a more powerful and flexible mechanism for defining the surfaces. Using this form of the command, it is possible to define a collection of surfaces that contains different element shapes. This is accomplished through the use of the surface_sets parameter. The element faces are first created in the input file using the SURFACE_SET command, and are then referred to by the PARTICLE_SURFACE command. For example, a collection of triangular and quadrilateral element faces can be defined using the following SURFACE_SET commands.
SURFACE_SET( "tri faces" ) {
    surfaces    = { 1, 1, 1, 2, 4 ;
                    2, 2, 3, 4, 6 ;
                    3, 3, 5, 6, 8 ; }
    shape       = three_node_triangle
    volume_set  = "tetrahedra"
SURFACE_SET( "quad faces" ) {
    surfaces    = { 1, 1, 1, 2, 4, 9 ;
                    2, 2, 3, 4, 6, 12 ;
                    3, 3, 5, 6, 8, 15 ; }
    shape       = four_node_quad
    volume_set  = "prisms"
Then, a single PARTICLE_SURFACE command is defined that contains the tri and quad faces as follows:
PARTICLE_SURFACE ( "no-slip wall" ) {
    surface_sets       = {"tri_faces", "quad_faces"}
The list of surface sets can also be placed in a file, such as surface_sets.srfst:
tri faces
quad faces
and read using:
PARTICLE_SURFACE ( "no-slip wall" ) {
    surface_sets       = Read("surface_sets.srfst")

The mixed topology version of the PARTICLE_SURFACE command is preferred. This version provides support for multiple element topologies within a single instance of the command and simplifies pre-processing and post-processing. In the event that both the surface_sets and surfaces parameters are provided in the same instance of the command, the full collection of surface elements is read and a warning message is issued. Although the single and mixed topology formats of the commands can be combined, it is strongly recommended that they are not.

A wall type specifies that this surface is impenetrable by particles. This specification is necessary because small numerical errors in particle tracking, or physical effects like inertia, may lead to particles intersecting a wall and becoming lost.

Specification of a particle surface via this command has no effect on the execution of AcuSolve. The only purpose of this command is to provide geometrical information to post-processing modules that perform particle tracking.