On this page:
5.5.1 Automatic Mesh Quality Assessment
5.5.2 Coincident Node Check
5.5.3 Controlling Mesh Quality
5.5.4 Metrics for Edge Elements
5.5.5 Finding Intersecting Mesh
5.5.6 Metrics for Hexahedral Elements
5.5.7 Mesh Quality Example Output
5.5.8 Mesh Quality Command Syntax
5.5.8.1 Quality Options
5.5.8.1.1 Draw
5.5.8.1.2 List
5.5.8.1.3 Filter
5.5.9 Metrics for Quadrilateral Elements
5.5.10 Metrics for Tetrahedral Elements
5.5.11 Mesh Topology Check
5.5.12 Metrics for Triangular Elements
5.5.13 Metrics for Wedge Elements
8.5

5.5 Mesh Quality Assessment

The "quality" of a mesh can be assessed using several element quality metrics available in Cubit. Information about the Cubit quality metrics can be obtained from the command

Quality Describe {Hex | Hexahedral | Tet | Tetrahedral | Face | Quad | Quadrilateral | Tri | Triangular}

which gives data on the quality metrics for each of the above element types. The following pages discuss the mesh quality assessment capabilities in Cubit.

5.5.1 Automatic Mesh Quality Assessment

Cubit performs an automatic calculation of mesh quality which warns users when a particular meshing scheme or other meshing operation has created a mesh whose quality may be inadequate. These warnings are supplied in case the user forgets to manually check the mesh quality.

Cubit automatically calculates the SHEAR quality of hexahedral and quadrilateral elements and the SHAPE quality of tetrahedral and triangular elements. The SHEAR metric measures element skew and ranges between zero and one with a value of zero signifying a non-convex element, and a value of one being a perfect, right-angled element. The SHAPE metric also ranges between zero and one with a value of zero signifying a degenerate or inverted element and a value of one signifying a perfect, equilateral element. The quality of the mesh is then defined to be the minimum value of the shear metric for hexahedral and quadrilateral elements and the shape metric for tetrahedral and triangular elements, with the minimum taken over the elements in the mesh.

If the quality of the mesh is zero, the code reports "ERROR: negative jacobian element generated" to the command window. By default, if the quality of the mesh is positive but less than a certain threshold, the code reports "WARNING: poorly-shaped element generated" to the command window. Also reported in this case is the ID of the offending element, the value of its shear (or shape) metric, and the value of the threshold to which it was compared. The default value of the threshold parameter is 0.2. Users may change the threshold value by issuing the command

Set Quality Threshold <double=0.2>

The user may also change what type of message is printed in the case of a poor quality, but positive Jacobian mesh. This message can be printed as a warning (the default) or an error or can be turned off completely using the command

Set Print Quality { WARNING|Error|Off }

The above commands only affect the message generated for meshes with a quality greater than zero and less than the given threshold value; an error will always be generated for meshes with a quality of zero (that is, for meshes containing negative Jacobian elements).

5.5.2 Coincident Node Check

The ability to check for coincident nodes in the model is available in Cubit. It uses an efficient octal hash tree to make the comparisons.

To check for coincident nodes

  1. On the Command Panel, click on Mesh.

  2. Click on Volume, Surface, Curve, Vertex or Group.

  3. Click on the Quality action button.

  4. Select Coincidence Check from the drop-down menu.

  5. Select Coincident Nodes from the Type of Coincidence Check menu.

  6. Enter the appropriate settings.

  7. Click Apply.

Quality Check Coincident Node [ In ] [Group|Body|Volume|Surface|Curve|Vertex <id_range> ] [ Merge [Delete] ] [ HIGHLIGHT|Draw [color <number>]] [List] [Into Group [names|id] ]

If no entity list is given, the command works on all the nodes in the model. If an entity list is given, then it compares the nodes on those entities with the rest of the nodes in the model. By default the command highlights the coincident nodes in the graphics window and lists the total number of coincident nodes found. You can also have it clear the graphics and draw the nodes, and/or list the coincident node ids. Optionally, the coincident nodes found can be placed in a group.

If the model being operated on is from an imported universal file (i.e., no geometry exists in the model), you can merge the coincident nodes with the merge option. In this case delete allows you to delete the extra nodes (recommended). If you do not delete them they are placed into an output group.

You can control the tolerance used to check between nodes with the following setting (default = 1e-8):

set Node Coincident Tolerance [<value>]

5.5.3 Controlling Mesh Quality

If the quality of a model after meshing isn’t acceptable, there are two options available to improve that quality. The user can ask for more smoothing, or delete the mesh and start over. There are some commands that the user can invoke before meshing the model which can help to improve mesh quality. Some of them are discussed here.

5.5.3.1 Skew Control

The philosophy behind the skew control algorithm is one of subdividing surfaces into blocky, four-sided areas which can be easily mapped. The goal of this subdivide-and-conquer routine is to lessen the skew that a mesh exhibits on submapped regions. By controlling the skew on these surfaces, the mesh of the underlying volume will also demonstrate less skew.

To control skew or delete skew control

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

  2. Click on the Control Skew action button.

  3. Select Control Skew or Delete Control Skew from the drop-down menu.

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

  5. Click Apply.

Control Skew Surface <surface_id_range> [Individual]

Delete Skew Control Surface {surface_list} [Propagate]

The keyword individual is deprecated. Its purpose is to specify that surfaces should be processed without regards to the other surfaces in the given list. This is not necessary, and could lead to problems with the final mesh. When the command is entered, the algorithm immediately processes the surfaces, inserting vertices and setting interval constraints on the resulting subdivided curves. In this way, the mesh is more constrained in its generation, and the resulting skew on the model can be lessened. The only surfaces that can utilize this algorithm are those that lend themselves to a structured meshing scheme, although future releases might lessen this restriction.

The user also has the ability to delete the changes that the skew control algorithm has made. This is done by using the delete skew control command.

When the user requests the deletion of the skew control changes on a given surface, every curve on that surface will have the skew control changes deleted, even if a given curve is shared with another surface on which skew control was performed. If the user wishes to propagate the deletion of skew control to all surfaces which are affected by one (or more) particular surfaces, the keyword propagate should be used.

5.5.3.2 Propagate Curve Bias

When a bias mesh scheme is applied to a curve, this sometimes creates skewing of the surface mesh that is attached. Sometimes the user will want to ensure that the same bias is applied to curves on attached surfaces so that this skewing is minimized.

To propagate curve bias

  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 Bias from the first drop-down menu.

  5. Select Propagate Curve Bias from the second drop-down menu.

  6. Select Volume, Surface or Group from the third drop-down menu and enter the appropriate settings.

  7. Click Apply and then Mesh.

Propagate Curve Bias [Surface|Volume|Body|Group <id_list>]

This command will search out all simply mappable surfaces in the input list, find which curves of those have a bias scheme set, and will propagate that bias across the mappable surfaces.

5.5.3.3 Adjust Boundary

To adjust a boundary

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

  2. Click on the Adjust Boundaries action button.

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

  4. Enter the appropriate value for Angle.

  5. Click Apply.

Adjust Boundary {Surface|Group} <id_range> [Angle <double>]

This command can be used to improve element quality for mapped or submapped surface meshes. Often, due to vertex positions, the curve meshing for a surface will lead to a poor quality surface mesh. This command can be used to adjust the curve meshes in an attempt to generate a better quality surface mesh. The command works by looking at the angle the mesh edges leave the boundary. In a perfect mapped or submapped mesh, the mesh edges will be orthogonal to the boundary, or will go off at 90 degree angles. The adjust boundary command looks at the deviation of the mesh edges, and if it is greater than the prescribed angle deviation, it will move the node location such that it is 90 degrees, if possible. The deviation angle by default is 5 degrees and can be changed by the user through the [angle <double>] option in the command. In order to modify the curve meshes, the surface meshes are first deleted then later remeshed after the curve meshes have been repositioned and fixed. This command assumes that the volumes attached to the surface have not been meshed, if they have been, the command will return an error message. It should be noted that this command, while useful, may not always work due to interval constraints (i.e., you may need to change the intervals on the surface), or if the surfaces are not very blocky.

5.5.4 Metrics for Edge Elements

The metrics used for edge elements in Cubit are summarized in the following table:

Function Name

Dimension

Full Range

Acceptable Range

Length

L^0

0 to inf

None

5.5.4.1 Quality Metric Definitions:

Length: Distance between beginning and ending nodes of an edge

5.5.4.2 Comments on Algebraic Quality Measures
  1. The quality command for edge length only accepts edge elements as input; it does not accept geometry as input.

  2. The length metric is currently only available for edge elements. Edge elements are created by default when curves and surfaces are meshed. Edge elements are not created for interior volume elements.

5.5.5 Finding Intersecting Mesh

The find mesh intersection capability finds intersecting mesh between blocks, bodies, volumes, or surfaces. This command is useful for identifying cases where the geometry does not intersect but the mesh does. The command can find intersecting 2-dimensional mesh by specifying a list of surfaces, or 3-dimensional mesh by specifying blocks, bodies, or volumes. Surfaces that have mesh between them that intersects within a tolerance of 1e-6 are located. Finding surfaces with intersecting mesh is done using the command:

Find Mesh Intersection {Block|Body|Surface|Volume} <id_list> [with {Block|Body|Surface|Volume} <id_list>] [low <value=0.0001>] [high <value>] [exhaustive] [worst <num_worst>] [draw] [log] [group<’name’>]

5.5.5.1 Finding Intersecting 2D Mesh

To find intersections between 2-dimensional mesh surfaces must be specified. If intersections are found, the surfaces containing the intersecting mesh are drawn (Figure 353) and the put into a group named ’surf_intersect’, unless the user has specified another name using the group <’name’> option. Also, the ids of the intersecting surface pairs are printed to the terminal,

Figure 353: "Find mesh intersection surface all"

The draw option will draw the surfaces and intersecting mesh in wire frame mode, allowing the user to see exactly where on the surface the mesh intersection is (Figure 354).

Figure 354: "Find mesh intersection surface all draw"

5.5.5.2 Facetted Representation

Detecting mesh intersections between surfaces works entirely off of the mesh, converting the mesh into triangular facets. (The facetted representation is what you see in a shaded view in the graphics). For example, a quad is split into two triangles. Higher order 2D elements are split into multiple triangles.

5.5.5.3 Drawing Mesh Intersection

The command below will draw the mesh intersection for only a pair of surfaces. The surfaces and intersecting mesh are drawn in wire frame mode, allowing the user to see exactly where on the surface the mesh intersection is.

Draw Surface <id> <id> mesh intersection [add] [include_volume]

Figure 355: Draw Mesh Intersection

5.5.5.4 Finding Intersecting 3D Mesh

With 3-dimensional entities mesh element intersections can be located by specifying entities: blocks, bodies, or volumes. If intersections are found the intersecting elements are put into a group named ’mesh_intersect’ unless the user has specified another name using the group <’name’> option. Data is printed to the terminal detailing the intersections. The largest intersection value is reported for each pair of intersecting entities (blocks, volumes, or bodies). This value is the fraction of an element’s volume (which element belongs to the entity in the first column) that intersects elements belonging to the entity in the second column. See Figure 356 below. The information printed in columns from left to right is:

  • the entities that have intersecting mesh

  • the other entities with which that entity’s mesh intersects

  • the highest intersection value of an element belonging to the entity in column one

  • the id of that element

  • the number of elements of the entity in column one intersecting other elements of the entity in column two

Figure 356: "Find mesh intersection block all draw"

If the with option is used, the user specifies additional entities. The additional entities will not be reported in the first column of the output. This allows the user to focus on entities of interest without outputting too much data to the terminal. See Figure 357 below.

Figure 357: "Find mesh intersection block 1 with block all"

The low and high options set how much cumulative intersection should be detected. A low value of 0.1 would ignore elements that do not intersect more than 10% of their volume. Similarly, a high value of 0.5 would discard elements that intersect more than 50% of their volume. Both low and high can be used simultaneously. The default for the low value is 0.0001

The exhaustive option examines all elements for intersection. The default is to only examine elements with nodes on the boundary of the specified entities, anticipating that the intersections will occur mostly at boundaries.

The worst parameter limits the printout to the ’n’ worst entities with elements of the highest intersections. The intersection fraction reported here is the cumulative intersection an element has with elements of all other entities in the check.

The draw option draws the intersecting elements using a color spectrum, red corresponding to high intersection and green to low. The color is according to cumulative intersection, as described in the worst option.

If the log option is specified, the output from the command will also be sent to a file named "mesh_intersection01.txt", with the number used in the file name incremented as needed. This becomes useful when you have hundreds of volumes with intersections.

Note:

5.5.6 Metrics for Hexahedral Elements

The metrics used for hexahedral elements in CUBIT are summarized in the following table:

Function Name

   

Dimension

   

Full Range

   

Acceptable Range

   

Reference

Aspect Ratio

   

L^0

   

1 to inf

   

1 to 4

   

1

Skew

   

L^0

   

0 to 1

   

0 to 0.5

   

1

Taper

   

L^0

   

0 to +inf

   

0 to 0.4

   

1

Element Volume

   

L^3

   

-inf to inf

   

None

   

1

Stretch

   

L^0

   

0 to 1

   

0.25 to 1

   

2

Diagonal Ratio

   

L^0

   

0 to 1

   

0.65 to 1

   

3

Dimension

   

L^1

   

0 to inf

   

None

   

1

Condition No.

   

L^0

   

1 to inf

   

1 to 8

   

5

Jacobian

   

L^3

   

-inf to inf

   

None

   

5

Scaled Jacobian

   

L^0

   

-1 to +1

   

0.5 to 1

   

5

Shear

   

L^0

   

0 to 1

   

0.3 to 1

   

5

Shape

   

L^0

   

0 to 1

   

0.3 to 1

   

5

Relative Size

   

L^0

   

0 to 1

   

0.5 to 1

   

5

Shear & Size

   

L^0

   

0 to 1

   

0.2 to 1

   

5

Shape & Size

   

L^0

   

0 to 1

   

0.2 to 1

   

5

Timestep

   

Seconds

   

0 to inf

   

None

   

6

Distortion

   

L^0

   

0 to 1

   

0.6 to 1

   

7

Mass Increase Ratio

   

L^0

   

1 to inf

   

None

   

5.5.6.1 Hexahedral Quality Definitions

With a few exceptions, as noted below, Cubit supports quality metric calculations for linear hexahedral elements only. When calculating quality metrics, that only support linear elements, for a higher order hexahedral element, Cubit will only use the corner nodes of the element.

aspect ratio: Maximum edge length ratios at hex center.

skew: Maximum |cos A| where A is the angle between edges at hex center.

taper: Maximum ratio of lengths derived from opposite edges.

element volume: For linear hexes, the jacobian at hex center. For higher-order hexes, the hex is subdivided into sub-tets, the volumes of which are summed.

stretch: Sqrt(3) * minimum edge length / maximum diagonal length.

diagonal ratio: Minimum diagonal length / maximum diagonal length.

dimension: Pronto-specific characteristic length for stable timestep calculation. Char_length = Volume / 2 grad Volume.

condition no. Maximum condition number of the Jacobian matrix at 8 corners.

jacobian: Minimum pointwise volume of local map at 8 corners at center of hex. Cubit also supports Jacobian calculations for hex27 elements.

scaled jacobian: For linear elements the minimum Jacobian divided by the lengths of the 3 edge vectors.

shear: 3/Mean Ratio of Jacobian Skew Matrix

shape: 3/Mean Ratio of weighted Jacobian Matrix

relative size: Min(J, 1/J), where J is the determinant of weighted Jacobian matrix

shear & size: Product of Shear and Size Metrics

shape & size: Product of Shape and Size Metrics

timestep: The approximate maximum timestep that can be used with this element in explicit transient dynamics analysis. This critical timestep is a function of both element geometry and material properties. To compute this metric on hexes, the hexes must be contained in a element block that has a material associated to it, where the material has poisson’s ratio, elastic modulus, and density defined.

distortion: {min(|J|)/actual volume}*parent volume, parent volume = 8 for hex. Cubit also supports Distortion calculations for hex20 elements.

mass increase ratio: This metric stems from the global target time step and the element time step. The density required to fulfill the target time step (via mass scaling) divided by the block density is termed the mass increase ratio. Because the density within each element is constant, a ratio in the element density is equivalent to a ratio in the element mass. This metric calculates the requisite density for each element to attain the prescribed target time step. If that density is greater than the defined density, the metric yields a value greater than one. This desired global time step is set by the user with the command:

[Set] Target Timestep <value>

As stated, this metric computes the element based timestep metric and consequently element blocks must be defined with material properties of Young’s modulus, Poisson’s ratio, and a target timestep must be set. If this metric is computed in the context of a block (’quality block 1 mass increase ratio’) an accompanying printout of the mass increase per block is given.

5.5.6.2 References for Hexahedral Quality Measures
  1. (Taylor, 89)

  2. FIMESH code

  3. Unknown

  4. (Knupp, 00)

  5. P. Knupp, Algebraic Mesh Quality Metrics for Unstructured
    Initial Meshes, to appear in Finite Elements for Design
    and Analysis.

  6. Flanagan, D.P. and Belytschko, T., 1984, "Eigenvalues and Stable Time Steps for the Uniform Hexahedron and Quadrilateral," Journal of Applied Mechanics, Vol. 51, pp.35-40.

  7. SDRC/IDEAS Simulation: Finite Element Modeling - User’s Guide

5.5.7 Mesh Quality Example Output

The typical summary output from the command quality surface 24 is shown in Figure 358. Figure 2 shows the corresponding histogram. The colored element display resulting from the command quality surface 1 draw ‘skew’ is shown Figure 360. A color legend is also printed to the console as shown in Figure 359.

Figure 358: Typical Summary for a Quality Command

histogram.gif

Figure 359: Legend for command "Quality Surface 1 Skew Draw Mesh"

Figure 2. Histogram output from command "Quality Surface 24 Draw Histogram"

Figure 360: Graphical output of quality metric for command "Quality Surface 24 Skew Draw Mesh"

5.5.8 Mesh Quality Command Syntax