On this page:
5.3.1 Interval Assignment
5.3.2 Additional Interval Constraints
5.3.3 Automatic Specification of Interval Size
5.3.4 Explicit Specification of Intervals
5.3.5 Specification of Intervals Using Approximate Size
5.3.6 Interval Firmness
5.3.7 Interval Matching
5.3.8 Mesh Interval Preview
5.3.9 Periodic Intervals
5.3.10 Relative Intervals
5.3.11 Vertex Sizing and Automatic Curve Biasing
5.3.12 List Interval
2021.11

5.3 Interval Assignment

5.3.1 Interval Assignment

"Intervals" means the number of mesh edges on a curve (or across a periodic surface). "Interval matching" is the process of assigning intervals that are close to the user-desires, and satisfy the constraints imposed by the various quad and hex meshing algorithms (e.g., equal intervals on opposite sides of a mapped surface). The desired number of intervals (goals) are set on geometric entities by either specifying the interval count or size. "Soft" user-set and auto-set mesh sizes and interval counts are goals. Any hard counts are part of the constraints. The constraints are determined by the meshing schemes, as well as the vertex types (corners) of surfaces, and the edge-types of volumes, and sweep directions. The user may set additional constraints, including upper and lower bounds.

5.3.2 Additional Interval Constraints
5.3.2.1 Curve Minimum | Maximum

Rather than specifying a hard interval count, which may over constrain the interval matcher, the user can specify an upper and lower bound that is acceptable. Typical uses are sweeping a complex assembly where the normal compromises lead to too many (or few) intervals on specific curves, or thin layers.

{group|body|volume|surface} <range>{Interval | Size | Periodic Interval} {[Lower]|Upper} Bound {On|Off|<bound>}

curve <range> {interval | size} {[Lower]|Upper}Bound {On|Off|<bound>}

5.3.2.2 Loop Minimum | Maximum

The user can specify the minimum and maximum number of intervals on a loop. This is mostly used for small loops, such as holes drilled in a plate, to ensure they have at least 4 or 6 intervals. If no entities are specified, then the setting is applied globally to all current and future loops in the model.

set [{group|volume|surface|curve} <range>]interval loop minimum {<count>|default}

set [{group|volume|surface|curve} <range>]interval loop maximum {<count>|default}

list [{group|volume|surface|curve} <range>]interval loop [minimum] [maximum] [default]

5.3.2.3 Manual Constraints
5.3.2.3.1 General Constraints

curve <curve_id_range> interval {equal_to|greater_than_equal|less_than_equal} [Curve] <curve_id_range> [ Extra <intervals>]

curve <curve_id_range> interval {equal_to|greater_than_equal|less_than_equal} Extra <intervals>

These sets a constraint that the interval matcher resolves when it is run. E.g., the command "curve 2 3 greater_than_equal curve 4 5 extra 4" stores the inequality constraint "c2 + c3 >= c4 + c5 + 4" in the interval matcher. While this can resolve quality issues, it is also an easy way to make the interval matching problem infeasible.

5.3.2.3.2 Sets of Curves with the Same Intervals

Interval same is a two way constraint that is resolved immediately. If the user subsequently changes the interval on a curve in the set, then the other curves are changed immediately. One problems is if the user hard sets an interval on one curve and then sets a size on another, the hard set interval on the other curve is not changed.

curve <range> interval {same|different}

list curve [ <curve_id_range> ] interval same

Specifying that curves have the "same" intervals stores them in a set. More curves may be added to an existing set, and sets merged, by future commands. The current contents of the affected sets are printed after each command. A curve may be removed from a set by specifying that its intervals are "different."

5.3.2.3.3 Even

The user can also constrain the parity of intervals on curves:

{curve|surface|volume} <range> Interval {Even | Odd}

If even is specified, then during subsequent interval setting commands and during interval assignment, curves are forced to have an even number of intervals. If the current number of intervals is odd, then it is increased by one to be even. If odd is specified then intervals may be either even or odd. Setting intervals to even is useful in problems where adjoining faces are paved one by one without global interval assignment.

5.3.3 Automatic Specification of Interval Size

In addition to specifying intervals explicitly based on a known count or size, Cubit is able to compute interval sizes automatically based on characteristics of the model geometry. To auto-size intervals on volumes and surfaces

  1. On the Command Panel, click on Mesh.

  2. Click Volume or Surface.

  3. Click on the Intervals action button.

  4. Enter in the appropriate value for Select Volumes or Select Surfaces. This can also be done using the Pick Widget function.

  5. Select Auto from the drop-down menu.

  6. Slide the icon on the Auto Factor menu to adjust the Interval Size.

  7. Enter in any other appropriate settings from this menu.

  8. Click Apply and then Mesh.

To auto-size intervals on curves

  1. On the Command Panel, click on Mesh and then Curve.

  2. Click on the Mesh action button.

  3. Enter the appropriate value for Select Curves. This can also be done using the Pick Widget function.

  4. Select Equal from the drop-down menu.

  5. Select Auto Size.

  6. Slide the icon on the Auto Factor menu to adjust the Interval Size.

  7. Click Apply Size and then Mesh.

{geom_list} Size Auto [Factor <factor> ] [Individual] [Propagate]

Vertices are not valid in the geom_list for this command. Automatic interval size assignment works by examining the geometric characteristics of the entities in the geom_list and assigning a heuristic size to the entities and their child entities. The factor may be a floating point number between 1.0 and 10.0, where 1.0 represents a fine interval size and 10.0 represents a coarse size. The following image shows an example of different auto size specification on a CAD model.

Figure 220: auto size factor = 7.0

Figure 221: auto size factor = 5.0

Figure 222: auto size factor = 1.0

The user may assign the interval size to be the arc length of the smallest curve contained in the specified entity or entities using the following command:

{geom_list} Size Smallest Curve

Vertices are not allowed in the geom_list for this command. This command assigns a soft interval firmness.

5.3.3.1 Automatic Interval Size Specification

An automatic interval size with an auto size factor of 5 will automatically be computed and applied to any curve for which the following is true:

1) Intervals have not been explicitly defined by the user for a curve or its owning entities.

2) An Interval size has not been explicitly defined by the user for a curve and it is not possible to determine an interval size from its owning entities.

This automatic interval size is based upon all the geometry in the model. The automatic interval size specifications can be overridden easily by specifying another auto size factor or an explicit interval size. If an auto size factor of 5 is undesirable for most meshing operations, the default factor may be changed by using the following command:

set auto size default <value>

where value is a number from 1 to 10. This will be the default auto size factor used when either a factor has not been specified on the size auto command or when an automatic interval size specification is used. In previous versions of Cubit a default interval of 1 was assigned to all entities. If this behavior is still desired, the following command may be used to enforce this condition:

set default autosize [ON|off]

5.3.3.2 Maximum Spanning Angle on Arcs

On many CAD models, arcs or small holes require that a finer mesh be specified around these entities in order to maintain reasonable mesh quality. To facilitate this, the user may specify the maximum angle an element edge may span on an arc. To change or list the maximum arc span, use the following commands

set maximum arc_span <angle>

list maximum arc_span

The angle parameter must be a positive value less than 360. The maximum arc span setting will only be used if there is not already a user defined interval set on the arc, and if the interval setting produces mesh edges which exceed the maximum spanning angle. Figure 223 shows the effect of three different maximum arc_span settings on a small hole using the pave scheme.

Figure 223: Maximum arc_span settings of 90, 45 and 15 degrees respectively.

default arc span setting

In addition to setting an automatic size factor, if there are otherwise no user-defined interval sizes defined on an arc and no maximum arc_span has been set by the user when a tetrahedral mesh or triangle mesh is defined, a maximum spanning angle of 60 degrees will be used. Removing the use of the arc_span setting can be accomplished with the following:

set maximum arc_span default

Note that once interval sizes have been defined when the entity has been meshed, it may be necessary to reset the interval settings (reset {geom_list}) to use a new maximum arc span setting when remeshing.

5.3.4 Explicit Specification of Intervals

The density of mesh edges along curves is specified by setting the actual number of intervals or by specifying a desired interval size. The number of intervals can be explicitly set curve by curve, or implicitly set by specifying the intervals on a surface or volume containing that edge. For example, setting the intervals for a volume sets the intervals on all curves in that volume. The command to specify the number of intervals at the command line is:

{curve|surface|volume|body|group} <range> Interval <intervals>

When setting interval counts for surfaces, volumes, bodies and groups, an interval’s firmness of soft is assigned to the owned curves. When setting the interval count for a curve, a firmness of hard is assigned. The user can scale the current intervals with the following commands. Scaling is done on an entity by entity basis.

{curve|surface|volume|body|group} <range> Interval Factor <factor>

5.3.5 Specification of Intervals Using Approximate Size

The number of intervals along curves can be specified by setting a desired interval size. The interval size can be set curve by curve, or indirectly set by specifying the interval size on a surface or volume containing that curve. The size for an entity is determined with the following method. If the entity has a size set then that size is used. Otherwise the entity averages the size determined for its parents. If an entity doesn’t have any parents then a size is automatically calculated from all of the geometry in the model. If the auto size functionality is turned off then a default size of 1.0 is used. Some meshing algorithms may calculate a different default size. For example, Suppose you have two volumes that share a face and corresponding curves. If the size on volume one is set to 1.0 and the size on volume two is set to 3.0 then the size for the common face will be set to 2.0. The size for the remaining faces on volume one and two will be 1.0 and 3.0 respectively. The size for the common curves will be set to 2.0. To specify the approximate size for a volume, surface or group

  1. On the Command Panel, click on Mesh.

  2. Click on Volume, Surface or Group.

  3. Click on the Intervals action button.

  4. Enter the appropriate value for Select Volumes, Select Surfaces or Select Groups. This can also be done using the Pick Widget function.

  5. Select Approximate Size from the drop-down menu.

  6. Enter in the appropriate value for Approximate Size.

  7. Click Apply and then Mesh.

To specify the approximate size for a curve

  1. On the Command Panel, click on Mesh and then Curve.

  2. Click on the Mesh action button.

  3. Enter the appropriate value for Select Curves. This can also be done using the Pick Widget function.

  4. Select Equal from the drop-down menu.

  5. Select Approximate Size.

  6. Enter in the appropriate value for Approximate Size.

  7. Click Apply Size and then Mesh.

To specify the approximate size for a vertex

  1. On the Command Panel, click on Mesh and then Vertex.

  2. Click on the Mesh action button.

  3. Enter the appropriate value for Vertex ID(s). This can also be done using the Pick Widget function.

  4. Enter in the appropriate value for Approximate Size.

  5. Click Apply Size and then Mesh.

{curve|surface|volume|body|group} <range> [Interval] Size <interval_size>

Interval sizes set directly on an entity are given the type user_set. Interval sizes determined from parents or automatically calculated are give the type calculated. When interval matching or meshing the interval count for each curve is computed by dividing the curve’s arc length by the specified interval size. Interval counts calculated in this manner are considered to have a default firmness of soft. This firmness can be changed with the following command:

{geom_list} Interval {Default | Soft | Hard}

If an entity has a valid size, having one set explicitly or derived from its parents or calculated automatically, then this command will set the firmness of the calculated intervals. The setting is reset to default when a new size is set on this entity. The user can scale the current intervals or size with the following commands. Scaling is done on an entity by entity basis.

{curve|surface|volume|body|group} <range> [Interval] Size Factor <factor>

5.3.6 Interval Firmness

Before describing the methods used to set and change intervals, it is important that the user understand the concept of interval firmness. An interval firmness value is assigned to a geometry curve along with an interval count or size; this firmness is one of the following values:

Interval firmness is used in several ways in Cubit. Each curve is assigned an interval firmness along with an interval count or size. Commands and tools which change intervals also affect the interval firmness of the curves. Those same commands and tools which change intervals can only do so if the curves being changed have a lower-precedence interval firmness. The firmness settings are listed above in order of decreasing precedence. For example, some commands are only able to change curves whose interval firmness is soft or default ; curves with hard firmness are not changed by these commands. More examples of interval setting commands and how they are affected by firmness are given in the following sections. A curve’s interval firmness can be set explicitly by the user, either for an individual curve or for all the curves contained in a higher order entity, using the command:

{geom_list} Interval {Default | Soft | Hard}

All curves are initialized with an interval firmness of default , and any command that changes intervals (including interval assignment) upgrades the firmness to at least soft .

5.3.6.1 Precedence

If a size is specified multiple times for a single entity, the following precedence is used:

5.3.7 Interval Matching

Each meshing scheme in Cubit imposes constraints on the intervals assigned to the curves bounding the surface or volume. For example, map meshing a surface requires that intervals on opposite sides are equal. Meshing any surface with quadrilaterals, regardless of scheme, requires an even number of intervals on its boundary. For connected surfaces and assemblies, these interval constraints must be resolved globally to ensure that each surface and volume will be meshable with the assigned scheme. Beyond satisfying these constraints, the number of intervals (mesh size) should be what the user wants, or as close to it as possible. The global solution technique implemented in Cubit is referred to as "interval matching." Interval matching is automatically performed by the mesh command before generating elements. Invoking interval matching manually is useful if the user wishes to mesh only some entities but wants to ensure it will be possible to mesh all entities later: e.g. match intervals on all the volumes, but just mesh surface 3 for now. Interval matching can also be called to check whether the assigned schemes, corners, edge types, and intervals are compatible. The command syntax for manually matching intervals is the following:

match intervals {surface|volume|body|group} <range>

Here the entity list can be any mixed collection of groups, bodies, volumes, surfaces and curves.

5.3.7.1 Troubleshooting

If the quality of the interval solution is poor, try changing the interval count on individual entities, or, e.g., changing some schemes from map to pave to provide more freedom, and rerunning interval matching. There may be no interval solution. To improve the chances of finding a solution, at least as a test, try setting intervals to soft firmness. Even with soft intervals, a solution might not exist if the mapping corners or sweep directions do not line up right. If there is no solution, the following command may help in determining the cause (this is not yet supported by IIA in Cubit 17.1):

match intervals {surface|volume|body|group} <range> [Seed Curve <range>][Assign Groups [Only|Infeasible]] [Map|Pave]

Specifying assign groups will create groups that contain independent subproblems of the global problem. Specifying assign groups only will group independent subproblems, but the algorithm will not attempt to solve these subproblems. assign groups infeasible will put each independent subproblem with no solution into specially named groups. Often poor corner choices and surface meshing schemes will be illuminated this way. If map or pave is specified, then only subproblems involving mapping or paving constraints will be considered. If a seed curve is specified, then only those subproblems containing that curve will be considered.

5.3.7.2 Interval Solver Version

For consistent results running old journal files, the user may want to use the old solver.

set interval version {<cubit version number>|default}

Setting version >= 15.6 uses IIA (2020 solver) and enables small-loop bounds. Using a prior version uses BBIA (1997 solver). Both solvers solve the problem

min f(x,g)

s.t. Ax=b

x in [lo,hi]

A, x, b integer

s.t. Ax=b

but the objective f is slightly different so the solution may be different. General problems of this form are known to be difficult because the solution must be integer valued, and neither solver is guaranteed to find the global minimum. Here x are the intervals and internal variables; b are the bounds on those variables; A and b are the constraints, including hardsets; g are the goals, the user-desired number of intervals for each curve. The objective f models the desire to minimize the maximum relative change in mesh size. In mathematical language, for the new IIA solver f is the maximum lexicographic vector of the ratio achieved:goal if achieved>goal, else goal:achieved. The older solver uses an approximation to IIA’s f.

5.3.7.2.1 IIA Solver >= Cubit 17.1 (Cubit 15.6)

Cubit 17.1in 2020 introduced "Incremental Interval Assignment (IIA)" based on integer linear algebra. It robustly and quickly finds an integer solutions to Ax=b, and tries to improve it by adding integer vectors from A’s nullspace to satisfy the bounds and come close to the goals. IIA solutions tend to be slightly coarser than BBIA, often one interval less, and closer to the user goals and the global optimum. IIA is faster than BBIA, dramatically faster (6000x) in some cases involving submapping and hard-sets. Please send the Cubit team any example which takes longer than 1 second.

5.3.7.2.2 BBIA Solver < Cubit 17.1 (Cubit 15.6)

The solution method that Cubit introduced in 1996 was to use linear programming to find a floating point solution to Ax=b, then use branch-and-bound rounding to try to find a nearby integer solution. The first part is fast and robust, the second part slow and error prone. Linear programming is limited to linear objective functions, so the goal:achieved ratio is only approximated and extreme size differences can give unexpected compromises. For BBIA, advanced users may wish to experiment with the following:

set match intervals rounding {on|off}

If set match intervals rounding is set to on, the intervals will be rounded to the nearest integer. If the setting is off, the intervals will be rounded toward the user specified intervals. If set match intervals fast is set to off a single curve will be fixed per branch and bound iteration. Note in rare cases this may produce better meshes, but will generally be slower. If set on, multiple curves will be fixed per iteration. set match intervals delta affects the convergence tolerance for the optimization. Here delta means the difference between a curve’s goal and assigned intervals. A larger value makes matching intervals faster, but the quality of the solution may be worse. The default is 0.0. Hint: try 1.0.

5.3.8 Mesh Interval Preview

It is sometimes useful to view the nodal locations/intervals on curves graphically before meshing (which can take considerably more time). The command to do this is:

preview mesh {body|volume|surface|curve|vertex} <id_range> [Hard] [color <color>]

To clear the display of the temporary nodes, simply issue a display command. The purpose of the hard option is that only curves that have an interval firmness of hard will be previewed.

5.3.9 Periodic Intervals

The number of intervals on a periodic surface, such as a cylinder, in the dimension that is not represented by a curve is usually set implicitly by the surface size. However, periodic intervals and firmness can be specified explicitly by the following commands:

surface <range> periodic interval <intervals>

5.3.10 Relative Intervals

If the user needs fine control over mesh density, then for curvy or slanted sides of swept geometries, it is often useful to treat curves as if they had a different length when setting interval sizes. For example, the user may wish to specify that a slanting side curve and a straight side curve have the same "relative" length, despite their true length as shown in the following figure. These are not interval matching constraints; interval matching may change intervals so that the user-specified ratio does not hold exactly.

Figure 224:

The relative lengths of curves are set with the following command:

{geom_list} Relative Length <size>

The following command is used to assign intervals proportional to these lengths:

{geom_list} Relative Interval <base_interval>

For a curve with relative length x, setting a relative interval of y produces xy intervals, rounded to the nearest integer.

5.3.11 Vertex Sizing and Automatic Curve Biasing

Sizes can now be specified on vertices to control biasing along curves. If a curve has a bias scheme the vertex sizes will be honored, even if it is inherited from parent geometry. Set a size on a vertex with the following command:

vertex <id> size <size>

Bias can be turned on with:

curve <id> scheme bias

For tri/tet meshing, curve biasing is on by default to generate higher quality tri/tet meshes. Not only is the difference noticeable when setting sizes on vertices, but it is also noticeable when setting various sizes on connected curves, surfaces, or volumes. To turn curve biasing off issue the following command:

curve<id> scheme equal

In the following examples, the surfaces have been given sizes. In the first graphic auto bias is not enabled. In the second graphic auto bias is enabled.

Figure 225:

Figure 226:

When auto bias is enabled sizes on vertices are respected.If a size hasn’t been directly set on a vertex the size is inherited from the parent(s).If there are multiple parents the inherited size is averaged.In the examples shown above the sizes of the vertices attached to both surfaces was an average of the two surface sizes.That affected the biasing while curve meshing.

5.3.12 List Interval

List Curve <range> Interval provides a concise summary interval values, firmness, and bounds; something like:

Id Intervals Firm (Size) [Low,High] 1 6 H+ (1.66667) [6,6] 2 10 H+ (1) 3 8 H+ (1.25) [8,8] 4 10 H+ (1) where Firm H:Hard, S:Soft, +:meshed, -:unmeshed E:constrained-to-be-even

Listing an entity with the mesh keyword option may also give the intervals.