On this page:
5.8.1 Mesh Adaptivity and Sizing Functions
5.8.2 Bias Sizing Function
5.8.3 Constant Sizing Function
5.8.4 Curvature Sizing Function
5.8.5 Exodus II-based Field Function
5.8.6 Geometry Adaptive Sizing Function (Skeleton Sizing)
5.8.6.6 Limitations
5.8.7 Interval Sizing Function
5.8.8 Inverse Sizing Function
5.8.9 Linear Sizing Function
5.8.10 Sizing Source Sizing Function
5.8.11 Geometry Adaptive for Tri  Mesh and Tet  Mesh Schemes
8.5

5.8 Adaptivity And Sizing Functions

5.8.1 Mesh Adaptivity and Sizing Functions

Cubit provides several options for controlling the density of a mesh by adapting to various geometric, analysis, or user-defined properties. Interval sizes are defined automatically, explicitly, or through sizing functions. The sizing functions can be based on the physical features of the model, a previous analysis solution, or a user-specified bias. Adaptivity can apply to meshing either curves or surfaces.

5.8.1.1 Adaptive Curve Meshing

Cubit provides several ways to adaptively mesh curves. Three curve meshing schemes are provided for this purpose. They include the following schemes:

The first two schemes use characteristics of the geometric model to define element sizes. The third scheme uses a field function typically defined from a previous analysis solution. FeatureSize is an alpha feature and should be used with caution.

5.8.1.2 Adaptive Surface Meshing

Adaptive surface meshing in Cubit produces a function following mesh which sizes elements based on the value of the driving function at the spatial location at which the element is to be placed. Adaptive surface meshing is performed using the paving, triadvance or tridelaunay algorithms in combination with an appropriate sizing function. The types of sizing functions that can be used are

Super sizing and test sizing functions are alpha features and shouldbe used with caution.

The procedure for adaptively meshing a surface is to designate paving, triadvance or tridelaunay as the mesh scheme for that surface, assign sizing function types, and mesh the surface.

The command syntax of these commands is:

Surface < id > Scheme {Pave|TriAdvance|TriDelaunay}

then

Import Sizing Function ’<exodusII_filename>’ Block <block_id> Variable ’<variable_name>’ Time <time> [Deformed]

Surface <id> Sizing Function [Type] Exodus [Min <min_value> Max <max_value>]

or

Surface <id> Sizing Function [Type] {Constant|Curvature|Interval|Inverse|Linear|Super|Test|None}] [Neighbor [<max_neighbors>]]

(See note below regarding ’Neighbor’ parameter)

or

Surface <id> Sizing Function [Type] Bias Start Curve <id_range> {Finish Curve <id_range>| Factor <val>}

then

Mesh Surface <id>

5.8.1.3 Adaptive Volume Meshing

Adaptive volume meshing in Cubit produces a function following mesh that sizes elements based on the value of the driving function at the spatial location at which the element is to be placed. Adaptive volume meshing is performed using the tetmesh scheme in combination with an appropriate sizing function. The types of sizing functions that can be used are constant, test, geometry adaptive and geometry adaptive (skeleton sizing). Test sizing is an alpha feature and should be used with caution. Other sizing functions will be added in future versions of Cubit.

The procedure for adaptively meshing a volume is to designate tetmesh as the mesh scheme for that volume, assign sizing function types, and mesh the volume.

The command syntax of these commands is:

Volume <id> scheme tetmesh
Volume <id> Sizing Function [Type] {Constant|Test|None}
Mesh Surface <id>

The following sections describe details of the various volume sizing methods.

Note regarding ’Neighbor’ parameter: The maximum neighbors is the number of points used by the sizing function to compute the size at the requested point. If the number of neighbors is zero, all of the points on the boundary are used in the size calculation. If the number of neighbors is some other number, only that number of closest points are used in the calculation.

5.8.2 Bias Sizing Function

Syntax:

Surface <id> Sizing Function Type Bias Start Curve <id_range>
{Finish Curve <id_range>| Factor <val>}

Synopsis:

The bias sizing function for surfaces is similar to biasing curves. Indeed, setting a bias sizing function for a surface will bias the boundary curves, as well as control paving to follow the bias inside the surface. You first specify the size of a couple of bounding curves (the start curves), then specify the bias sizing function for the surface.

Discussion:

Recall that for biasing curves, you specify the start and end vertex. For the bias sizing function, you specify the start curves, from which to bias away. The sizes of these curves should already be set before setting the surface sizing function since their average size is taken to be the starting size (almost). If the start curve sizes change, then you should set the surface sizing function again.

You can either supply a geometric factor, or the set of finish curves whose sizes you want to match at that distance. A geometric factor. It automatically sizes and biases or dualbiases the non-start curves, including any finish curves. These curves need not be perpendicular to the starting curves. The interval count and scheme are soft-set, so they won’t be changed if they are already hard-set. If the size of the start curves or finish curves are changed, then the sizing function command should be re-issued.

The sizing function value at a point is defined in terms of the straight-line distance from the point to the closest starting curve. So, it works best if all the starting curves have the same size, and the surface is relatively flat. But, starting curves need not be parallel to one another. Similarly, the non-start curves need not have any particular orientation wrt the start curves.

The bias sizing function was designed to easily set the sizes of a sequence of adjoining surfaces: assign a size to the curve you want to bias away from, then set the bias sizing function of the first surface, with its finish curves being the start curve of the second surface, etc. See the last example below.

Examples:

Here are some example journal files and resulting pictures:

# bias_sz_fn_demo.jou
brick x 100 y 10 z 10
color vol 1 red
surface 1 scheme pave
surface all except 1 visibility off
# label curve interval
# graph text 2
display

# mesh 1
curve 4 size 2
surface 1 sizing function type bias start curve 4 factor 1.3
mesh surface 1
# see figure 1

Figure 417: Surface with bias sizing function factor > 1.

# mesh 2
delete mesh
surface 1 sizing function type bias start curve 4 factor {1/1.1}
mesh surface 1
# see figure 2

Figure 418: Surface with bias sizing function factor < 1

# mesh 3
reset
cyl rad 6 z 1
cyl rad 4 z 1
sub 2 from 1
section body 1 yplane
section body 1 xplane
surf all except 19 vis off
color vol 1 red
display

# finish curve mesh
surf 19 scheme qtri base scheme pave
surface 19 size 0.7
curve 26 size 0.07
surface 19 sizing function type bias start curve 26 finish curve 25
mesh surface 19
pause
# see Figure 419

Figure 419: Surface with bias sizing function start and finish curve. Scheme qtri, base scheme pave.

# dual bias mesh
delete mesh
curve 25 26 size 0.02
curve 25 26 scheme equal
surface 19 sizing function type bias start curve 26 25 factor 1.3
mesh surface 19
zoom curve 12
pause
# see Figure 420

Figure 420: Close up of surface with dual bias sizing function start and finish curve. Scheme qtri, base scheme pave.

# funny face
reset
prism sides 5 z 1 radius 1
cylinder radius 0.1 z 1
body 2 move -0.4 0 0
subtract 2 from 1
cylinder radius 0.1 z 1
body 3 move 0.2 0 0
subtract 3 from 1
prism sides 6 radius 0.2 z 1
body 4 move 0 -0.4 0
subtract 4 from 1
surface all except 34 visibility off
color vol 1 red
display
surface 34 scheme pave
curve 23 19 size 0.01
surface 34 sizing function type bias start curve 19 23 factor 1.3
mesh surface 34
# see Figure 421

Figure 421: Bias away from two round holes.

# bias surface chain
reset
cylinder radius 1 z 1
cylinder radius 0.2 z 1
cylinder radius 0.4 z 1
cylinder radius 0.8 z 1
imprint body all
delete body 2 3 4
section body 1 xplane
section body 1 yplane
surface all except 42 43 44 45 vis off
color volume 1 red
surface all scheme pave
curve 55 interval 36
surface 43 sizing function type bias start curve 55 factor 1.3
surface 44 sizing function type bias start curve 57 factor 1.3
# curve 57 had its size determined by a prior bias sizing function
surface 45 sizing function type bias start curve 58 factor 1.3
surface 42 sizing function type bias start curve 55 factor 1.3
mesh surface 42 43 44 45
display
highlight curve in surface 42 43 44 45
# see Figure 422

Figure 422: A chain of biased surfaces. Only one curve's intervals were explicitly set.

5.8.3 Constant Sizing Function

To use the constant sizing function

  1. On the Command Panel, click on Mesh.

  2. Click on Volume or Surface.

  3. Click on the Intervals action button.

  4. Select Sizing Function from the drop-down menu.

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

  6. Select Constant from the Sizing Functions menu.

  7. Enter in any other appropriate settings.

  8. Click Apply and then Mesh.

Surface <id> Sizing Function [Type] Constant

Volume <id> Sizing Function [Type] Constant

Synopsis:

The constant sizing function specifies that a constant element size be used over the interior of the surface or volume. The value used as the constant size is the interval size that has been set for the entity. For example, the following commands will cause the mesh size to be smaller on the interior than on the surface’s bounding curves.

reset
brick x 10
surface 1 scheme pave
curve in surface 1 interval 5
surface 1 size 0.5
surface 1 sizing function constant
mesh surface 1

Figure 423: Constant Sizing Function

5.8.4 Curvature Sizing Function

The curvature sizing function determines element size based on the curvature evaluation of a surface at the current location. Two surface curvature values (taken perpendicular to each other) are compared at the location of interest, and the largest is used as the sizing function for the mesh. Figure 424 shows a solid with a highly deformed surface which displays rapid change of surface curvature at several locations.

high-curve-nurb00.gif

Figure 424: NURB solid with high surface curvature change

Figure 425 depicts a normal paved mesh of this surface using a common size on all bounding curves and no sizing function in the interior. The total number of quadrilateral shell elements for this case is 1988. Figure 426 shows a mesh which was generated with the curvature sizing function option. The mesh is graded denser in the regions of quickly changing curvature, such as at the tops of the hills and at the bottom of the valley. Due to the intense interrogation of the underlying geometric modeler which the curvature method relies on, this option can be very computationally expensive.

nurb-no-sizing0.gif

Figure 425: NURB mesh with no interior sizing function

nurb-curvature-sizing0.gif

Figure 426: NURB mesh with curvature sizing function

5.8.5 Exodus II-based Field Function

The ability to specify the size of elements based on a general field function is also available in Cubit. With this capability, the desired element size can be determined using a field variable read from a time-dependent variable in an Exodus II file. Both quadrilateral and triangle elements are supported for surfaces, but only tetrahedral elements are supported for volumes at this time.

A field function is a time-dependent variable in an Exodus II file. Either node-based or element-based variables may be used. Currently, field functions are imported from element and node-based Exodus II data. The mesh block containing the corresponding elements must be imported along with the field function data.

Exodus variable-based adaptive meshing is accomplished in Cubit in several steps:

  1. Surface mesh scheme set to Pave or TriAdvance, and/or volume mesh scheme set to Tetmesh. Bounding curve mesh schemes can also optionally be set to Stride (see comments below.)

  2. An Exodus mesh and time-dependent variable for that mesh is read into Cubit.

  3. The mesh and variable data are associated to geometry.

  4. The Exodus variable is normalized to give localized size measures, and the surface/volume sizing function type is designated.

  5. Geometry is meshed

Importing a field function and associating it with its geometry, and normalizing that function are done in two separate steps to allow renormalization. The following command is used to read in a field function and its associated mesh:

Import Sizing Function ’<exodusII_filename>’ Block <block_id> Variable ‘<variable_name>’ Time <time_val> [Deformed]

where block_id is the element block to be read, variable_name is the Exodus time-dependent variable name (either element-based or nodal-based),and time_val is the problem time at which the data is to be read. The deformed keyword indicates whether deformation has been accounted for on the new model (for information on creating deformed 2D geometry from EXODUSII data, see Importing 2D EXODUSII Files) and needs to be accounted for in the sizing function data. When this command is given, the nodes and elements for that element block are read in and associated to geometry already initialized in Cubit.

Note that when a sizing function is read in, the mesh is stored in an ExodusMesh object for the corresponding geometry, and therefore the geometry is not considered meshed. Also note that if deformation is not being modeled, the geometry to which the mesh is being associated must be in the same state as it was when that mesh was written (see Importing a Mesh for more details on importing meshes).

Once the field function has been read in and assigned to geometry, it can be normalized before being used to generate a mesh. The normalization parameters are specified in the same command that is used to specify the sizing function type for the surface or volume.

To use the exodus II-based field function

  1. On the Command Panel, click on Mesh.

  2. Click on volume or surface.

  3. Click on the Intervals action button.

  4. Select Sizing Function from the drop-down menu.

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

  6. Select Exodus from the Sizing Functions menu.

  7. Enter in the appropriate settings for Min Size and Max Size.

  8. Click Apply and then Mesh.

Surface <id> Sizing Function Type Exodus [Min <min_val> Max <max_val>]

Volume <id> Sizing Function Type Exodus [Min <min_val> Max <max_val>]

If normalization parameters are specified, the field function will be normalized so that its range falls between the minimum and maximum values input. Subsequent normalizations operate on the normalized data and not on the original data. If an element-based variable is used for the sizing function, each node is assigned a sizing function that is the average of variables on all elements connected to that node. Nodal variables are used directly.

After the sizing function normalization, the geometry may be meshed using the normal meshing command.

For example, the left image in Figure 427 depicts a plastic strain metric which was generated by PRONTO-3D [Taylor, 89] a transient solid dynamics solver, and recorded into an ExodusII data file. When the file is read back into Cubit, the paving algorithm is driven by the function values at the original node locations, resulting in an adaptively generated mesh [Attaway, 93]. The right image in Figure 427 depicts the resulting mesh from this plastic strain objective function.

Figure 427: Plastic strain metric and the adaptively generated mesh

5.8.5.1 Curve Meshing with Exodus II - based Field Functions

In addition to the capability to adaptively mesh surface using a field function, curves may also be meshed separately using the Exodus II information. The Stride scheme for meshing curves is used for this purpose. If the user does not specify a mesh scheme for the curve, Cubit will default to scheme Stride when the Exodus sizing function is used for surfaces and volumes defined by that curve.

5.8.6 Geometry Adaptive Sizing Function (Skeleton Sizing)

The geometry adaptive sizing function, also referred to as the skeleton sizing function (Quadros 2005; Quadros 2004; Quadros 2004(2)), automatically generates a mesh sizing function based upon geometric properties of the model. This sizing scheme attempts to create a sizing function that allows unstructured meshing schemes to generate a mesh with the following properties:

The geometry adaptive sizing function can be used to create sizing information for surfaces, solids, and assemblies.

This sizing function uses geometric properties to influence mesh size. The scheme calculates or estimates:

These properties are then used to calculate a sizing function throughout the geometric entity (or entities). Regions of relatively high complexity will have a fine mesh size, while regions of relatively low complexity will have a coarse mesh size. For example, generally, a high-curvature region on a surface will have a finer mesh size than a low-curvature region on that surface

figure01.gif

Figure 428: Overview of Computational Framework

figure02.gif

Figure 429: Skeleton Sizing Function example in the GUI

5.8.6.1 Skeleton Sizing Behaviors

Skeleton sizing can be specified on single or multiple surface(s)/volume(s) at a time from the GUI (Meshing Control Panel) or the command-line. The following describes how specifying sizing on entities can change skeleton sizing’s behavior:

Single surfaces/volumes – If skeleton sizing is applied to surfaces/volumes one at a time, each entity’s sizing is not influenced by the others. On the command-line, issue a separate command for each entity. In the GUI, specify only one surface or volume before selecting Apply Size.

Multiple surfaces – If skeleton sizing is applied on multiple surfaces together, then geometric features of a particular surface may affect its neighboring surfaces.

Multiple volumes (assembly sizing) – Skeleton sizing can be applied to assembly models so that geometric features of a volume may influence its neighbors. Volumes should first be imprinted and merged before they are specified together for skeleton sizing.

5.8.6.2 Command Line Syntax

Skeleton sizing on surfaces:

Surface <surface_id_range> Sizing Function Skeleton
{[scale <1 to 10 = 7>] [time_accuracy_level <1 to 3 = 2>]
[min_depth <3 to 8 = 5>] [max_depth <4 to 9 = 7>] [facet_extract_ang <1 to 30 = 10>]
[min_num_layers_2d < 1 to N = 1>] [min_num_layers_1d < 1 to N = 1>]
[max_span_ang_surf <5.0 to 75.0 = 45.0 degrees>]
[max_span_ang_curve <5.0 to 75.0 = 45.0 degrees>]
[min_size <float>] [max_size <float>] [max_gradient <float=1.5>]}

Skeleton sizing on volumes:

Volume <range> Sizing Function Skeleton
{[scale <1 to 10 = 7>] [time_accuracy_level <1 to 3 = 2>]
[min_depth <3 to 8 = 5>] [max_depth <4 to 9 = 7>] [facet_extract_ang <1 to 30 = 10>]
[min_num_layers_3d < 1 to N = 1>] [min_num_layers_2d < 1 to N = 1>]
[min_num_layers_1d < 1 to N = 1>]
[max_span_ang_surf <5.0 to 75.0 = 45.0 degrees>]
[max_span_ang_curve <5.0 to 75.0 = 45.0 degrees>]
[min_size <float>] [max_size <float>] [max_gradient <float=1.5>]}

The options are explained below:

5.8.6.3 Basic Arguments
5.8.6.3.1 Scaling and Accuracy Arguments:
5.8.6.4 Advanced Arguments
5.8.6.4.1 Lattice Arguments:

The skeleton sizing function is generated and stored on a background octree grid whose cells are subdivided based on the graphics facets of the model. The level of subdivision of the background grid affects how well the sizing function captures the geometric complexity of features. Reasonable defaults have been selected for the following two refinement (subdivision) parameters, but these may be overridden for use with simple (decrease parameters) or more complex (increase parameters) models.

5.8.6.4.2 Source Entity Arguments

Note: These arguments override the basic arguments. For example, time accuracy level 1 internally sets min_depth = 4 and max_depth = 6, and when min_depth is set to 4 and max_depth is set to 7 in the advanced options (recommended for models with fine features), then advanced options override the basic options. In the command-line, to override the depths set by a time_accuracy_level, specify min_depth and max_depth after it.

5.8.6.5 Skeleton with Other Sizing Controls

Skeleton sizing function produces a smooth sizing function when called with other sizing controls available in Cubit. Skeleton sizing function behaves as SOFT firmness level. Skeleton sizing function always respects interval count specified on the curves. Skeleton sizing function respects interval size on curves and surfaces only if it is specified after calling the skeleton sizing function.

figure03.gif

Figure 430: Skeleton sizing function with other sizing controls

5.8.6.6 Limitations
5.8.7 Interval Sizing Function

The interval sizing function is similar to the Linear function, but bases edge length at a location on the squared lengths of edges bounding the surface weighted by their inverse distance from the current location. An example is shown below.

Figure 431: NURB mesh with interval sizing function, 34 by 16 density

5.8.8 Inverse Sizing Function