*morphmanualapplyenvelope
Turns manually modified node positions into a morph.
Syntax
*morphmanualapplyenvelope e_entity_type e_mark_id f_entity_type f_mark_id mode mbias fbias integ envelope undisplayed
Type
HyperMesh Tcl Modify
Description
This command can only be used after *morphmanualinit.
If mode is 0, no other information is required, the difference in positions of the nodes between the *morphmanualinit command and the *morphmanualapplyenvelope is converted into a morph.
If mode is 1, then 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.
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 mode is set to 2, then the previous *morphmanualapplyenvelope command is rejected and the nodes are left in their manually perturbed positions. The model is still 'initialized' and thus another *morphmanualapplyenvelope command can be called after a reject. To restore the model to the way it was, call *morphmanualrestore.
If mode is set to 3 then the memory set aside by *morphmanualinit is freed, and *morphmanualapplyenvelope can no longer be used until another *morphmanualinit command is called. It is good practice to use this mode to free memory which is no longer needed.
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 sent in for undisplayed.
Inputs
- 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.
- mode
- 0 - Apply as node perturbations
- mbias
- Bias factor for moving nodes on affected elements.
- fbias
- Bias factor for fixed nodes on affected elements.
- integ
- 0 - Free edges (a single general domain)
- envelope
- If positive, all nodes beyond the given distance away from the moving nodes will be fixed.
- 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:
Example
To manually move nodes and apply them to the mesh as if they were handles using internally generated domains with inferred edges, then reject the changes:
*morphmanualinit
(any commands which move nodes)
*createmark nodes 1 21 22 23
*createmark elems 1 "all"
*morphmanualapplyenvelope elems 1 nodes 1 1 1.0 1.0 2 0.0 0
*morphmanualrestore
Errors
if { [ catch {command_name...} ] } {
# Handle error
}
Version History
12.0.110