*morphmapdifference

Creates two lines and maps selected nodes from one to the other optionally following the curvature differences (rotate) between the lines and/or mapping about an axis (axis and plane) or using a number of linear mapping options.

Syntax

*morphmapdifference m_entity_type m_mark_id f_entity_type f_mark_id i_line_list i_node_list f_line_list f_node_list r_plane rotate axis sym con blend mbias fbias

Type

HyperMesh Tcl Modify Command

Description

This command creates two lines and maps selected nodes from one to the other optionally following the curvature differences (rotate) between the lines and/or mapping about an axis (axis and plane) or using a number of linear mapping options.

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 projects each node normal to the plane of each section line which is best when the lines lie in the same plane. Option 2, the preferred option, 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 nodes.
m_mark_id
The mark ID for mapped nodes. Valid values are 1 and 2.
f_entity_type
Must be set to nodes.
f_mark_id
The mark ID for fixed nodes. Valid values are 1 and 2.
i_line_list
Line list ID for initial position line. Valid values are 1 and 2.
i_node_list
Node list ID for initial position line. Valid values are 1 and 2.
f_line_list
Line list ID for final position line. Valid values are 1 and 2.
f_node_list
Node list ID for final position line. Valid values are 1 and 2.
r_plane
Plane used for axis of rotation. Valid values are 1 and 2.
rotate
0 - Linear point to point mapping between lines.
1 - Rotate nodes along with curvature difference between lines
axis
0 - Project nodes to line normal to the plane of the line (preferred)
1 - Apply mapping about axis defined by r_plane
2 - Project nodes to line normal to the axis of the line
3 - Project nodes to line along vector (r_plane normal)
4 - Project nodes to line in plane (r_plane)
5 - Use kriging to map nodes
sym
0 - Do not use symmetry (only option).
con
0 - Do not use constraints.
1 - Use constraints
blend
0 - Do not blend unselected nodes.
1 - Blend all nodes other than mapped and fixed nodes
2 - Blend only nodes on mesh between mapped and fixed nodes
mbias
Bias factor of mapped nodes.
fbias
Bias factor of fixed nodes.

Examples

To map nodes from one line to another using rotation:

*createmark nodes 1 1 2 3
*createmark nodes 2 11 12 13
*createlist lines 1 31
*createlist nodes 1
*createlist lines 2 32
*createlist nodes 2
*createplane 1,1.0 0.0 0.0 1.0 0.0 0.0
*morphmapdifference nodes 1 nodes 2 1 1 2 2 1 1 0 0 1 0 1.0 1.0

To map nodes from one line to another about an axis with no rotation, blending through the mesh, and biasing factors of 2.0:

*createmark nodes 1 1 2 3
*createmark nodes 2 11 12 13
*createlist lines 1 31
*createlist nodes 1
*createlist lines 2 32
*createlist nodes 2
*createplane 1,1.0 0.0 0.0 1.0 0.0 0.0
*morphmapdifference nodes 1 nodes 2 1 1 2 2 1 1 1 0 1 2 2.0 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
}

"Not enough memory." - occurs if there is not enough memory to complete the command.