Avoiding Inverted Mesh Elements
Inverted Mesh Elements
If you have a mesh that is coarse along a curved boundary, you might encounter problems with inverted mesh elements. This means that a mesh element is wrapped inside-out or has zero area (in 2D) or volume (in 3D). More precisely, there is some coordinate for which the Jacobian matrix for the mapping from local to global coordinates has a negative or zero determinant. In most cases, the linear (straight) mesh elements that you see in a mesh plot are not inverted, but the higher-order curved mesh elements used for computing the solution might be. Studying the minimum element quality therefore does not reveal the presence of inverted mesh elements in most cases.
Inverted mesh elements in themselves do not pose any immediate threat to the overall accuracy of your solution. However, if you are using an iterative solver, it might fail to converge. If you reach convergence and the solution looks good, it likely is. It is worth bearing in mind that the faces where there are inverted elements are less than perfectly resolved. If these faces are important for your results, you might want to pursue a mesh without inverted elements or at least make sure that the mesh resolution is sufficiently fine to guarantee an accurate solution. The easiest way to get an idea of the accuracy is to try a few different meshes and see how the solution changes. If the variation does not exceed your limits of acceptance, you are fine.
The solver prints a message about inverted curved elements to the Messages window and corresponding warnings to the Log window if they appear. Warnings nodes () also appear in the solver sequence where the inverted mesh elements appear. If you are using a Free Tetrahedral node to create the mesh, it is often possible to avoid inverted curved elements by selecting the Avoid inverted curved elements check box in the node’s Settings window under Element Quality Optimization.
For a moving mesh, the mesh can become inverted, in which case an error occurs. In the Error node (), which appears in the solver sequence, information about the location of the inverted elements appears. The problematic mesh is available as a Problematic Deformed Mesh node () under Meshes, so that you can inspect the mesh around the coordinates for the inverted mesh elements.
Curved Interior Domain Elements
In many situations, the inverted elements can be fixed by curving elements inside the domain to match the boundary. You find the Avoid inverted elements by curving interior domain check box, which controls if elements inside the domain are curved, in the Settings window for the Component node. The default behavior is to curve interior domain elements when needed. In 3D, this setting also has the effect that elements inside a face can be curved to match the face edges.
Figure 8-5: Curved interior mesh elements (left) and the corresponding linear mesh (right).
In some situations, it is impossible to avoid the inverted elements no matter how the interior mesh elements are curved. This can, for example, happen if the domain becomes infinitely thin where two circles (or cylinders in 3D) touch, or if the mesh is extremely coarse and does not approximate the true geometry shape well enough. Then the higher-order node points (that control the curving) are moved away from the geometry boundaries, typically making the elements less curved than they should be according to the geometry. When this happens, the solver will print out information indicating how many points were moved and how much in the Log window.
Visualizing the Geometry Approximation
The geomapproxdist variable indicates, for each element, how far a node point in the element was moved from the geometry. To see the parts of the geometry that are affected, you can make a surface plot of geomapproxdist, or make a volume plot with an element filter set to geomapproxdist>0.
Using Linear Interior Domain Elements
If you disable the use of curved interior domain elements, the solver tries to avoid inverted elements by linearization. This is done by reducing the geometry shape order for the corresponding elements to first order. By default, the solver does this automatically. Alternatively, you can avoid problems with inverted mesh elements by using linear geometry shape order for all elements. You do this by choosing Linear from the Geometry shape order list in the General section of the Settings window for the main Component node.
Visualizing Linearized Elements
The variable linearizedelem is 1 in elements that are linearized and 0 elsewhere. You can use this variable to identify mesh elements with linearized elements. For example, use linearizedelem as the expression in a plot.
Modifying the Geometry or Mesh
To reduce problems with badly shaped elements or geometry approximations you can try any of the following:
Select the Avoid inverted curved elements check box in the Free Tetrahedral node’s Settings window under Element Quality Optimization.
Visualizing Inverted Mesh Elements
If the method used to avoid inverted elements fails, it may happen that inverted elements are present in the mesh you solve on, as described in the first section. You can visualize inverted mesh elements using the built-in reldetjacmin variable, which is the minimum (over each element) of the determinant of the Jacobian matrix for the mapping from the straight mesh element to the possibly curved mesh element used by the solver. A minimum value less than zero for an element means that the element is wrapped inside-out; that is, it is an inverted mesh element.
A typical visualization uses reldetjacmin as the quantity to plot as a volume plot. To display only the inverted elements, add a Filter subnode using the logical expression reldetjacmin<0 to include only the inverted elements or reldetjacmin<0.2 to include also highly curved elements.
If you experience inverted mesh elements while meshing or while importing meshes, you usually do not have a solution. In such cases, create a Mesh Plot with the logical expression qual<eps instead because reldetjacmin is not available. The plot then shows both the inverted mesh elements, for which the mesh quality is negative, and the totally degenerated elements, for which the mesh quality is zero or very close to zero.
If you use reldetjacmin, the plot shows the quality of higher-order elements (if any), while qual always uses linear elements.
Adaptive Mesh Refinement (attribute node)