*morphmaplinestolines
Maps selected elements lying on an initial set of lines to an interpolated cross section represented by another set of lines optionally rotating trailing nodes and/or mapping about an axis (axis and plane) or using a number of linear mapping options.
Syntax
*morphmaplinestolines m_entity_type m_mark_id t_entity_type t_mark_id i_line_list f_line_list fixed_entity_type fixed_mark_id r_plane rotate blend axis sym con
Type
HyperMesh Tcl Modify Command
Description
This command maps selected elements lying on an initial set of lines to an interpolated cross section represented by another set of lines optionally rotating trailing nodes and/or mapping about an axis (axis and plane) or using a number of linear mapping options.
This command interpolates a number of *morphmapdifference() calls between line pairs. It is critical that the order of the initial lines match the order of the final lines in their respective lists for this command to function properly. For best results the lines should be planar (cross-sections) and should intersect at right angles.
If blend is set to 1, no fixed nodes have been selected, and no mapped nodes are a part of any domain, this command will automatically assign all non-mapped nodes as fixed nodes.
If blend is set to 2, the blending will only be applied to nodes which lie along the mesh between the fixed nodes and the mapped nodes.
The axis option allows you to apply section mapping for sections that apply about an axis (option 1). Section lines should lie in one or more radial planes or lie in planes normal to the axis of rotation.
The axis option is also used to select the type of projection for the nodes to the section lines. This projection determines how the section lines influence the nodes. Option 0 is preferred, which projects each node normal to the plane of each section line. Option 2 approximates the section line as a straight line and projects the nodes normal to the line, which is better for non-planar lines. Option 3 projects the nodes along a specified vector. Option 4 is like Option 2, but the projection line is forced to be in the specified plane, which is better for non-planar lines which you want to behave like planar lines. Option 5 does not project the nodes to the lines, but instead uses kriging to determine the morphing of the nodes.
Inputs
- m_entity_type
- Must be set to elems.
- m_mark_id
- The mark ID for mapped elements. Valid values are 1 and 2.
- t_entity_type
- Must be set to nodes.
- t_mark_id
- The mark ID for trailing nodes. Valid values are 1 and 2.
- i_line_list
- The mark ID for the line list marking the initial position of the mapped elements. Valid values are 1 and 2.
- f_line_list
- The mark ID for the line list marking the final position of the mapped elements. Valid values are 1 and 2.
- fixed_entity_type
- Must be set to nodes.
- fixed_mark_id
- The mark ID for fixed nodes. Valid values are 1 and 2.
- r_plane
- Plane used for axis of rotation and projection options 3 and 4. Valid values are 1 and 2.
- rotate
- 0 - Linear point to point mapping between lines.
- blend
- 0 - Do not blend unselected nodes.
- axis
- 0 - Project nodes to line normal to the plane of the line (preferred)
- sym
- 0 - Do not use symmetry (only option).
- con
- 0 - Do not use constraints.
Examples
To map a mesh given two sets of three lines each using rotation, no blending, and projecting nodes normal to the planes of the lines:
*createmark elems 1 "all"
*createmark nodes 1
*createlist lines 1 11 12 13
*createlist lines 2 21 22 23
*createplane 1 1.0 0.0 0.0 1.0 0.0 0.0
*morphmaplinestolines elems 1 nodes 1 1 2 nodes 2 1 1 0 0 0 1
To map a mesh given two sets of three lines each about an axis using no rotation, and blending through the mesh:
*createmark elems 1 "all"
*createmark nodes 1
*createlist lines 1 11 12 13
*createlist lines 2 21 22 23
*createplane 1 1.0 0.0 0.0 1.0 0.0 0.0
*morphmaplinestolines elems 1 nodes 1 1 2 nodes 2 1 1 2 1 0 1
Errors
if { [ catch {command_name...} ] } {
# Handle error
}
"Number of lines in each list must be equal." - occurs if the number of lines found in i_line_list is different than the number of lines in f_line_list.
"Not enough memory." - occurs if there is not enough memory to complete the command.