#### 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

{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

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

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

{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

On the Command Panel, click on Mesh.

Click Volume or Surface.

Click on the Intervals action button.

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

Select Auto from the drop-down menu.

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

Enter in any other appropriate settings from this menu.

Click Apply and then Mesh.

To auto-size intervals on curves

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

Click on the Mesh action button.

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

Select Equal from the drop-down menu.

Select Auto Size.

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

Click Apply Size and then Mesh.

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

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

##### 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.

set auto size default <value>

set default autosize [ON|off]

##### 5.3.3.2` `Maximum Spanning Angle on Arcs

set maximum arc_span <angle>

list maximum arc_span

default arc span setting

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

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

{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

On the Command Panel, click on Mesh.

Click on Volume, Surface or Group.

Click on the Intervals action button.

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

Select Approximate Size from the drop-down menu.

Enter in the appropriate value for Approximate Size.

Click Apply and then Mesh.

To specify the approximate size for a curve

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

Click on the Mesh action button.

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

Select Equal from the drop-down menu.

Select Approximate Size.

Enter in the appropriate value for Approximate Size.

Click Apply Size and then Mesh.

To specify the approximate size for a vertex

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

Click on the Mesh action button.

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

Enter in the appropriate value for Approximate Size.

Click Apply Size and then Mesh.

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

{geom_list} Interval {Default | Soft | Hard}

{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:

hard: interval count is fixed and is not adjusted by interval size command or by interval matching.

soft: current interval count is a goal and may be adjusted up or down slightly by interval matching or changed by other interval size commands.

default: default firmness setting, used for detecting whether intervals have been set explicitly by the user or by other tools.

{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:

The highest firmness command takes precedence.

Hard commands include curve <id> interval <val>, and geometry_list interval hard will fix the size at the current size.Within a given firmness, the last-issued command takes precedence.

For example, if the user commands surface 1 size 1 then volume 1 size 2, and surface 1 is part of volume 1, then surface 1 will have a size of 2.

##### 5.3.7` `Interval Matching

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

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

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)

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.