HyperMesh and BatchMesher

Morph Constraints panel

Morph Constraints panel

Previous topic Next topic Expand/collapse all hidden text  

Morph Constraints panel

Previous topic Next topic JavaScript is required for expanding text JavaScript is required for the print function  

Location:   Tools page - HyperMorph module

 

The Morph Constraints panel allows you 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.

Note:This panel is not the same as the Set Constraints subpanel found on the Morph panel; this panel contains full access to morph constraint capabilities.

 

Panel Usage


The panel is organized into two subpanels: Create/Update and Release Nodes.

morph_constraints_panel

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.

hmtoggle_arrow1Types of Constraints

HyperMorph includes many different types of constraint:

Constraint

Description

fixed

The selected nodes do not move when the mesh morphs around them.

cluster

The nodes move with the rest of the mesh, but remain fixed relative to each other — the cluster will move, but won’t stretch or deform.

smooth

When handles move on a selected edge domain, the edge morphs according to spline-based motion rather than linear motion (creating smooth edge curves instead of straight edge lines).

You may also choose whether to apply the spline-based motion to the nodes directly, or to dependent handles between the morphed handles.

along vector

The nodes will move only in the direction of a selected vector.

along line

The nodes will move, but will either move along the length of a selected line or will be bounded by the selected line.

on plane

The nodes will move, but will either move across the surface of a selected plane, or be bounded by the selected plane.

on surface

The nodes will move, but will either move across a selected surface, or be bounded by the selected surface.

on elements

Nodes move, but will either move along the surface of a selected mesh, or be bounded by the selected mesh. This is similar to the along surface option but without requiring surface geometry.

on equation

The nodes will move, but will either move across the surface of a function, or be bounded by the surface of the function. The surface of a function is defined at the threshold where f(x,y,z) is equal to zero.

along dofs

The nodes will move, but can have one, two, or all three of their x, y, or z (or r, theta, or phi) coordinates fixed for any given coordinate system, local or global.

match elems

Two groups of elements will be forced to match each other regardless of the morphing applied to the nodes on either group. The matching can be forced relative to the normal direction of the elements, relative to a vector, or by selecting nodes to orient one group of elements relative to another.

Note:Three or more groups of elements can be joined together by using this constraint more than once.

tangency

Continuous tangency can be enforced across a pair of edge or 2D domains.  Also, edge domains may have their ends constrained to defined angles, be joined in a master-slave tangency, or have one edge "attached" to another.

length

Use this option in conjunction with one or more morphing shapes, to enforce a specific, maximum, or minimum distance as measured along the nodes in a specified node list.

angle

Use this option in conjunction with one or more morphing shapes, to control the angle of three selected nodes. These nodes will move (even relative to each other) but the angle they form remains either fixed, above a certain value, or below a certain value depending on your choice.

radius

Use this option in conjunction with one or more morphing shapes, to control the radius of a given edge domain.

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.

For example, if an edge domain lies along a cylinder which has been cut by a plane or planes that are not perpendicular to the axis of the cylinder, the axis of the cylinder can be selected as the center for the radius of the domain.  The radius of the domain would then be measured with respect to the assigned axis.

arc angle

Use this option in conjunction with one or more morphing shapes, to control the arc angle of a given edge domain. As for the radius option, the arc angle 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.

area

Use this option in conjunction with one or more morphing shapes, to control the area of a number of elements. The selected elements will deform during morphs, but their total surface area remains either constant, above a certain value, or below a certain value, depending in your choice.

volume

Similar to area, but in this case the volume of the selected elements remains constant, below a maximum value, or above a minimum value.

mass

Similar to area and volume, but used in conjunction with density data supplied by a property card.  This constraint keeps the total mass of the selected elements equal to, above, or below a specified number, even as the elements change shape during morphing.

 

hmtoggle_arrow1Constraint Examples

The following example shows fixed constraints.  The marked nodes in the center of the plate are constrained to be fixed (they will not move when the model is morphed).  The three handles on the left edge of the plate are perturbed vertically.  The constrained nodes do not move while the unconstrained nodes are unaffected.

fixed_constraints

The following example shows a fixed constraint with the stretch mesh around nodes option selected, which allows for smoother transitions between constrained nodes and the rest of the model.

fixed_constraints_mesh_stretch

The following example shows a cluster type constraint.  The marked nodes in the center of the plate are constrained to move as a cluster, which means that during morphing, the perturbations for all of the nodes in the cluster are averaged and applied to the cluster, moving the cluster as if it were a rigid body. In the example below the handle at the top right is moved and the model is morphed.

Note:The cluster nodes all move as one. Also, mesh stretching is used in this example, yielding a smooth final mesh.

cluster_constraint

The following example shows a cluster type constraint with full rotation and mesh stretching. Like a normal cluster constraint the perturbations of the constrained nodes are averaged and applied to all the nodes, but additionally the cluster will be rotated to match the rotation or skewing of the surrounding mesh. In the example below, the handle at the top right is moved and the model is morphed. The cluster nodes are translated and rotated as if they were a rigid body. Furthermore, rotation for cluster constraints can be limited to occur only in plane (spin) or out of plane (tilt) but these options are only effective for clusters which lay generally in a plane.

cluster_constraint_with_rotation

You can also 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.

The following example 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 (see next example).

mesh_stretching

Note:In the previous example, 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.

Another option for constraining nodes to vectors, lines, planes, surfaces, and elements, is "bounded," which means that the features serve as limits to morphing. The constrained nodes can move up to, but not past, the given feature. You may also prescribe a distance which the constrained nodes can get no closer than when you create a limiting constraint.

The following examples 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.

nodes_bounded_by_line

The following example shows a constraint along dofs. This is a constraint where one, two, or all three of the degrees of freedom of the nodes are fixed for a given coordinate system. The figure below shows a constraint placed upon the nodes of the magenta elements where the r coordinate of the cylindrical system is constrained but the theta and z coordinates are free. In the figure on the right, all the nodes have been morphed to the right. Note how the constrained nodes have maintained their radial distance from the system while rotating around the z-axis (moving in the theta direction) and thus maintaining the conical shape of the mesh. The top part of the gray section shows the morphing which was applied to the entire mesh while the lower part of the gray section shows mesh stretching through three rows of elements.

morph_constraints_along_dofs

The following example shows a smooth type constraint. This is a type of constraint where one or more connected edge domains are made to smoothly propagate the perturbations of the handles lying along them. For edge domains that begin perfectly straight, the smooth constraint enforces a spline curve fit through the handles along their length. If the edge domains are not perfectly straight, existing curvature or bends will be preserved and the smoothing will be applied across those features.

smooth_constraint

The following example shows several types of tangency constraints. In the upper left figure, the model is unconstrained. In the upper middle figure, a continuous type tangency has been applied between two edge domains.  In the upper right figure, a continuous type tangency has been applied between two 2-D domains.  In the lower left figure, a master-slave type tangency has been applied between two edge domains.  In the lower middle figure, an attached type tangency has been applied between two edge domains.  In the lower right figure, the model with the attached tangency has been morphed with the end angle of the attached domain following the morphing of the domain to which it is attached.

tangency_constraints

The following example shows a match elems constraint. In the left figure the elements on upper 2D domain have been matched with the elements on the lower 2D domain in the normal direction at a distance of 5.0. When the handle on the lower domain is moved downward the elements on the upper domain are moved downward to preserve the matching alignment.

Note:The normal direction option allows the elements to slide perpendicular to the normal.

The elements on the moving mesh are extended so that the elements on the matching mesh can be projected to an approximation of the moving mesh extrapolated perpendicular to the normal direction.

match_elems_constraint

The following example shows three match elems constraints connecting four 2D domains. One constraint matches the uppermost layer to the second layer down, another constraint matches the second layer down to the third layer down, and the last constraint matches the third layer down to the bottom layer. All constraints use the orient option to more precisely match the constrained layers. A handle on the third layer is moved downward causing a chain reaction which passes the shape change from one layer to the next until they are all matched.

Note:The orient option prevents the elements from sliding and keeps them identical.

match_elems_constraint_x3

There are also seven types of "model constraints" (length, angle, radius, arc angle, area, volume, and mass) available.  These allow you to constrain some feature in your model, such as the length along a line of nodes, or the total weight of the model, to be above, below, or equal to a specified value.  These types of constraints are associated with user-defined shapes, which are applied automatically during morphing so that the model constraint targets are met.

The following example shows an area type model constraint.  The elements of the 2-D domain are constrained to have a constant area. The constraint is linked to the shape shown with the small gray arrows which, when applied, will uniformly grow or shrink the elements towards or away from the center of the domain. This constraint was generated automatically using the create generic button in the morph constraints panel.  When the model is morphed, such as when the two handles on the right side of the domain are moved to the right, the total area of the elements increases and violates the constraint.  HyperMorph then applies the shape (or shapes) which are linked to the area constraint by whatever amount is necessary to satisfy the constraint.  As shown in the example, the figure on the left is the initial state of the mesh with the area constraint created on the elements. The figure on the right is the state of the model after the handles are moved and the shape linked to the constraint is applied by an amount which results in the area remaining constant.

area_constraints_on_elements

Area constraint on elements

standard_arrow_beforeafter

area_constraints_on_elements2

Shape changes, but total area is preserved

 

 

 

Subpanels and Inputs


The Morph Constraints panel contains the following subpanels and command buttons:

hmtoggle_arrow1Create/Update

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.  To change a constraint's active status, go to the Morph Options panel or click the options… button and 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 checked.

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: use the reject button, 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 2-D or edge domains as desired and even make loops, although master-slave loops and other insolvable configurations are not allowed.  Also, while the 2-D 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.

The following inputs are found on the Create/Update subpanel.  To make finding a specific input easier, inputs are listed in alphabetical order instead of attempting to follow the subpanel layout.  This is necessitated by the fact that many inputs are used by multiple constraint types, and thus their descriptions often refer to each other.

Note:Switches with no overall label are alphabetized according to their default option.

 

Panel Inputs

Input

Description

along vector:

This option only displays for along vector constraints.  Use this standard plane and vector selector to define the vector along which the nodes may travel.

angle

Appearing when the constraint type is angle, this numeric box allows you to specify an angle value to constrain nodes to.  This works in conjunction with the equal to /upper bound / lower bound switch and calculate button.

Clicking twice on the angle label/button opens the calculator pop-up.

at origin / at node / at system

This switch only displays for on equation constraints.  Choose the starting point of the path defined by the equation--at node and at system both reveal new entity selectors so that you can pick the desired node or local coordinate system, while at origin simply uses the origin point of the default global system.

arc angle

Appearing when the constraint type is arc angle, this numeric box allows you to specify an angle value to constrain nodes to.  This 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 pop-up.

area

Appearing when the constraint type is area, this numeric box allows you to specify a total area to constrain nodes to.  This 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 pop-up.

(constraint type switch)

Use this switch to pick the constraint type.  See the table above for details on each type.

Different constraints change the options that display on the panel.

color

Click this box to open a standard color palette and select a color for the constraint entity.

calculate

This button displays when the constraint type is length, angle, radius, arc angle, area, volume, or mass. Clicking it calculates 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.

connected edge domains

This option only appears for smooth constraints.  Use the selector to pick the edge domains connected to the constraint.

continuous / master-slave / fixed end / attached

These options only appear for tangency constraints.

For continuous, master-slave, or attached tangencies, select two domains to be constrained—one for each domain selector.
Note:Continuous type is the only tangency type available for 2-D domains.
For the fixed end tangency, select an edge domain to be constrained, the node at the end which is to be constrained, and a vector to orient the end of the edge domain.

create generic

This button displays when the constraint type is length, angle, radius, arc angle, area, volume, or mass. Clicking it generates 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.

domain

Two of these selectors display when the constraint type is set to tangency.  Use them to pick the domains between which the tangency constraint exists.

elems

This selector only displays for on elements, area, volume, or mass constraints. Use the selector to pick 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:

area_constraints_on_elements

area constraint on elements

standard_arrow_beforeafter

area_constraints_on_elements2

shape changes, but total area (L x W) is preserved

equal to / upper bound / lower bound

This switch displays when the constraint type is length, angle, radius, arc angle, area, volume, or mass.

The choice made here directly affects how the value in the length field is used:

equal to ensures that the node list's overall length does not change.
upper bound allows the node list to contract, but not to expand beyond the specified length.
lower bound allows the node list to expand, but not to contract to less than the specified length.

exclude beyond

Opens a dialog from which you can 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. It is available only for the on elements type morph constraint

In the dialog 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 type in 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. Note that 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.

morph_constraints_exclude_beyond

The images above 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.

find center / center axis / center line / center node

This switch 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 requires you to 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 requires you to specify the desired line.
center node requires you to specify the desired node.

F(xyz)

This button and corresponding text fields only display for on equation constraints.  Click the switch to open a list of predefined equations; picking one automatically fills in the text fields with an equation.  You can edit these equations if necessary. Make sure to replace constants a, b, c, r, and R with numbers. For some 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 type in 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.

Note:You can add more equations by means of the prev and next buttons.

fix dofs:

Use the three checkboxes to constrain the degrees of freedom of the nodes for a given coordinate system for an along dofs constraint. Use x translation (r) to fix the x or r coordinate of each node with respect to the coordinate system. Use y translation (theta) to fix the y or theta coordinate of each node with respect to the coordinate system. Use z translation (phi) to fix the z or phi coordinate of each node with respect to the coordinate system.

fixed at: node

This selector only displays when the constraint type is set to tangency and the tangency type is fixed end.

This node is the fixed point for the end which is to be constrained.

fully fixed / translate only / force normal / allow sliding

This selector allows you to control how the inner layers of a fixed layers style constraint on elements will move when the outer layer is morphed.

fully fixed. Translates and rotates the inner nodes to match changes in the constraint elements, preserving the initial distance and orientation.
translate only. Translates the inner nodes to match changes in the constraint elements, preserving the initial distance.
force normal. Identical to the fully fixed option, except that it will force the inner nodes to lie normal to the constraint elements when the constraint is created.
allow sliding. Similar to the translate only option, except that it will allow the inner nodes to move perpendicular to the normal direction as long as the initial distance in the normal direction is preserved.

global system / syst

Use the toggle to switch between the global system and a local system of your choosing for an along dofs constraint. The degrees of freedom of the system selected will be used for all the nodes of the constraint.

length

Appearing when the constraint type is length, this numeric box allows you to specify a total length value to constrain nodes to.  This 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 pop-up.

line

This option only applies for along line constraints.  Use the selector to pick the line along which nodes are allowed to move.

mass

Appearing when the constraint type is mass, this numeric box allows you to 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 pop-up.

measured along: node list / N1N2 / x-axis / y-axis / z-axis

This switch determines what vector or path the length is measured along.

node list uses the node list already specified under the length switch.
N1N2 displays two buttons to allow you to pick two nodes in the mesh.  The length is measured along the line between them.
x-axis, y-axis, and z-axis measure the length along the chosen axis of the default global coordinate system.

moves along / bounded / set distance / fixed layers

This switch only displays for the constraints along vector, along line, on plane, on surface, on elements, and on equation. 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).

moves along. Enables inputs to define an entity, vector, or equation along which the nodes are permitted to move during a morph operation.
bounded. Enables inputs to 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).
set distance. Enables the distance = text box as above.  However, the distance= text box can also be toggled to maintain, which keeps the constrained nodes at their current distance from the bounding plane during morphing operations.
fixed layers. Enables multiple layers of nodes to be positioned at the initial distance they were from the target elements. It is very similar to the set distance option with maintain selected, but 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.

measured normal to:

This switch appears for angle constraints, and determines what the angle is measured relative to.  Options include:

abv plane: The angle is determined normal to the plane defined by the node a, vertex, and node b selected above.
N1N2: This option displays a new set of N1 and N2 node selectors.  The angle is defined normal to the line that they define.
x-axis, y axis, or z-axis: The angle is measured normal to the global axis that you choose.

name =

To create a new constraint, type in a new name.

To update an existing constraint, either type in its name, or click the button twice and select the desired constraint from the menu that displays.

node a / vertex / node b

Use this set of buttons to define the angle for angle constraints.  Once you define these nodes, you can use the calculate button to automatically fill in the angle numeric box.

nodes

Either pick the nodes to be constrained individually in the graphics area, or use the extended entity selection menu to pick groups of nodes by certain criteria.

node list

This selector only displays when the constraint type is length.  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.

on plane:

This plane and vector selector only displays for on plane constraints.  Use the selector to define the plane to which the nodes are constrained.

project along:

This toggle only applies for along line, on plane, on surface, on  elements, or on equation constraints.  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 projects the nodes along the constraint entities' normal direction.
The standard plane and vector selector lets you determine the direction by picking an axis/vector or using the normal of a plane.

morph_constraints_normaltoline_ex

Projection to line normal

morph_constraints_xaxistoline_ex

Project using a vector

radius

Appearing when the constraint type is radius, this numeric box allows you to specify a radius value to constrain nodes to.  This 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 pop-up.

(rotation switch)

When the constraint type is constraint, use this switch to choose between no rotation, tilt only, spin only, and full rotation.

Note: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.

 

cluster_constraint

Cluster constraint

standard_arrow_beforeafter

cluster_constraint_norotate

With no rotation

cluster_constraint_with_rotation

With spin or full rotation enabled

shapes

This selector displays when the constraint type is length, angle, radius, arc angle, area, volume, or mass.

Use this selector to pick the pre-existing shapes.  You can also create generic shapes from the node list.

smooth nodes / smooth dep. handles

This option only appears for smooth constraints.  Choose whether to apply the spline-based motion of smooth edge constraints to the nodes directly, or to dependent handles between the morphed handles.

stretch mesh around nodes

When active, the mesh near the constrained nodes will be stretched proportionally to their distance from the nodes, in order to create a smoother resulting mesh.

stretch_mesh_around_nodes_off

No mesh stretching

stretch_mesh_around_nodes

Mesh stretching activated

surf

This selector only displays for on surf constraints. Use the selector to  pick the surface to which the nodes are constrained.

volume

Appearing when the constraint type is volume, this numeric box allows you to specify a total volume value to constrain nodes to. This 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 pop-up.

 

hmtoggle_arrow1Release Nodes

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.

 

hmtoggle_arrow1Command buttons

The following action buttons appear throughout the subpanels:

Button

Action

create

Creates a new constraint entity using the specified characteristics.

update

Updates the specified nodes to use the currently specified constraint.

apply

Apples 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

Clicking undo moves constrained nodes back to their original locations (for example, when nodes are constrained to a line) but does not remove their association with the constraint.  To reapply the constraint, click the apply button (which will apply all active constraints) or perform another morphing operation.

redo

Redoes the most recently undone action.

reject

Reject undoes 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

Releases the selected nodes from any and all constraints.

prev

This button only displays for on equation constraints.  You can have multiple sets of equations defined; use this button to page backward through the list toward the beginning.

next

This button only displays for on equation constraints.  You can have multiple sets of equations defined; use this button to page forward through the list toward the end.

return

Exits the panel.

 

 

How do I…

hmtoggle_arrow1Constrain node movements during morphing:
1.In the Morph Constraints panel, select the create/update subpanel.
2.Type in the new constraint’s name.
3.Optional: click the color button and choose a color for the constraint.
4.Choose a constraint type (fixed, cluster, and so on) from the switch.

For fixed constraints:

Pick new nodes for the constraint, or use the extended entity selection menu.
Activate or deactivate the stretch mesh around nodes checkbox

For cluster constraints:

Pick new nodes for the constraint, or use the extended entity selection menu.
Activate or deactivate the stretch mesh around nodes checkbox.
Select the rotation type desired (none, spin only, tilt only, and full rotation).
Note:The spin and tilt 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.

For smooth constraints:

Pick new edge domains for the constraint. The selected edge domains must connect to each other.
Select either smooth nodes or smooth dependent handles.

For vector constraints:

Pick new nodes for the constraint, or use the extended entity selection menu.
Activate or deactivate the stretch mesh around nodes checkbox.
Define a vector for the constraint.
Select either moves along, bounded, or set distance.
For bounded or set distance, define a bounding plane and either enter the distance or select maintain.

For line, surface, or plane constraints:

Pick new nodes for the constraint, or use the extended entity selection menu.
Activate or deactivate the stretch mesh around nodes checkbox.
Select a line, plane, or surface for the constraint.
Select either project along normal or define a vector to project the nodes to the selected feature. For bounded or set distance constraints, the projection vector determines which side of the feature the nodes should remain on.
Select either moves along, bounded, or set distance.
For bounded, enter the distance.
For set distance, either enter the distance or select maintain.

For element constraints:

Use the toggle next to the nodes collector to switch between the constraint creation panel configuration and the bind components panel configuration. The bind components configuration is simply a convenient way to find the nodes and elements on two sets of components within a given distance of each other. In the constraint creation configuration you have to select your nodes and elements manually.

When in the bind components configuration:

Choose the components you wish to bind to other components.
Choose the target components for the binding operation.
Use the upper toggle on the left to select which nodes on the binding components will be bound to the target components. If all nodes is selected, all of the nodes will be selected; otherwise, you may specify a distance and any nodes within that distance of the target components will be selected.
Use the lower toggle on the left to select which elements on the target components will be bound to the nodes. If all elems is selected, all of the elements will be selected, otherwise you may specify a distance and any elements within that distance of the binding components will be selected.
Use the rightmost toggle to select the projection method used to determine the distance between the components: either normal to the target elements or along a vector that you specify.
Click find nodes/elems. The toggle will switch to the constraint creation configuration and HyperMesh will fill in the node and element selectors with the nodes and elements found given the parameters that you provided.

In the following example, the bind components feature is used to quickly select which nodes on one component are within 12.0 model units of another component. The all elems option was used on the target components. When the find nodes/elems button is clicked the panel switches over to the constraint creation configuration with the nodes and elements selectors filled in.

constraints_panel_find_nodes_elems

When in the constraint creation configuration:

Pick new nodes for the constraint, or use the extended entity selection menu.
Activate or deactivate the stretch mesh around nodes checkbox.
Select elements for the constraint.
Select either project along normal or define a vector to project the nodes to the selected feature. For bounded or set distance constraints the projection vector determines which side of the feature the nodes should remain on.
Select either moves along, bounded, set distance, or fixed layers.
For bounded, enter the distance.
For set distance, either enter the distance or select maintain.
For bounded or set distance, you may select to apply either extended edges or depenetration.

Extended edges is an option which will effectively extend the constraint element mesh roughly two element lengths beyond its edge (see following figure). Depenetration will relieve penetration of elements attached to the constrained nodes through the constraint element mesh.

Note:The depenetration option will not prevent penetration for extreme cases, such as sharp edges or widely mismatched mesh densities, but should be satisfactory for most use cases.

extended_edges_option

The fixed layers option will keep multiple layers of nodes positioned at the initial distance they were from the target elements. It is very similar to the set distance option with maintain selected, but is faster and has some more powerful features.

The fixed layers option was developed specifically for CFD meshes where thin boundary layers of matching nodes are commonly used. This option is much faster than the bounded or set distance options for these types of meshes and generally gives better results. For CFD meshes it is best to use the stretch mesh around nodes option so that the transition between the boundary layer and the inner mesh is as smooth as possible.

Note:When selecting nodes for the fixed layers option, you should select all of the nodes on every layer at once. HyperMorph will sort out which nodes go with which layer internally. Also, you may select the nodes on the outer layer elements if that is more convenient to do, because HyperMorph will ignore them when creating the constraint.

Now, select how the layers of nodes are repositioned relative to the constraint elements when the constraint elements are morphed. The options are: fully fixed, translate only, force normal, and allow sliding.

The fully fixed option will both translate and rotate the inner nodes to match changes in the constraint elements, preserving the initial distance and orientation.

The translate only option will only translate the inner nodes to match changes in the constraint elements, preserving the initial distance.

The force normal option is identical to the fully fixed option, but will force the inner nodes to lie normal to the constraint elements when the constraint is created.

The allow sliding option is similar to the translate only option but will allow the inner nodes to move perpendicular to the normal direction as long as the initial distance in the normal direction is preserved.

Next, select how the element normals are calculated. The smoothed normals option will average and smooth the calculated normal directions between neighboring elements before repositioning the inner nodes. This option is fast but may not work well for sharp corners and large displacements. The cfd corners option calculates the normal direction using the cfd corners algorithm and, while slow, is very good at handling sharp corners. These two options are compared in the following images:

constraint_movement_during_morphing

In the example below, a boundary layer has been constrained to the outer layer using a fixed layers constraint, smoothed normals, and stretch mesh around nodes. The height of the model has been reduced by 50%, but the boundary layers have been maintained at the original thicknesses.

constraints_panel_fixed_layers

For equation constraints:

Pick new nodes for the constraint, or use the extended entity selection menu.
Activate or deactivate the stretch mesh around nodes checkbox.
Type in a function F(xyz) for the constraint or use the selector to choose from a variety of standard shapes (sphere, cylinder, and so on). The function may contain x, y, and z variables with the rest being numbers or expressions.  If using the selector for a function you should replace constants a, b, c, r, and R with numbers.  The surface defined when the function is set to zero will be used as the boundary for the constraint. Use the prev and next buttons to create additional pages for your function if there is not enough space in the first page.
Select the origin and system used for the function. This allows you to position your function anywhere in the model and align it with any system. The at origin option will use the global coordinate system for the origin and the x, y, and z directions.  The at node option will set the origin at the selected node and use the global coordinate system for the x, y, and z directions.  The at system option will use the selected coordinate system for the origin and the x, y, and z directions.
Select either project along normal or define a vector to project the nodes to the selected feature. For bounded or set distance constraints the projection vector determines which side of the feature the nodes should remain on.
Select between moves along, bounded, and set distance.
For bounded, enter the distance.
For set distance, either enter the distance or select maintain.

For tangency constraints:

Select the type of tangency to be applied: continuous, master-slave, fixed end, or attached.
For the continuous, master-slave, or attached type tangencies, select two domains to be constrained—one for each domain selector.
Note:The continuous type is the only tangency type available for 2-D domains.
For the fixed end type tangency, select an edge domain to be constrained, the node at the end which is to be constrained, and a vector to orient the end of the edge domain.

For length, angle, radius, arc angle, area, volume, or mass constraints:

Select between a node list, three nodes, edge domain and center method, and elements to define the quantity that is being constrained.
Select the shapes that will be applied to the model to maintain the constraint or click create generic to generate a shape which will change the specified value when perturbed.
Note:Automatically generated shapes will also automatically be loaded into the collector upon creation.
Type in the target value of the constrained quantity (or click the calculate button to have HyperMorph calculate the current value).
Set the selector to either equal to, upper bound, or lower bound.
5.Click create.

HyperMesh creates the constraint and automatically applies it to the selected nodes.

 

Comments

Clicking undo moves constrained nodes back to their original locations (for example, when nodes are constrained to a line) but does not remove their association with the constraint.  To reapply the constraint, click the apply button, which will apply all active constraints.

A constraint is set to be active when it is created, meaning that the constraint will be applied automatically whenever the model is morphed.  To change a constraint's active status, go to the Morph Options panel or click the options… button and 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 checked.

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: use the reject button, use the release feature on the release nodes subpanel, or delete the constraint.

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 2-D or edge domains as desired and even make loops, although master-slave loops and other insolvable configurations are not allowed.  Also, while the 2-D 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.

 

hmtoggle_arrow1Update a morph constraint:
1.From the Morph Constraints panel: select the create/update subpanel.
2.Select an existing morph constraint by clicking on the name= button. The panel will automatically be updated to reflect the current settings for the constraint.
Note:The original N1, N2, N3, and base nodes defining any vectors or planes will not be displayed after selecting the constraint; if you wish to update these values, select new nodes. If you leave these nodes unassigned the current definitions for vectors or planes will be used.
3.Modify the constraint’s type and/or any of the constraint’s parameters, if necessary.
4.Click update.

 

hmtoggle_arrow1Release nodes:
1.In the Morph Constraints panel: select the release nodes subpanel.
2.Pick the nodes you wish released from their constraints, or use the extended entity selection menu.
3.Click release.

 

Comments

You can release every node in the model from all constraints by selecting all from the node selector’s extended entity selection menu.

 

 

Note:The options and appearance of this panel may change if you are using a user profile. See User Profiles for information regarding modifications to specific panels.

 

 

See Also:

Changing a Curvature Using Map to Geometry - HM-3530

HyperMorph Module

HyperMorph Strategies