Interval Matching

Each meshing scheme in Trelis imposes a set of constraints on the intervals assigned to the curves bounding the entity being meshed. For example, meshing any surface with quadrilaterals requires that the surface be bounded by an even number of mesh edges. This constrains the intervals on the bounding curves to sum to an even number. For a collection of connected surfaces and volumes, these interval constraints must be resolved globally to ensure that each surface will be meshable with the assigned scheme. The global solution technique implemented in Trelis is referred to as interval matching.

When meshing a surface or volume, matching intervals is performed automatically. In some cases, interval matching needs to be invoked manually, for example when meshing a collection of volumes, or a collection of surfaces not in a common volume. Interval matching can also be called to check whether the assigned intervals and schemes 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.

The interval matcher assigns intervals as close as possible to the user-specified intervals, while satisfying global interval constraints. The goal is to minimize the relative change in pre-assigned intervals on all entities. Interval matching only changes curves with interval firmness of soft or default .

Extra constraints can be added by the user to improve mesh quality locally; in particular, curves can be constrained to have the same intervals using the command

Curve <range> Interval {Same|Different}

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

The interval assignment algorithm tries to find one good interval solution from among the possibly infinite set of solutions. However, if many curves are hard-set or already meshed, there may be no solution. To improve the chances of finding a solution, it is suggested that curves are soft-set whenever possible. Also, a solution might not exist due to the way the local selections of corners and sides of mapped surfaces interact globally. If there is no solution, the following command may help in determining the cause:

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.

Advanced users may also wish to experiment with setting the following, which may change the interval solution slightly:

Set Match Intervals Rounding {on|off}

Set Match Intervals Fast {on|off}

Set Match Intervals Delta <interval_difference = 0.>

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 iteration. Note in rare cases this may produce better meshes. If set match intervals fast is set to on multiple curves will be fixed per iteration.

Set match intervals delta allows the number of intervals assigned to a curve to be delta intervals away from optimal unexpectedly. A larger value makes matching intervals faster, but the quality of the solution may be worse; Hint: try delta = 1.0. Default is 0.0.

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.

Rather than specifying a specific size or interval for a curve or surface, which may overconstrain the interval matcher, you can specify an upper and lower bound that is acceptable. This would typically be used in a complex assembly where there may be multiple intervals that may interact in order to get a compatible mapped/swept mesh through the assembly.

Surface <surface_id_range> {Interval|Size|Periodic Interval} {Lower|Upper} Bound {On|Off|<bound>}