*element3Dalign

Aligns the order of nodes in 3D elements based on the nodes of attached 2D/3D elements.

Syntax

*element3Dalign mark_id_3D mark_id_2D propagate

Type

HyperMesh Tcl Modify

Description

Aligns the order of nodes in 3D elements based on the nodes of attached 2D elements. This is done in such a way that the base face of the 3D element has the same nodes as the 2D element. This can also use aligned hexa elements to align all "attached by face" hexas with the same node order.

Inputs

mark_id_3D
The mark ID containing the hexa elements to align.
mark_id_2D
The mark ID containing the 2D/3D elements to use as reference. 3D elements can only be used when propagate is set to 1 or 2.
propagate
0 - Aligns only 3D elements directly attached by face to 2D elements (1 layer).
1 - Propagate alignment to all attached by face hex elements. Several assumptions apply to this option:
  • Mesh has a regular structure in terms of connectivity in the base face normal direction. "Regular" means that it is a drag-like structure.
  • Mesh structure may contain holes, and layers may be truncated. For example, you can take a regular 16x9x5 grid of hexas and delete any hexas from the grid, keeping the rest connected by faces.
  • Not more than one 2D element for alignment should contact any 3D element. To avoid conflicts, aligning 2D elements should not be in different alignment directions.
  • For regular hexa meshes just one 2D or 3D element is enough to set alignment for the whole grid. If there are other non-hexa 3D elements in the mesh, the command aligns only the non-hexa elements directly attached to 2D elements.
2 - Same as 1, but shift base nodes to make a "checkerboard".

Example

To align all hex8 elements by quad4 elements use the command:
*createmark elems 1 "by config" hex8
*createmark elems 2 "by config" quad4
*element3Dalign 1 2 1
To align 1 layer of 3D elements by attached shell elements use:
*createmark elems 1 displayed
*createmark elems 2 displayed
*element3Dalign 1 2 0

Errors

Incorrect usage results in a Tcl error. To detect errors, you can use the catch command:
if { [ catch {command_name...} ] } {
   # Handle error
}