Main Content

meshQuality

Evaluate shape quality of mesh elements

Description

example

Q = meshQuality(mesh) returns a row vector of numbers from 0 through 1 representing shape quality of all elements of the mesh. Here, 1 corresponds to the optimal shape of the element.

example

Q = meshQuality(mesh,elemIDs) returns the shape quality of the specified elements.

example

Q = meshQuality(___,"aspect-ratio") determines the shape quality by using the ratio of minimal to maximal dimensions of an element. The quality values are numbers from 0 through 1, where 1 corresponds to the optimal shape of the element. Specify "aspect-ratio" after any of the previous syntaxes.

Examples

collapse all

Evaluate the shape quality of the elements of a 3-D mesh.

Create a PDE model.

model = createpde;

Include and plot the following geometry.

importGeometry(model,"PlateSquareHoleSolid.stl");
pdegplot(model)

Figure contains an axes object. The axes object contains 6 objects of type quiver, text, patch, line.

Create and plot a coarse mesh.

mesh = generateMesh(model,"Hmax",35)
mesh = 
  FEMesh with properties:

             Nodes: [3x854 double]
          Elements: [10x378 double]
    MaxElementSize: 35
    MinElementSize: 17.5000
     MeshGradation: 1.5000
    GeometricOrder: 'quadratic'

pdemesh(model)

Evaluate the shape quality of all mesh elements. Display the first five values.

Q = meshQuality(mesh);
Q(1:5)
ans = 1×5

    0.6533    0.6640    0.7480    0.7721    0.8736

Find the elements with the quality values less than 0.2.

elemIDs = find(Q < 0.2);

Highlight these elements in blue on the mesh plot.

pdemesh(mesh,"FaceAlpha",0.5)
hold on
pdemesh(mesh.Nodes,mesh.Elements(:,elemIDs), ...
                  "FaceColor","blue", ...
                  "EdgeColor","blue")

Plot the element quality in a histogram.

figure
hist(Q)
xlabel("Element Shape Quality","fontweight","b")
ylabel("Number of Elements","fontweight","b")

Figure contains an axes object. The axes object with xlabel Element Shape Quality, ylabel Number of Elements contains an object of type patch. This object represents Q.

Find the worst quality value.

Qworst = min(Q)
Qworst = 0.1867

Find the corresponding element IDs.

elemIDs = find(Q==Qworst)
elemIDs = 377

Evaluate the shape quality of the elements of a 2-D mesh.

Create a PDE model.

model = createpde;

Include and plot the following geometry.

importGeometry(model,"PlateSquareHolePlanar.stl");
pdegplot(model)

Figure contains an axes object. The axes object contains an object of type line.

Create and plot a coarse mesh.

mesh = generateMesh(model,"Hmax",20)
mesh = 
  FEMesh with properties:

             Nodes: [2x298 double]
          Elements: [6x132 double]
    MaxElementSize: 20
    MinElementSize: 10
     MeshGradation: 1.5000
    GeometricOrder: 'quadratic'

pdemesh(model)

Figure contains an axes object. The axes object contains 2 objects of type line.

Find the IDs of the elements within a box enclosing the center of the plate.

elemIDs = findElements(mesh,"box",[25,75],[80,120]);

Evaluate the shape quality of these elements. Display the result as a column vector.

Q = meshQuality(mesh,elemIDs);
Q.'
ans = 16×1

    0.3623
    0.9973
    0.6361
    0.3497
    0.7660
    0.7858
    0.9843
    0.7858
    0.3439
    0.3623
      ⋮

Find the elements with the quality values less than 0.4.

elemIDs04 = elemIDs(Q < 0.4)
elemIDs04 = 1×4

     5    26    47    51

Highlight these elements in green on the mesh plot. Zoom in to see the details.

pdemesh(mesh,"ElementLabels","on")
hold on
pdemesh(mesh.Nodes,mesh.Elements(:,elemIDs04),"EdgeColor","green")
zoom(10)

Figure contains an axes object. The axes object contains 3 objects of type line.

Determine the shape quality of mesh elements by using the ratios of minimal to maximal dimensions.

Create a PDE model and include the L-shaped geometry.

model = createpde(1);
geometryFromEdges(model,@lshapeg);

Generate the default mesh for the geometry.

mesh = generateMesh(model);

View the mesh.

pdeplot(model)

Figure contains an axes object. The axes object contains 2 objects of type line.

Evaluate the shape quality of mesh elements by using the minimal to maximal dimensions ratio. Display the first five values.

Q = meshQuality(mesh,"aspect-ratio");
Q(1:5)
ans = 1×5

    0.8102    0.8721    0.9964    0.8141    0.9964

Evaluate the shape quality of mesh elements by using the default setting. Display the first five values.

Q = meshQuality(mesh);
Q(1:5)
ans = 1×5

    0.9727    0.9903    1.0000    0.9740    1.0000

Input Arguments

collapse all

Mesh object, specified as the Mesh property of a PDEModel object or as the output of generateMesh.

Example: model.Mesh

Element IDs, specified as a positive integer or a matrix of positive integers.

Example: [10 68 81 97 113 130 136 164]

Output Arguments

collapse all

Shape quality of mesh elements, returned as a row vector of numbers from 0 through 1. The value 0 corresponds to a deflated element with zero area or volume. The value 1 corresponds to an element of optimal shape.

Example: [0.9150 0.7787 0.9417 0.2744 0.9843 0.9181]

Data Types: double

References

[1] Knupp, Patrick M. "Matrix Norms & the Condition Number: A General Framework to Improve Mesh Quality via Node-Movement." In Proceedings, 8th International Meshing Roundtable. Lake Tahoe, CA, October 1999: 13-22.

Version History

Introduced in R2018a