*morphnodesnormalenvelope

Moves the selected nodes normal to the attached elements while morphing the affected elements.

Syntax

*morphnodesnormalenvelope m_entity_type m_mark_id e_entity_type e_mark_id f_entity_type f_mark_id n_entity_type n_mark_id dist integ mbias fbias envelope undisplayed

Type

HyperMesh Tcl Modify Command

Description

This command will move the selected nodes the specified distance normal to the selected elements. The fixed nodes are held in place and the affected elements (or all unfixed nodes in the model if integ is 3 or 6) are stretched according to the value of integ.

Temporary handles are created for all moving and fixed nodes to determine the stretching of the affected elements. If integ is 0, a general domain is temporarily created for the affected elements. If integ is 1, the domains currently in the model are used. If integ is 2, 1D, 2D, 3D, and edge domains are temporarily created for the affected elements but the 2D domains are not partitioned. If integ is 3 then handle influences are applied using a spatial relationship rather than through a domain. If integ is 4, only the selected moving nodes are moved and all others are held fixed. If integ is 5, 1D, 2D, 3D, and edge domains are temporarily created for the affected elements and the 2D domains are partitioned. Any handles created due to partitioning are moved based on their distance from the moving and fixed nodes. If integ is 6, then handle influences are applied using the Kriging algorithm. If integ is 7, then handle influences extend only up to a given distance (if envelope is positive) or a given multiple of the applied perturbations (if envelope is negative) away from the moving nodes.

If 100 is added to the value of integ, the normals of the elements selected for determining the direction of morphing will be averaged with their neighbors, resulting in a smooth distribution of vectors around sharp corners.

If 200 is added to the value of integ, the normals of the elements selected for determining the direction of morphing will be calculated using the "CFD corners" method, resulting in a very smooth distribution of vectors around sharp corners which should prevent mesh folding.

The bias factors function as they would for handles except that all moving nodes will have the mbias value and all fixed nodes will have the fbias value.

If integ is set to 3, 6, or 7, nodes on undisplayed elements and components can be morphed, fixed, or excluded depending on the value of undisplayed.

Inputs

m_entity_type
Must be set to nodes.
m_entity_mark
The mark ID of the moving nodes. Valid values are 1 and 2.
e_entity_type
Must be set to elems.
e_entity_mark
The mark ID of the affected elements. Valid values are 1 and 2.
f_entity_type
Must be set to nodes.
f_entity_mark
The mark ID of the fixed nodes. Valid values are 1 and 2.
n_entity_type
Must be set to elems.
n_mark_id
The mark ID of the element used to determine the normal direction. Valid values are 1 and 2.
dist
The distance the nodes will be moved.
integ
0 - Free edges (a single general domain)
1 - Use existing domains
2 - Inferred edges (1D, 2D, 3D, and edge domains - no partitioning)
3 - Morph all nodes using a proximity algorithm
4 - Morph all moving nodes and fix the unselected nodes
5 - Partitioned edges (1D, 2D, 3D, and edge domains with partitioning)
6 - Morph all nodes using the Kriging algorithm
7 - Morph all nodes within an envelope around the moving nodes
+100 - Smooth the calculated element normals by averaging
+200 - Use the "CFD corners" method to calculate the normals
mbias
Bias factor of moving nodes.
fbias
Bias factor of fixed nodes.
envelope
If positive, all nodes beyond the given distance away from the moving nodes will be fixed.
If negative, all nodes beyond a distance calculated by multiplying the total perturbation of each moving node by the absolute value of the envelope and extended away from each moving node will be fixed.
If integ is set to 7, the calculated distance defines an envelope around the moving nodes within which the morphing of those nodes will linearly taper from fully matching the nearest moving node to zero at the edge of the envelope. If any fixed nodes are within the envelope they will also reduce the morphing of nearby nodes.
undisplayed
If integ is set to 3, 6, or 7, nodes which are not displayed can be affected by the morphing. This defines how undisplayed nodes are handled:
0 - Morph nodes on undisplayed elements
1 - Fix nodes on undisplayed elements, they will function just like nodes on the fixed mark
2 - Exclude nodes on undisplayed elements, they will not be morphed nor affect the morphing

Example

To move a mark of nodes normal to their attached elements by 5 units and stretch all the elements in the model using the existing domains:

*createmark nodes 1 11 12 13
*createmark elems 1 "all"
*createmark nodes 2 21 22 23
*createmark elems 2 "all"
*createvector 1 1.0 0.0 0.0
*morphnodesnormalenvelope nodes 1 elems 1 nodes 2 elems 2 5.0 1 1.0 1.0 0.0 0

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

12.0.110