*map_symmetric_mesh

Maps a mesh between symmetric source/target surfaces.

Syntax

*map_symmetric_mesh entity_type mark_id_source mark_id_target string_array number_of_strings

Type

HyperMesh Tcl Modify Command

Description

Maps the mesh from source surfaces to target surfaces with an optionally supplied transformation. The transformation can be supplied as a translation, a rotation, or a 4x4 transformation matrix. If not supplied, the transformation is computed internally. The tolerance for associating the mapped mesh to the underlying surface can also be supplied. If not given, the global node tolerance is used instead.

The output information is logged into two global Tcl arguments: g_hw_argc and g_hw_argv. These can be accessed after the execution of the command.

If a transformation was not supplied to the command, the internally computed transformation is logged in terms of translation and rotation. It also contains the general status of the command (whether the surfaces are symmetric or not).

Inputs

entity_type
The type of source/target entity. Currently only supported for surfs.
mark_id_source
The ID of the source mark of entities. Valid values are 1 and 2.
mark_id_target
The ID of the target mark of entities. Valid values are 1 and 2.
string_array
The ID of the string array that contains the additional input parameters. The string array is created using the *createstringarray command. This should always be set to 1.
Valid parameters and their syntax are:
rotation:
angle: <angle in degrees> axis: <axis, x component> <axis, y component > <axis, z component >
base: <base, x component> < base, y component > < base, z component >
tolerance:
<value>
transformation:
<tr11> <tr12> <tr13> <tr14> <tr21> <tr22> <tr23> <tr24> <tr31> <tr32> <tr33> <tr34> <tr41> <tr42> <tr43> <tr44>
translation:
<x component> <y component > <z component>
ElementMappingAsLists
If present, element lists 1 and 2 are populated with source and corresponding target elements, respectively. This is useful for determining the source-to-target element mapping. Case insensitive.
NodeMappingAsLists
If present, node lists 1 and 2 are populated with source and corresponding target nodes, respectively. This is useful for determining the source-to-target node mapping. Case insensitive.
PreferReflection
If present, reflective symmetry is preferred. Otherwise, other symmetries get perference over reflective symmetry. Case insensitive.
number_of_strings
Integer indicating the size (number of strings) in the string array created using *createstringarray.

Example

To map the mesh from surface with ID 10 to surface with ID 20 (surfaces are symmetric) with a translation along the y direction, and a rotation of 90 degrees along the global y-axis:
*createmark surfs 1 10
*createmark surfs 2 20
*createstringarray 2 {{translation: 0 1 0} {rotation: angle :90 axis : 0 1 0 base: 0 0 0}}
*map_symmetric_mesh surfs 1 2 1 2
if { [info exists g_hw_argc] } {
foreach outMessage $g_hw_argv {
puts $outMessage
}
}
To map the mesh from surface with ID 10 to surface with ID 20, auto detecting the transformation:
*createmark surfs 1 10
*createmark surfs 2 20
*map_symmetric_mesh surfs 1 2 1 0
To map the mesh from surface with ID 10 to surface with ID 20, auto detecting the transformation, and getting the source to target node and element mappings:
*createmark surfs 1 10
*createmark surfs 2 20
*createstringarray 2 "NodeMappingAsLists" "ElementMappingAsLists"
*map_symmetric_mesh surfs 1 2 1 2
set sourceNodeList [hm_getlist nodes 1]
set targetNodeList [hm_getlist nodes 2]
set sourceElemList [hm_getlist elements 1]
set targetElemList [hm_getlist elements 2]
To do the mapping using a custom tolerance and transformation matrix:
*createmark surfs 1 10
*createmark surfs 2 20
*createstringarray 2 "transformation: 0 0 1 0 0 1 0 0 -1 0 0 0 2.5 0 12.5 1" "tolerance: 0.1"
*map_symmetric_mesh surfs 1 2 1 2
set sourceNodeList [hm_getlist nodes 1]
set targetNodeList [hm_getlist nodes 2]
set sourceElemList [hm_getlist elements 1]
set targetElemList [hm_getlist elements 2]
To do the mapping by auto-detecting the transformation, and associate the mesh with the given tolerance:
*createmark surfs 1 10
*createmark surfs 2 20
*createstringarray 2 "tolerance: 0.1"
*map_symmetric_mesh surfs 1 2 1 2
set sourceNodeList [hm_getlist nodes 1]
set targetNodeList [hm_getlist nodes 2]
set sourceElemList [hm_getlist elements 1]
set targetElemList [hm_getlist elements 2]

Errors

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

Version History

11.0.101

2019.1 - Added new string_array values tolerance and transformation.