Morph Constraints Panel

Use the Morph Constraints panel to create constraints that restrict the movements of nodes or force compliance with dimensional requirements during morphing. Constraints are entities and are saved with the model.

Location: Tools page > HyperMorph module

Panel Usage

Changes made on one subpanel do not affect the other, and are persistent so that you can switch freely between subpanels without losing any settings already made.

You can change the nodes that are associated with a constraint being reviewed by adding or removing them and clicking update. Clicking reject rejects the last constraint created.

You can also release nodes from all of their constraints by accessing the release nodes subpanel, selecting the nodes to be released, and clicking release.

Create/Update Subpanel

Use the Create/Update subpanel to create a new constraint, or to select and modify an existing one.

A constraint is set to be active when it is created, meaning that the constraint will be applied automatically whenever the model is morphed. A constraint's active status can be changed in the Morph Options panel or by clicking options to go to the morphing subpanel. Click the morphconstraints collector to modify which constraints are active and which are not.
Note: Constraints will only be applied if the use constraints checkbox is selected.

When a constraint to a line, plane, surface, elements, or an equation is applied, the nodes will be moved to that feature and the node movement will be stored as a morph that can be undone and redone. However, undoing a morph that occurred as part of constraining nodes will not remove the constraint. To remove a constraint after it has been applied, you will need to do one of the following: click reject, use the release feature on the release nodes subpanel, or delete the constraint (via the delete panel).

Nodes may be part of multiple constraints. In these cases, HyperMorph will perform a series of iterations to try to satisfy all of the constraints. For instance, a node constrained to two intersecting surfaces will be moved to a point along the interface between those surfaces. If all of the constraints cannot be met for a given node, HyperMorph will return a warning.

When morphing, constraints are applied after the nodes or handles are morphed. In some cases this may change the amount of morphing applied to the handles or nodes. For instance, when rotating handles which are constrained to move along a line, the handles will first be rotated by the given amount and then moved to line, possibly altering the angle applied to the handles. This is true for all morphing operations except when the distance or angle is changed in the Morph panel, alter dimensions subpanel, which will iterate until both the desired distance or angle is met and the constraints have been satisfied.

For tangency constraints, you are allowed to create tangency "chains" by joining as many 2D or edge domains as desired and even make loops, although main-secondary loops and other insolvable configurations are not allowed. Also, while the 2D domain tangency option is fairly robust, its performance may not be satisfactory when long, curving chains of domains are made tangent to each other. In those cases, the interpolate surf feature in the Map to Geom panel can be used to smooth the mesh.

When a model constraint (length, angle, radius, arc angle, area, volume, or mass) is applied, the shapes associated with the constraint will be applied to the model in order to enforce the constraint. For example, if you have a model that must weigh no more than a certain amount you can create a mass constraint that uses a shape which varies the total width of the model. From then on, after every morph, HyperMorph checks the current weight of the model and, if the model is too heavy, it applies the shape, reducing the width of the model, so that the weight does not exceed the value set in the mass constraint.

Constraints are not retroactive when applied. Morphs in the undo list as well as saved shapes will not be updated to match any constraints that you create afterward. You can update an existing shape to be constrained by removing all morphs, applying the shape with the constraint active, and saving the shape to the same name.
Option Action
along vector: Define the vector along which the nodes may travel.
Note: Only available for along vector constraints.
angle Specify an angle value to constrain nodes to.

This option works in conjunction with the equal to /upper bound / lower bound switch and calculate button.

Clicking twice on the label/button opens the calculator.

Note: Only available for angle constraints.
at origin / at node / at system Choose the starting point of the path defined by the equation.
at origin
Use the origin point of the default global system.
at node
Select the desired node.
at system
Select the desired local coordinate system.
Note: Only available for equation constraints.
arc angle Specify an angle value to constrain nodes to.

This option works in conjunction with the equal to /upper bound / lower bound switch, calculate button, and find center / center axis / center line / center node switch.

Clicking twice on the arc angle label/button opens the calculator.

Note: Only available for arc angle constraints.
area Specify a total area to constrain nodes to.

This option works in conjunction with the equal to /upper bound / lower bound switch, calculate button, and elems selector.

Clicking twice on the area label/button opens the calculator.

Note: Only available for area constraints.
(constraint type switch) Select the constraint type.
color Select a color for the constraint entity.
calculate Calculate the current value of the constraint. For example, after selecting nodes for the node list, click this button to automatically place the total length of the node list into the length field above it.
Note: Only available for the length, angle, radius, arc angle, area, volume, or mass constraints.
connected edge domains Select the edge domains connected to the constraint.
Note: Only available for smooth constraints.
continuous / main-secondary / fixed end / attached
continuous, main-secondary, attached tangency
Select two domains to be constrained; one for each domain selector.
Note: Continuous is the only tangency type available for 2D domains.
fixed end tangency
Select an edge domain to be constrained; select a node at the end which is to be constrained and a vector to orient the end of the edge domain.
Note: Only available for tangency constraints.
create generic Generate a shape which, when applied, changes the target constraint value. For example, once you have specified a node list, you can click this button to quickly create a basic morph shape that changes the length of the node list.
Note: Only available for length, angle, radius, arc angle, area, volume, or mass constraints.
domain Select the domains between which the tangency constraint exists.
Note: Two of these selectors is only available for tangency constraints.
elems Select the mesh elements to which the nodes are constrained.
For area, volume, or mass constraints, the area/volume/mass is calculated from the selected elements (before morphing) and that total area/volume/mass is maintained after morphing, though the shape of the element cluster can change.


Figure 1. Area Constraint on Elements


Figure 2. Shape Changes, but Total Area (L x W) is Preserved
Note: Only available for elements, area, volume, or mass constraints.
equal to / upper bound / lower bound Choose how the value in the length field is used.
equal to
Do not change the node list's overall length.
upper bound
Contract the node list, but do not expand beyond the specified length.
lower bound
Expand the node list, but do not contract to less than the specified length.
Note: Only available for length, angle, radius, arc angle, area, volume, and mass constraints.
exclude beyond Exclude any selected nodes which are either beyond a certain distance or beyond a given number of rows of elements away from the selected elements.

In the dialog that opens there are two collectors which match the contents of the nodes and elements in the panel. You can modify the selected nodes and elements by double-clicking these collectors.

The dialog also contains an entry field which you can use to enter the number of model units or number of element rows. After the entry field there is a selector which you can use switch between model units and element rows.

If model units is selected, any nodes beyond the given number of model units will be excluded from the selected nodes. If element rows is selected, any nodes beyond the given number of element rows away from the selected elements will be excluded from the selected nodes. For element rows, the rows of elements must be attached to the selected elements and all nodes not a part of the rows of elements will be excluded.

When exclude is clicked, any nodes beyond the given criteria are removed from the selected nodes. If no nodes have been selected, all the nodes in the model which are not attached to the selected nodes are placed on the mark and those beyond the given criteria are then excluded from the mark.

Figure 3 shows how the exclude beyond functionality is used. In the image on the left, all of the nodes for the crimson mesh and the elements shown in gray are selected for an on elements type morph constraint. Using the exclude beyond dialog, model units is selected as the distance option and a distance of 1000.0 is used to exclude all of the nodes which are more than a thousand model units away from the selected elements. In the image on the right, the exclude has been clicked and the nodes left on the mark are those at or within one thousand model units of the selected elements.


Figure 3.
Note: Only available for the elements type morph constraint.
find center / center axis / center line / center node Works in conjunction with the edge domain selector to help determine the correct value for the radius or arc angle numeric boxes.
find center
Infers the center from the plane of the edge domain.
center axis
Use a plane and vector selector to specify a plane and base node. The axis is the plane's normal at the base node.
center line
Specify the desired line.
center node
Specify the desired node.
F(xyz) Select an equation. Text fields will be automatically populated upon selection. Edit these equations if necessary.

Replace constants a, b, c, r, and R with numbers. For more complex shapes defined by more than one equation (such as a torus) the corresponding equations fill into each of the two text fields.

You can also specify your own function. The function may contain x, y, and z variables with the rest being numbers or expressions. The surface defined when the function is set to zero will be used as the boundary for the constraint. You can add more equations by means of the prev and next buttons.

Note: Only available for equation constraints.
fix dofs: Constrain the degrees of freedom of the nodes for a given coordinate system for an along dofs constraint.
x translation (r)
Fix the x or r coordinate of each node with respect to the coordinate system.
y translation (theta)
Fix the y or theta coordinate of each node with respect to the coordinate system.
z translation (phi)
Fix the z or phi coordinate of each node with respect to the coordinate system.
fixed at: node Select the node that is the fixed point for the end which is to be constrained.
Note: Only available for tangency constraints of type fixed end.
fully fixed / translate only / force normal / allow sliding Choose how the inner layers of a fixed layers style constraint on elements will move when the outer layer is morphed.
fully fixed
Translate and rotate the inner nodes to match changes in the constraint elements, preserving the initial distance and orientation.
translate only
Translate the inner nodes to match changes in the constraint elements, preserving the initial distance.
force normal
Force the inner nodes to lie normal to the constraint elements when the constraint is created.
allow sliding
Move the inner nodes perpendicular to the normal direction as long as the initial distance in the normal direction is preserved.
global system / syst Choose a global system/local system for an along dofs constraint. The degrees of freedom of the system selected will be used for all the nodes of the constraint.
length Specify a total length value to constrain nodes to. This option works in conjunction with the equal to /upper bound / lower bound switch, calculate button, and node list selector.

Clicking twice on the length label/button opens the calculator.

Note: Only available for length constraints.
line Select the line along which nodes are allowed to move.
Note: Only available for along line constraints.
mass Specify a total mass value to constrain nodes to. This works in conjunction with the equal to /upper bound / lower bound switch, calculate button, and elems selector.

This value is calculated based on the area/volume of the selected elems, and density data supplied by a property card. The total mass remains fixed after morphing, even if the shape of the element cluster changes.

Clicking twice on the mass label/button opens the calculator.

Note: Only available for mass constraints.
measured along Choose what vector or path the length is measured along.
node list
Use the node list already specified under the length switch.
N1N2
Select two nodes in the mesh. The length is measured along the line between them.
x axis, y-axis, z-axis
Measure the length along the chosen axis of the default global coordinate system.
moves along / bounded / set distance / fixed layers
moves along
Define an entity, vector, or equation along which the nodes are permitted to move during a morph operation.
You can constrain nodes to move along a vector, line, plane, surface, elements, or an equation. These nodes will follow the feature selected during morphing enabling you to alter the shape of a mesh while keeping it on a line, surface, vector, plane, mesh, or surface of a function. The nodes constrained to a feature do not need to be on the feature to begin with, but they will be moved to that feature when the constraint is applied. You may also constrain a node where a handle is located and that handle will follow the constraints. You can have as many constraints as you desire per node, but if conflicting constraints exist, there is no guarantee that any of them will be satisfied.
Figure 4 shows nodes constrained to a line. The marked nodes are constrained to follow the highlighted line. When the rightmost handle is moved to the end of the line, the constrained nodes move along the line while the unconstrained nodes are unaffected. However, if mesh stretching is applied the unconstrained nodes will stretch to match the perturbations of the constrained nodes resulting in a smoother mesh. Additionally, placing handles at constrained nodes can be used to achieve mesh stretching.
Note: The handle nodes were also constrained to the line. This means that when perturbations are applied to the handle, the handle will be mapped back onto the line to preserve the constraint condition.


Figure 4.
bounded
Define a location past which the nodes will not travel, and to specify a minimum distance to maintain from this boundary (in which case they will approach, but not reach, the boundary).
You can constrain nodes to vectors, lines, planes, surfaces, and elements.
Figure 5 show nodes bounded by a line with a set distance beyond which the nodes cannot move. In the first case (top two pictures), the mesh does not stretch to accommodate the constraint. However in the second case (lower two pictures), creating handles at the constrained nodes (and making them dependent on the handles which are being moved) allows them to move along with the perturbed handles and affect the mesh when they encounter a constraint. A similar effect can be achieved by applying the mesh stretching option, but by using handles the user can control the amount of stretching by adjusting the handle biasing factor.


Figure 5.
set distance
Specify a minimum distance to maintain from this boundary or maintain the constrained nodes at their current distance from the bounding plane during morphing operations.
fixed layers
Position multiple layers of nodes at the initial distance they were from the target elements.
Compared to the set distance option, fixed layers is faster and has some more powerful features. This option was developed specifically for CFD meshes where thin boundary layers of matching nodes are commonly used.
Note: Only available for along vector, along line, on plane, on surface, on elements, and on equation constraints. Each type of constraint involves different additional inputs, which display when the combination of constrain type and moves along / bounded / set distance / fixed layers is selected (each of these additional fields are described later in this table).
measured normal to: Choose what the angle is measured relative to.
abv plane
Angle is determined normal to the plane defined by the node a, vertex, and node b selected above.
N1N2
Select two nodes in the mesh. The angle is defined normal to the line that they define.
x-axis, y axis, or z-axis
Angle is measured normal to the global axis that you choose.
Note: Only available for angle constraints.
name = Specify a name for the new constraint to create.

To update an existing constraint, either enter its name, or click the button twice and select the desired constraint.

node a / vertex / node b Define the angle for angle constraints. Once you define these nodes, click calculate to automatically populate the angle numeric box.
nodes Select the nodes to be constrained individually in the modeling window, or use the extended entity selection menu to select groups of nodes by certain criteria.
node list Select nodes to define the boundaries of the length constraint, and to enable the use of the create generic and calculate buttons, as well as the use of the node list option for measured along.
Note: Only available for length constraints.
on plane: Define the plane to which the nodes are constrained.
Note: Only available for plane constraints.
project along: Nodes that you select which don't already lie on the constraint entity will be projected to it in this direction.
In addition, during morphing the nodes constrained to such entities may move off of them, but will then be projected in this direction back onto the constraint entity when the morph action finishes. (If you want the nodes to remain exactly fixed, without sliding along the entity, use a fixed constraint for them instead.)
normal
Project the nodes along the constraint entities' normal direction.
plane and vector selector
Define the direction by selecting an axis/vector or using the normal of a plane.


Figure 6. Project to Line Normal


Figure 7. Project Using a Vector
Note: Only available for along line, on plane, on surface, on elements, or on equation constraints.
radius Specify a radius value to constrain nodes to.

This option works in conjunction with the equal to /upper bound / lower bound switch and calculate button. The radius is measured using an edge domain and one of the following methods for finding the center of curvature: an axis, a line, a node, or inferred from the plane of the edge domain.

Clicking twice on the radius label/button opens the calculator.

Note: Only available for radius constraints.
(rotation switch) Choose between no rotation, tilt only, spin only, and full rotation.
The spin (in plane) and tilt (out of plane) options only apply for cluster constraints whose nodes all lie in a plane. If the nodes do not lie in a plane, any rotation option is considered full rotation.


Figure 8. Cluster Constraint


Figure 9. Cluster Constraint with no Rotation


Figure 10. Cluster Constraint with Spin or Full Rotation Enabled
Note: Only available when the constraint type is set to constraint.
shapes Select pre-existing shapes, or create generic shapes from the node list.
Note: Only available for length, angle, radius, arc angle, area, volume, and mass constraints.
smooth nodes / smooth dep. handles Choose how to apply the spline-based motion of smooth edge constraints.
smooth nodes
Apply to the nodes directly,
smooth dep. handles
Apply to dependent handles between the morphed handles.
Note: Only available for smooth constraints.
stretch mesh around nodes
Stretched the mesh near the constrained nodes proportionally to their distance from the nodes, in order to create a smoother resulting mesh. Clear this checkbox to not stretch the mesh.


Figure 11. No Mesh Stretching


Figure 12. Mesh Stretching Enabled
surf Select the surface to which the nodes are constrained.
Note: Only available for surf constraints.
volume Specify a total volume value to constrain nodes to.

This option works in conjunction with the equal to / upper bound / lower bound switch, calculate button, and elems selector.

Clicking twice on the volume label/button opens the calculator.

Note: Only available for volume constraints.

Release Nodes Subpanel

Use the Release Nodes subpanel to free specific nodes from any constraints they might be part of. You can pick nodes individually, or use the extended entity selection menu to pick groups of nodes by certain criteria.

The Release Nodes subpanel contains only a single nodes entity selector, and the release command button.

Command Buttons

Button Action
create Create a new constraint entity using the specified characteristics.
update Update the specified nodes to use the currently specified constraint.
apply Apply the current constraint to the selected nodes. This can be used to change/update the qualities of the constraint without changing the nodes that it applies to.
undo Move constrained nodes back to their original locations (for example, when nodes are constrained to a line), but do not remove their association with the constraint.

Click Apply to reapply the constraint (which will apply all active constraints) or perform another morphing operation.

redo Redo the most recently undone action.
reject Reject the creation of an entity (such as a shape or constraint). This differs from undo because undo only undoes the movement of nodes; rejecting an entity can also undo node movements, but its primary function is to delete an entity that was just created.
release Release the selected nodes from any and all constraints.
prev Go to the previous list of equations.
Note: Only available for equation constraints.
next Go the next list of equations.
Note: Only available for equation constraints.
return Exit the panel.