Rotation Specifications¶
This section descibes special input for controlling boundary condition implementation of vector equations in 3D problems. For 2D problems, the information in this section of the Goma input file is not read or used. It is also optional in 3D problems when none of the boundary conditions are rotated (see discussion below). However, these specifications are mandatory in all 3D problems which require equation rotation at the boundaries (e.g. PLANE, KINEMATIC, VELO_NORMAL), a condition especially prevalent in free-surface problems. The goal of this input section is to specify the exact implementation of the equations at any boundary with rotated conditions (called rotated boundaries throughout this discussion). But first, consider the necessary background.
Rotation of Vector Equations : The fluid momentum and psuedo-solid or Lagrangian solid momentum equations are vector equations (i.e., they have x, y, and z components). The boundary conditions applied to these equations can either be vector conditions (applying in the x, y, and z directions) or scalar conditions (a single function of the solution and x, y, and z). Scalar conditions applied to vector equations represent a special challenge, because it is often unclear which of the vector equations should be replaced by the scalar conditions. For many scalar conditions, e.g. Dirichlet conditions, the user specifies which component of the momentum equation gets replaced by the scalar condition; however, not replacing all the components of the vector equation at a boundary results in applying a shear-stress-free or normal-stress-free condition there (because the BOUNDARY term of the equations needs to be computed or else the normal traction is implicitly zero).
In some cases, a better way to apply a scalar condition is to use it to replace the normal or tangential contribution of the vector equations, while retaining the other portions of the equation (e.g., a no penetration condition could constrain the normal component of velocity but still allow the stress along the boundary to be shear-free). In Goma, this is done by rotating the vector equation into a normal-tangential form:
n and t are the unit normal and tangent vectors at the boundary (evaluated at the centroid along the boundary of an element) and \(R_i^f\) is the vector form of the weighted residual equation. This rotation is performed after all weak boundary conditions have been applied, but prior to application of strong boundary conditions. Thus any weak contributions to the vector equation are retained throughout the rotation. \(R_i^{fn}\) is the normal component of the vector equation and \(R_i^{ft}\) is the tangent component of the vector equation. Note that the equations are rotated after they have been integrated rather than before; thus, the new residual equations are only strictly in normal-tangential form along straight boundaries (along curved boundaries there may be some error which becomes small as the element size decreases).
In Goma, rotated boundary conditions cause rotation of the vector equation on an element side if there are no Dirichlet conditions applied to that vector equation and if the total number of independent rotated conditions is less than the number of dimensions of the physical problem (i.e., in a 2D problem, the vector equation is rotated only when one independent rotated condition exists at that node).
Thus along any rotated boundary, the three vector equations (e.g. x, y, and z mesh equations) are replaced by three new equations as specified in this section. The user can decide to replace the component equations by rotated forms of the equations (or even unrotated forms of the equations), or to replace the component equations by boundary conditions. These specifications also dictate how to calculate the tangent vectors which are sometimes ill-defined in 3D. This section is designed to accommodate an arbitrary number of rotation specifications listed in the Goma input between Rotation Specifications = and END OF ROT.
All of this behavior is implemented through the overloaded ROT input card. There are three types of ROT cards depending on whether the condition applies on a surface, an edge or a vertex. Goma makes no assumptions about the topology of the mesh surfaces; all the topology is defined through the ROT card. In this implementation, a surface is defined as a side-set, an edge is defined as the intersection of two side-sets, and a vertex is defined as the intersection of three side-sets at a single node. Although all three types of input cards start with ROT =, we list them as three independent cards to make the discussion more straightforward. As nodes that are contained on edges must also be contained on the adjacent surfaces, these rotation specifications have a hierarchy – vertex, edge, surface – such that vertex conditions override edge conditions which override surface conditions.
Note: it is possible to solve a 3D problem with rotated boundaries by only creating rotation specifications for those boundaries, and letting Goma determine the behavior at the remaining boundaries. However, this is a dangerous practice; it is much better to explicitly tell Goma how to treat all boundaries so that the behavior is well defined. An important example is the intersection of a rotated boundary and an unrotated boundary, it is still a rotated boundary and requires an edge ROT specification.
Rotation Specifications¶
Rotation Specifications =
Description / Usage¶
This card denotes the start of the rotation specification cards. All rotation specification cards between this card and the END OF ROT card will read and processed. If this card is not present, no rotation cards will be read.
Examples¶
There are no input parameters for this card. It should appear on its on line exactly as follows:
Rotation Specifications =
Technical Discussion¶
No Discussion.
References¶
No References.
ROT SURFACE¶
ROT = {MESH | MOM} SURFACE <bc_id> <string_x> <int_x> <string_y>
<int_y> <string_z> <int_z> {seed_method} <float1> <float2> <float3>
Description / Usage¶
This rotation specification card identifies a specific surface that requires rotation of equations for proper application of boundary conditions in three dimensional problems. It identifies the boundary conditions that are to be applied on that surface. It also identifies which equation components are to be replaced by boundary conditions, which are to be replaced by rotated equation components, and which are to be left alone. Equation components refer, currently, to only rotation of mesh and momentum equations. This card also identifies the manner in which two independent tangent vectors are to be determined on the surface.
Definitions of the first three input parameters are as follows:
{MESH | MOM} |
Equation type (<eq_type>) to which this rotation condition applies:
|
SURFACE |
Type of rotation specification. |
<bc_id> |
An integer identifying the side set designation of the surface to which this rotation condition applies. |
The next six parameters dictate how the x, y, and z components of the vector equation are replaced by boundary conditions or rotated equations using pairs of specifiers, e.g., <string_x> and <int_x> for the x-component of the equation.
<string_x> |
A character string that specifies what will replace the x-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 1 (Valid Equation Rotation Strings). |
<int_x> |
This is an integer parameter specified as follows:
|
<string_y> |
A character string that specifies what will replace the y-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 1. |
<int_y> |
This is an integer parameter specified as follows:
|
<string_z> |
A character string that specifies what will replace the z-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 1. |
<int_z> |
This is an integer parameter specified as follows:
|
Table 1. Valid Equation Rotation Strings
{string_x|y|z} |
Description of Equation Rotation Selections |
---|---|
NONE, NA, or NO |
No rotation is performed for this equation component. |
N |
This equation component is replaced by normal component of the residual tn • R |
T |
This equation component is replaced by the tangential component of the residual: t • R (EDGE and VERTEX only) |
T1 |
This equation component is replaced by the first tangential component of the residual: T1 • R |
T2 |
This equation component is replaced by the second tangential component of the residual: T2 • R |
X |
This equation is replaced by the x-component of the residual. |
Y |
This equation is replaced by the y-component of the residual. |
Z |
This equation is replaced by the z-component of the residual. |
S |
The equation component is replaced by the projection of the equations in the direction of the seed vector: S • R |
B |
The equation component is replaced by the projection of the equations in the direction of the binormal vector. |
In most cases, only one of the three equations on a surface will be replaced by boundary conditions, and the remaining two equations will be rotated in the two tangent directions. Such a form constrains the normal motion of the solid or fluid while allowing tangential motions to occur stress-free.
The last four parameters in the card specify how to calculate the tangent vectors on the surface. In 3D, an infinite number of equally valid tangent pairs exist, so this card enables specifying how to choose those pairs. More specifically it identifies how to identify the first tangent vector (T1) since the second tangent vector is always be obtained via the cross product of the normal vector with the first tangent vector (T1).
{seed_method} |
A character string that defines the method of tangent calculation. Valid options are listed in the Surface Tangent Calculation Method (Table 2). |
<float1> |
x-component of the seed vector, s. This parameter is only needed if {seed_method} is SEED. |
<float2> |
y-component of the seed vector, s. This parameter is only needed if {seed_method} is SEED. |
<float3> |
z-component of the seed vector, s. This parameter is only needed if {seed_method} is SEED. |
Note that the seed vector specified does not have to be a unit vector.
Table 2. Surface Tangent Calculation Method
{seed_method} |
Description of Tangent Calculation Methods |
---|---|
NONE |
Tangent vectors should not be calculated. This is the usual choice for EDGE and VERTEX rotation types. |
SEED |
The first tangent vector (T1) is calculated from a surface projection of a seed vector, s: T1 = (I – nn) • s |
BASIS |
The first tangent is the direction of the first basis vector in the surface using a weighted average for adjacent elements. |
BASIS_FIRST |
The first tangent is the direction of the first finite element basis vector in the first element containing a given node. |
BASIS_RESEED |
The tangent resulting from BASIS_FIRST is used to reseed tangent calculation in the adjacent elements. (This method is the most reliable.) |
Examples¶
The following are several examples of useful rotation specifications for surfaces:
ROT = MESH SURFACE 99 KINEMATIC 99 T2 0 T1 0 BASIS_RESEED
ROT = MESH SURFACE 16 T1 0 T2 0 PLANE 16 SEED 1. 0. 0.
ROT = MOM SURFACE 5 VELO_NORMAL 5 T1 0 T2 0 BASIS
The first example applies to the mesh equations at side set 99, the second to mesh equations at side set 16, and the third to the fluid momentum equations at side set 5. As described previously, the <string_x>, <string_y> and <string_z> parameters can be any boundary condition name or rotation string. Thus for the first example above, the x-component of the mesh equation is replaced by a KINEMATIC boundary condition on side set 99, the y-component of the mesh equation is replaced by the second tangential component (T2) of the mesh equation, and the z-component of the mesh equation is replaced by the first tangential component (T1) of the mesh equation. Since the rotation selections in the first example (T2 and T1) are rotated components instead of boundary conditions, a value of zero for the <int_y> and <int_z> parameters is appropriate. Finally, for the first example, BASIS_RESEED was chosen as the {seed_method}, and thus no subsequent parameters were required. The second example, however, uses SEED as the {seed_method} and thus is followed by the x, y, and z components of the tangent vector, respectively, as <float1> of 1., <float2> of 0., and <float3> of 0.
Technical Discussion¶
The necessary background discussing the nature and need for rotation procedures and rotation specifications is supplied in several of the references listed below. Briefly, however, in order to apply certain boundary conditions accurately it is necessary that the vector components of the solid mesh or fluid momentum equations be replaced by components that are tangent and normal to the surface in question. This procedure is referred to in this context as “rotation of equations.” It should be noted that explicitly specifying rotation conditions is really only necessary for three dimensional problems. Rotation also occurs in two-dimensional problems, but is sufficiently simpler that it can be automated and is therefore transparent to the user.
Not every boundary condition needs an accompanying rotation specification card and those that do are identified in the description of each boundary condition. Each rotated boundary condition will require at least one SURFACE rotation card be included for the boundary condition’s side set. Failure to do so is an error. The boundary conditions most often encountered that will require rotation cards are the VELO_NORMAL card applied to the fluid momentum equations and the KINEMATIC, PLANE, and SPLINE cards applied to the solid mesh equations.
In almost every case the boundary condition constraint will replace the normal rotated component so only the two tangential components of the rotated equation remain. All three examples shown above are just this situation. This has the effect of constraining the normal motion of the solid or fluid and imposing zero tangential forces due to the natural boundary conditions present in both fluid and solid momentum equations.
Specification of a seed vector method is needed so that a unique pair of tangent vectors may be determined at each point on the surface. The BASIS, BASIS_FIRST and BASIS_RESEED use the finite element grid in the surface as a means of defining the first tangent vector. They can employ averaging over elements that share a node. They should be employed on surfaces for which it is difficult to find a single consistent seed vector for every point on the surface. The SEED method finds the projection of the vector supplied in the surface at the point of interest. This projection vector is normalized to obtain the first tangent vector. It should be clear that only vectors that are never normal to any point on the surface will be suitable. In practice, this condition can sometimes be hard to meet for some surfaces. In these cases, the other seeding methods should be used.
References¶
GT-007.2: Tutorial on droplet on incline problem, July 30, 1999, T. A. Baer
GT-012.0: 3D Roll coating template and tutorial for GOMA, February 21, 2000, P.R. Schunk
GT-018.1: ROT card tutorial, January 22, 2001, T. A. Baer
ROT EDGE¶
ROT = {MESH | MOM} EDGE <bc_id1> <bc_id2> <string_x> <int_x> <string_y>
<int_y> <string_z> <int_z> {seed_method} <float1> <float2> <float3>
Description / Usage¶
This rotation specification card deals with rotation specification along edges. In this context, an edge is the intersection of two side sets. It identifies the boundary conditions that will be applied at nodes on that edge and which equation components are to be associated with them. It also identifies which components of the rotated equations will be used. Currently, only rotation of mesh and momentum equations is allowed on edges. This card can also be used for specifying a seed vector if needed.
Definitions of the input parameters are as follows:
{MESH | MOM} |
Equation type to which this rotation condition applies:
|
EDGE |
Type of rotation specification. |
<bc_id1> |
Side set ID number of the primary side set. |
<bc_id2> |
Side set ID number of the secondary side set. |
The edge is defined as the intersection of the primary and secondary side sets.
The next six parameters dictate how the x, y, and z components of the vector equation are replaced by boundary conditions or rotated components using pairs of specifiers, e.g., <string_x> and <int_x> for the x-component of the equation.
<string_x> |
A character string that specifies what will replace the x-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 3 (Valid EDGE Tangent Equation Rotation Strings). |
<int_x> |
This is an integer parameter specified as follows:
|
<string_y> |
A character string that specifies what will replace the y-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 3. |
<int_y> |
This is an integer parameter specified as follows:
|
<string_z> |
A character string that specifies what will replace the z-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 3. |
<int_z> |
This is an integer parameter specified as follows:
|
Table 3. Valid EDGE Tangent Equation Rotation Strings
{string_x|y|z} |
Description of Equation Rotation Selections |
---|---|
NONE, NA, or NO |
No rotation is performed for this equation component. |
N |
This equation component is replaced by the normal component of the residual: n • R where n is the outwardpointing normal to <bc_id1> |
T |
This equation component is replaced by the tangential component of the residual: T • R where the tangent is a line tangent along the edge defined by <bc_id1> and <bc_id2>. |
B |
This equation component is replaced by the outwardpointing binormal component of the residual: B • R where the binormal is perpendicular to both the line tangent T and the outward-pointing normal to <bc_id1>. |
S |
The equation component is replaced by the projection of the equations in the direction of the seed vector: S • R |
X |
This equation is replaced by the x-component of the residual. |
Y |
This equation is replaced by the y-component of the residual. |
Z |
This equation is replaced by the z-component of the residual. |
In most cases, seeding of the tangent vectors is not needed along edges, although it is possible to specify a seed method as defined in the ROT SURFACE card via the parameters {seed_method}, <float1>, <float2>, and <float3>. Note also that a seed vector must be specified to use the S rotation option.
Examples¶
The following is an example of an edge rotation specification:
ROT = MESH EDGE 4 5 PLANE 4 PLANE 5 T 0 NONE
This card specifies rotation of the mesh equations along the edge of intersection of side sets 4 and 5. The x and y mesh equations are replaced by PLANE conditions on side sets 4 and 5, respectively. The z mesh equation is replaced by the mesh residuals rotated into the direction of the line tangent along the edge. This enables the mesh to slide freely (i.e., stress-free) along the edge.
Technical Discussion¶
The direction of the line tangent is chosen such that the binormal ( b = n × t ) with n, the outward-pointing normal to the primary surface <bc_id1>, is outwardpointing from the edge.
Along edges, two of the equations are normally replaced by boundary conditions and one equation is replaced by this tangential component. However several options are available for replacing the mesh equations by other forms of the rotated equations as listed in Table 3. (Valid EDGE Tangent Equation Rotation Strings) above.
It is very rare to require a seed vector be specified on an edge. The SEED vector choice is almost always NONE.
A precedence rule has been established for the case when more than one Rotation Specification could be applied at a point. The rule is as follows:
The Rotation condition that will be applied is:
A>The first VERTEX condition in the input deck that could apply. If there is no contravening VERTEX condition then,
B>The first EDGE condition in the input deck that could apply. If there is no contravening EDGE condition then,
C>The first SURFACE condition that could apply.
A very important restriction exists for EDGE and VERTEX rotation conditions. It is a necessary requirement that all elements that are present on an edge have only a single segment present on the edge curve. An element may therefore never contribute more than two corner vertex nodes to the set of nodes on an edge curve. If there are more than two such nodes for a given element, Goma will terminate with a “Side not connected to edge” error. If such a situation exists, the only solution is to remesh the geometry to eliminate such elements.
References¶
GT-007.2: Tutorial on droplet on incline problem, July 30, 1999, T. A. Baer
GT-012.0: 3D Roll coating template and tutorial for GOMA, February 21, 2000, P.R. Schunk
GT-018.1: ROT card tutorial, January 22, 2001, T. A. Baer
ROT VERTEX¶
ROT = {MESH | MOM} VERTEX <bc_id1> <bc_id2> <bc_id3> <string_x>
<int_x> <string_y> <int_y> <string_z> <int_z> {seed_method} <float1> <float2> <float3>
Description / Usage¶
This rotation specification card deals with rotation specification at vertices. In this context, a vertex is the intersection point of three side sets. It identifies the boundary conditions that will be applied at the vertex node and which equation components are to be associated with them. It also identifies which components of the rotated equations will be used. Currently, only rotation of mesh and momentum equations is allowed at a vertex. This card can also be used for specifying a seed vector if needed.
Definitions of the input parameters are as follows:
{MESH | MOM} |
Type of equation to which this specification applies,where
|
VERTEX |
Type of rotation specification. |
<bc_id1> |
Side set ID number of the primary side set. |
<bc_id2> |
Side set ID number of the secondary side set. |
<bc_id3> |
Side set ID number of the tertiary side set. |
The vertex is defined as the point at the intersection of the primary, secondary, tertiary side set. Note that it is possible for these three side sets to intersect at more than one discrete point. The VERTEX condition is applied to all such points.
The next six parameters dictate how the x, y, and z components of the vector equation are replaced by boundary conditions or rotated components using pairs of specifiers, e.g., <string_x> and <int_x> for the x-component of the equation.
<string_x> |
A character string that specifies what will replace the x-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 4 (Valid VERTEX Tangent Equation Rotation Strings). |
<int_x> |
This is an integer parameter specified as follows:
|
<string_y> |
A character string that specifies what will replace the y-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 4. |
<int_y> |
This is an integer parameter specified as follows:
|
<string_z> |
A character string that specifies what will replace the z-component of the vector equation (MESH or MOMENTUM). This string may be the name of a boundary condition already specified in the boundary condition specification section or one of the rotation strings listed in Table 4. |
<int_z> |
This is an integer parameter specified as follows:
|
Table 4. Valid VERTEX Tangent Equation Rotation Strings
{string_x|y|z} |
Description of Equation Rotation Selections |
---|---|
NONE, NA, or NO |
No rotation is performed for this equation component. |
N |
This equation component is replaced by the normal component of the residual: n • R where n is the outwardpointing normal to <bc_id1> |
T |
This equation component is replaced by the tangential component of the residual: T • R where the tangent is a line tangent along the edge defined by <bc_id1> and <bc_id2>. |
B |
This equation component is replaced by the outwardpointing binormal component of the residual: B • R where the binormal is perpendicular to both the line tangent T and the outward-pointing normal to <bc_id1>. |
S |
The equation component is replaced by the projection of the equations in the direction of the seed vector: S • R |
X |
This equation is replaced by the x-component of the residual. |
Y |
This equation is replaced by the y-component of the residual. |
Z |
This equation is replaced by the z-component of the residual. |
In most cases, seeding of the tangent vectors is not needed along vertices, although it is possible to specify a seed method as defined in the ROT SURFACE card via the parameters {seed_method}, <float1>, <float2>, and <float3>. Note also that a seed vector must be specified to use the S rotation option.
Examples¶
The following is an example of a vertex rotation specification:
ROT = MESH VERTEX 3 4 6 PLANE 4 PLANE 3 PLANE 6 NONE
ROT = MESH VERTEX 5 4 6 PLANE 4 KINEMATIC 5 PLANE 6 NONE
In the first example, the vertex is at the intersection of side sets 3, 4 and 6, and the three mesh equations at this vertex are replaced by PLANE conditions from side sets 4, 3, and 6, respectively. In the second example, the vertex is at the intersection of side sets 4, 5, and 6, respectively. Since it is conceivable that side set 5 might represent a free surface that curves in three dimensions, the last VERTEX card might apply to more than one point.
Technical Discussion¶
Despite the fact that VERTEX cards apply only at single points, definitions of the normal, tangent and binormal vectors are still operative. The normal vector, N, is the outward-pointing normal to the primary side set, the tangent vector, T, is defined to lie along the curve defined by the intersection of the primary and secondary side set, and the binormal vector, B, is defined simply as the cross product of the normal vector with the tangent vector. Note that the sense of the tangent vector is chosen so that the binormal vector will always point outwards from the domain.
At a vertex, it is normally the case that all three rotated components will be replaced by boundary conditions as suggested by the examples. However, it is not a rarity that a rotated component, usually N or T, will also appear.
The same hierarchy of precedence is used to determine which rotation specification will be applied when more than one could apply to a node. The rule is as follows:
The Rotation condition that will be applied is:
A>The first VERTEX condition in the input deck that could apply. If there is no contravening VERTEX condition then,
B>The first EDGE condition in the input deck that could apply. If there is no contravening EDGE condition then,
C>The first SURFACE condition that could apply.
Very often VERTEX cards are used to resolve ambiguities that arise at points where multiple SURFACE or EDGE cards could apply.
References¶
GT-007.2: Tutorial on droplet on incline problem, July 30, 1999, T. A. Baer
GT-012.0: 3D Roll coating template and tutorial for GOMA, February 21, 2000, P.R. Schunk
GT-018.1: ROT card tutorial, January 22, 2001, T. A. Baer