# GUIDE_SURFACE

Specifies a surface for mesh nodes to follow.

AcuSolve Command

## Syntax

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

User-given name.

## Parameters

shape (enumerated) [no default]
Shape of the surfaces in this set.
three_node_triangle or tri3
Three-node triangle.
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.
surface_sets (list) [={}]
List of surface set names (strings) to use in this command. When using this option, the connectivity, shape, and parent element of the surfaces are provided by the surface set container and it is unnecessary to specify the shape, element_set and surfaces parameters directly to this command. This option is used in place of directly specifying these parameters. In the event that both of the surface_sets and surfaces parameters are provided, the full collection of surface elements is read and a warning message is issued. The surface_sets option is the preferred method to specify the surface elements. This option provides support for mixed element topologies and simplifies pre-processing and post-processing.
split_internal_surfaces (boolean) [=off]
Option to automatically split the nodes on internal surfaces that require two boundary conditions, that is, cases that include baffles, sliding mesh or thermal interfaces.
type (enumerated) [=faceted]
Type of the guide surface.
faceted
Mesh nodes follow the surface as given.
smooth
Apply polynomial to surface node definition.
mesh_motion (string) [=none]
User-given name of the MESH_MOTION command for specifying mesh displacement boundary conditions on all the nodes in this surface set. If none, no boundary conditions are imposed.
mesh_motion_precedence (integer) [=1]
User-given precedence for mesh motion surfaces. High values of mesh_motion_precedence will take precedence over lower values for duplicate mesh_motion boundary conditions.

## Description

This command specifies a set of surfaces (element faces) to be used to guide mesh nodes. One application of this is the free surface problem around a boat with curved surfaces. The commands to specify that the fluid nodes on the boat surface shall follow this surface may be given as:
ELEMENT_SET( "boat" ) {
shape          = four_node_tet
medium         = none
mesh_motion    = none
}
GUIDE_SURFACE( "stationary boat surface" ) {
shape          = three_node_triangle
element_set    = "boat"
surfaces       = { 1, 101, 1, 3, 11 ;
2, 102, 3, 5, 13 ; }
type           = faceted
mesh_motion    = none
}
NODAL_BOUNDARY_CONDITION( "guided mesh motion" ) {
variable       = mesh_direction_displacement
type           = guide_surface
guide_surface  = "stationary boat surface"
}
NODAL_BOUNDARY_CONDITION( "x-velocity on boat" ) {
variable       = x_velocity
type           = zero
}
NODAL_BOUNDARY_CONDITION( "y-velocity on boat" ) {
variable       = y_velocity
type           = zero
}
NODAL_BOUNDARY_CONDITION( "z-velocity on boat" ) {
variable       = z_velocity
type           = zero
}

In this example two surfaces of the element set "boat" are used to define a guide surface. Note that in general all surfaces are defined in relation to an element set. Here, an element set is needed for the sole purpose of defining geometry for the guide surface. To avoid creating extra equations, medium = none allows an element set to be completely inactive, or to have only mesh displacement boundary conditions on its nodes. An active element set, one with a medium other than none, may be used as well. The guide surface is then used in a special type of nodal boundary condition that allows the given mesh nodes to move but constrains them to the guide surface. A faceted type of guide surface means that the nodes will follow these surfaces exactly as defined, as opposed to following a smoothed version. Each node in a boundary condition set with a guide_surface type is projected to the given guide surface. If this projection falls within a surface facet, then the normal to that facet is used for a slip boundary condition on the mesh displacement. If the projection falls outside of all the guide surface facets, then the closest one is used. Effectively, the guide surface is extended as far as necessary to cover all the mesh nodes.

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
four_node_tet
three_node_triangle
five_node_pyramid
three_node_triangle
five_node_pyramid
six_node_wedge
three_node_triangle
six_node_wedge
eight_node_brick
ten_node_tet
six_node_triangle

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 boat.ebc:
1 101 1 3 11
2 102 3 5 13
GUIDE_SURFACE( "boat surface" ) {
shape        = three_node_triangle
element_set  = "boat"
...
}
The mixed topology form of the GUIDE_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 GUIDE_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"
}
surfaces       = { 1, 1, 1, 2, 4, 9 ;
2, 2, 3, 4, 6, 12 ;
3, 3, 5, 6, 8, 15 ; }
volume_set     = "prisms"
Then, a single GUIDE_SURFACE command is defined that contains the tri and quad faces as follows:
GUIDE_SURFACE ( "boat surface" ) {
...
}
The list of surface sets can also be placed in a file, such as surface_sets.srfst:
tri faces
quad faces
GUIDE_SURFACE ( "boat surface" ) {
...
}

The mixed topology version of the GUIDE_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.

In the above examples the boat is stationary. A rigid body motion can be added to the boat. For example, the forces of the ocean acting on the boat can be modeled by:
MESH_MOTION( "boat motion" ) {
type                          = rigid_body_dynamic
rigid_body_mass               = 100
...
rigid_body_surface_outputs    = { "ocean: boat hull" }
}
SURFACE_OUTPUT( "ocean: boat hull" ) {
...
integrated_output_frequency   = 1
}
GUIDE_SURFACE( "moving boat surface" ) {
...
mesh_motion                   = "boat motion"
}
SIMPLE_BOUNDARY_CONDITION( "slip conditions for mesh and fluid" ) {
...
type                          = slip
mesh_displacement_type        = guide_surface
guide_surface                 = "moving boat surface"
}

Alternatively, the mesh_motion parameter can be specified in the element set that the guide surface belongs to.

There are four different cases for the fluid velocity boundary condition on the guide surface:
• Fixed Surface, No-Slip Velocity: Zero velocity is imposed on all nodes using either NODAL_BOUNDARY_CONDITION commands or a SIMPLE_BOUNDARY_CONDITION command of type wall. The no-slip condition may not be imposed on the nodes at the free surface or else the free surface could not slide along the guide surface.
• Fixed Surface, Slip Velocity: The easiest way to handle this is to use a SIMPLE_BOUNDARY_CONDITION command with type slip. This will impose a zero boundary condition on the normal component of velocity, where the normal is taken from the guide surface and not the fluid mesh.
• Moving Surface, No-Slip Velocity: The guide surface is moving, or deforming for that matter, and the velocity is fixed to the body, that is, moving along with the body. Using a SIMPLE_BOUNDARY_CONDITION command of type wall causes the fluid velocity on the wall to match that of the guide surface. If in addition a mesh displacement type of guide_surface is specified in the same SIMPLE_BOUNDARY_CONDITION command then the normal component of the fluid velocity will match the normal component of the mesh velocity instead of the guide surface velocity. This preserves the fluid volume. An example for this case using NODAL_BOUNDARY_CONDITION commands is given in the description for that command.
• Moving Surface, Slip Velocity: Using a SIMPLE_BOUNDARY_CONDITION command of type slip and mesh displacement type of guide_surface causes the fluid velocity to slip properly on the moving wall while preserving the fluid volume, as in case three.