GUIDE_SURFACE
Specifies a surface for mesh nodes to follow.
Type
AcuSolve Command
Syntax
GUIDE_SURFACE("name") {parameters...}
Qualifier
User-given name.
Parameters
- 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.
- 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
ELEMENT_SET( "boat" ) {
shape = four_node_tet
elements = Read( "boat.cnn" )
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" ) {
nodes = Read( "boat.wall.nbc" )
variable = mesh_direction_displacement
type = guide_surface
guide_surface = "stationary boat surface"
}
NODAL_BOUNDARY_CONDITION( "x-velocity on boat" ) {
nodes = Read( "boat.wall.nbc" )
variable = x_velocity
type = zero
}
NODAL_BOUNDARY_CONDITION( "y-velocity on boat" ) {
nodes = Read( "boat.wall.nbc" )
variable = y_velocity
type = zero
}
NODAL_BOUNDARY_CONDITION( "z-velocity on boat" ) {
nodes = Read( "boat.wall.nbc" )
variable = z_velocity
type = zero
}
In this example two surfaces of the element set "boat" are used to define a guide surface. 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.
- Element Shape
- Surface Shape
- four_node_tet
- three_node_triangle
- five_node_pyramid
- three_node_triangle
- five_node_pyramid
- four_node_quad
- six_node_wedge
- three_node_triangle
- six_node_wedge
- four_node_quad
- eight_node_brick
- four_node_quad
- 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.
1 101 1 3 11
2 102 3 5 13
GUIDE_SURFACE( "boat surface" ) {
shape = three_node_triangle
element_set = "boat"
surfaces = Read( "boat.ebc" )
...
}
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"
GUIDE_SURFACE ( "boat surface" ) {
surface_sets = {"tri_faces", "quad_faces"}
...
}
tri faces
quad faces
GUIDE_SURFACE ( "boat surface" ) {
surface_sets = Read("surface_sets.srfst")
...
}
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.
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.
- 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.