SOLIDWORKS Simulation has two main ways of mapping a Finite Element mesh onto your CAD geometry – the “Standard” mesher and the “Curvature Based” mesher. In training classes and in prior CAPUniversity webinars and presentations, I’ve always advised that the Curvature mesher is best for single parts, especially parts with thin walls and lots of fillets and rounds of various sizes. The Standard mesher is best for assemblies, especially for large assemblies where there is a lot of bonded contact.
This is (still) broadly true. But it is also true that the older, standard mesher has some reliability advantages, when it comes to dealing with model singularities. In this article I’m going to dive a little deeper into the Curvature Based mesher, to describe which particular model defects are the most problematic for it, how you detect those flaws, and how to overcome them. Although I will start out by comparing and contrasting the Curvature mesher to the Standard mesher, my goal is to stick with the choice of Curvature mesher, and fight through any flaws in the CAD model to make it work.
The Standard Mesh Advantage: Node Merging
The Standard mesher is better than the Curvature mesher when it comes to eliminating extraneous topology. This is because the Standard mesher performs Node Merging to simplify the mesh. The input dialogues for both meshers contain settings for the Upper Bound and Lower Bound on element size, but they do not work quite the same. The image below shows a very zoomed-in detail of a Fillet/Round pair. Just by sheer luck of how the top-faces and side-faces of this raised feature meet, there is enough room between the fillets to allow a narrow, flat sliver face, .13mm wide, on the left side, but the fillets meet smoothly with no sliver, on the right side.
Notice in the dialogue above, there is a field for the maximum element size (4.5mm), and the minimum element size, (currently set to .25mm). Please note that this lower bound, is NOT an absolute! The next setting below it, the number of elements to inscribe within a circular feature, can override the minimum element size. And also, if there are face/edge topology that are smaller than this size, to begin with, then the elements CAN be smaller than this setting. So, the “sliver” patch, .13mm wide, will get nodes distributed all around its perimeter – no closer on a side, than the .25mm value – but across the narrow width of the face, the elements will have sides that are at least .13mm long, (and maybe a bit more, because of zig-zag).
The resulting mesh for the settings above, are shown below. Please note that the edges of the original faces can clearly still be seen in the resulting mesh.
The next image below is the Create Mesh dialogue, now using the Standard Mesh settings. The important difference is that the lower size (in blue) is now called a “tolerance”, and it is actually the threshold for Node Merging. The system will still begin by distributing nodes along the perimeter of each face. But then, any two or more nodes that are closer than this tolerance, will be merged. One of them (selected randomly) will be the survivor. The other node(s) will disappear, and their element line-segments will be re-mapped to the survivor node.
The next image shows the mesh that resulted from the same lower-bound setting, as the Curvature Mesh on the prior page. Note that there is NO surviving element from the small triangular face, (shaded orange, above).
This node-merging feature is one of the two, key differences between the two meshers. It is undesirable if it results in large numbers of dagger-shaped, high-aspect elements. It’s desirable, however, if the CAD geometry is riddled with lots of tiny faces/edges that are simply unimportant to the analysis, and it would take too long to comb all this extraneous topology out from the CAD model. The real advantage of this merging is when meshing an assembly; – you’ll get more efficient, intimate bonding between adjacent parts in an assembly.
Slivers, and Ledges, and Gaps – Oh My!
There is no absolute standard for what makes a CAD model good, you can only say whether it is good enough for a particular purpose. The Silver patches discussed above, arise quite frequently as a matter of bad luck; they are especially common when two different-radii fillets meet, or cross one over another. Sliver patches also abound when filleting walls on variable draft angles. So they are not flaws, per se. They are less likely to fail the Curvature-Based mesher, outright. But what can happen is that you mesh successfully, start to run the solver, and then a warning appears that you have very-high aspect-ratio elements, (sometimes 100:1 or 200:1, or more). Any element that is skinnier than 20:1 is going to be inaccurate, and can even cause solver instability.
It is seldom productive to try to model such that you avoid creating these slivers. Although there are CAD tricks for melting them together, after-the-fact. What you usually do, is place a few local mesh controls on one or more neighboring faces (or edges). Set the lower-bound mesh size small enough that the sliver faces get broken up in their long direction, so that the sliver mesh-aspect falls below the 20:1 acid test. If you get the model to mesh, and then solve, and there are still elements with aspect ratios of 50 to 100 or 150. That’s not really fatal. As long as you do NOT believe the stress level reported by such elements, or by any of their immediate neighbors, you can take the rest of the results.
Gaps And Ledges
All CAD geometry (no matter the software vendor) is created subject to accuracy tolerances. Faces of your solid that are presented to you as connected, seldom really are! Instead, their edges are ‘close enough’ to each other, to be considered as connected, to within the tolerances of the particular CAD system.
The problem with using these tolerances is when:
- The model contains imported faces from some other CAD system, so the accuracy of adjoining faces might not agree with the SOLIDWORKS defaults
- Sliver patches may exist that are so thin, that their neighbors on opposite sides, are close enough that they could be considered connected with each other, stepping right over (and orphaning) the sliver patch.
Models can also contain extra, residual faces that arise from hard edges, usually where the user had trouble getting two or more features to join smoothly. Any mismatch between the features, can result in these extra sliver faces. Mismatch can be caused by innocuous mistakes. Dimensioning a fillet to be .1875”, and an the opposing feature, rounding this to dimension .188”, a ledge of .0005”, this mis-match may seem unimportant to you or I, but the CAD system does NOT know how to ignore anything, so that step gets represented in additional faces. Those faces frequently have Sliver aspect ratio, and so again, even though they are largely irrelevant to the FEA study, you end up spending time to slather custom mesh refinements on and around them, to keep from developing sliver elements.
Consider the model pictured below – we are zoomed-up on an area where three straps join in a Y-shape. Because there are actually compound angles-of-incidence here in all 3 planes, the hard-edged intersection line of the three straps, does not fillet cleanly all the way around. Partly this is because of some protruding edges, and partly because the fillet sense flips between convex and concave, in several places.
But the two areas where the faces seem to not meet at all (yellow call-outs) – it is because, they do not! As long as they are within the CAD system’s “Patch Junction Tolerance”, of each other, then this will usually not cause a problem in the CAD system. But it CAN cause a sudden curl or twist in the FEA mesh elements. The mesh algorithm will start by distributing points along the solid model’s Edges. But, we now know, that at the junction between any two faces, there are actually two edges there, and they can be a little different! Which edge does it use to create the mesh nodes?
The simplest, truest answer is, that it is effectively random. It might create a mesh triangle on fillet “F”, starting with a point on the high side of “A”, then going to a point over on “B”, then it might take the third point, from the low region of “A”. The end result is that the triangular face of an element, can have a new kind of flaw: it can curl, or twist.
The next image, below, shows how badly curled an element can get, when there is a ledge in the model – or simply, a gap caused by two edges which miss each other, shear-ways. The triangular element face shades as if there are TWO triangles there – the left side, light grey, the right side, dark gray. But, that is all one element. It shades with a hard shadow-line down the center, because the graphics card is confused by the curvature. As it curves up and goes over the top of the Strap, it twists to the right. At the 3 corner vertices, the element may seem all right, but in the middle of it, the sense of “up” and “down” reverses – this element would cause all kinds of havoc if it were included in a Contact check, for example.
The prescription for fixing such a meshing problem is not going to be found in the MESH dialog. You have to go back into the CAD commands, and CUT away the ugly areas, and then fill-in with something smoother, and usually, with faces that are bigger. There are something like 14 problem areas around the junction of the three straps I’ve used in this example. Fixing all 14 faces/edges is just not going to be productive. In the sequence of pictures below, I show how I’ve isolated the bad junction, CUT away the unfortunate topology, and then replaced the whole transition area with a single LOFT (or, the Boundary Solid command works for this, too). Since the only reason you need this bigger, smoother transition is to support an FEA mesh, you don’t even have to worry about making it exactly tangent, or to match curvature, etc.
The Achilles’ Heel: Singular Faces
There is one situation that the Curvature-based mesher is never going to handle well. That is when a three-sided face has a varying radius of curvature that vanishes down to zero radius at one corner. We call this corner (and the entire face) “singular” because the computer cannot tell up from down at this corner – mathematically, the face is still four-sided, but the singular corner represents one edge that has collapsed to a point.
Such a face is not intrinsically bad to all CAD systems – but it IS unsuitable for many purposes. For example, you can’t program an NC-machining toolpath across such a face, without risk of getting a head-crash. Such a face is acid for the Curvature mesher, too, because of the over-ride setting, that wants to place (by default) 8 nodes inscribed in any (360) circular region. If this singular face is a 90-degree fillet, then the system will try to put 3 nodes, and 2 elements, on the collapsed edge. Even if it does manage to place the points on the surface, then the placement of the fourth point of the tetrahedral volume element, could be out in space instead of inside the part.
Fortunately, these faces are easy to find. Use the command; TOOLS – EVALUATE – CHECK, and turn on the check-box for minimum Radius of Curvature. The image below shows a 3-sided face, whose neighboring faces and edges look perfectly reasonable – and yet this one face, fails the Curvature mesher. The CHECK dialog reveals that one of the corners has a radius of .000 000 01 meters, (1/100 of a micron), and that is close enough to zero to cause a singularity problem. The flaw is mathematical, not topological.
I frequently use the command TOOLS – SKETCH TOOLS – FACE CURVES, not to create new geometry, but just as a diagnostic – in the next image, I’ve asked it to display 7 iso-curves on the face in both the U- and V-direction, (the ‘warp and weft’ of our mathematical fabric), and you can see that the blue, ‘U’ iso-curves fan out from our suspect point. You only see 6 of the requested 7 ‘V’ iso-lines, (pink), because the 7th line has collapsed to a point.
This innocuous-looking face harbors an insidious flaw. We are fortunate, then that this sort of problem is as easy to fix, as it is to detect. There is a surfacing command called FILL, that is specifically for plugging holes in a model, and it does so by weaving faces in-place that are intrinsically 4-sided, but then trimmed to the final 3-sided fit – so the U/V weave is still nicely orthogonal (and so, no singular corners). If you sign up for the two-day Advanced Surfaces class, I can show you this and many more tricks that clean up your model topology, making for smaller files, faster rebuilds, fewer gaps and ledges, etc. But we don’t have time for that here. So I’ll close this article by showing you a short-cut command, one that actually contains the FILL command within it, as a macro-feature.
The image above shows the dialog for: INSERT – FACE – DELETE. It allows you to rip out the offending 3-sided face. If you use the option button Delete and Fill (and Tangent Fill), then you get a new face, visually indistinguishable from the old one – except, as shown in my final image – a nice rectangular U-V mesh, and so there will be no FEA singularities.
CAD models are like hot dogs. If you zoom down to a fine enough scale, you’re going to find some unfortunate ingredients. This is true for EVERY commercial CAD system, because we are all using discrete, binary thinking machines, to try to model a smooth, continuous reality. The real problems for CAD systems is when you transfer files from one to another, because the different programmers will have developed different strategies, and different tolerances, for judging ‘how good is good enough?”.
All three of the flaws discussed today can arise from normal SOLIDWORKS commands, (although there ARE some good strategies for avoiding them). The worst of the three flaws, a 3-sided Singular face, will always result from using the Constant-Radius Fillet command, on a concave fillet that rolls over sharp (convex) faces, if you try to auto-smooth those convexities using the “Round Corners” option. You don’t really need that option, ever. So, just don’t use it.
Most recently, the most common source of flaws are data that came in from, (or passed through), Pro-Engineer. Specifically, any faces/features that were added using the later, “Creo” versions. Data import from PTC was pretty good, for about 12 years, (since the 2000-i and 200-i2 versions). Then they tried to merge the old, parametric, feature-based modeling engine from Pro/ENGINEER, with the new, featureless, direct-edit datastructure they acquired from Creo.
The reason that Creo can modify anybody’s parts, not just PTC’s, is because they use a very, very crude level of tolerances for curve-connectivity and face/edge connectivity. That axe cuts both ways. Old-school Pro/ENGINEER used (much as SOLIDWORKS does), tolerances that allow you to craft models as if you were working under a microscope. Creo direct-edit commands, build faces and edges that will only look good, if you stand way back, and use a telescope. As more PTC customers upgrade from Wildfire to Creo, we are beginning to see a lot of models that have mixed tolerances. You can easily tell which parts of the model were legacy data, untouched topologically since creation in Wildfire or earlier. And which features were plastered-on using Creo commands. The Creo topology is riddled with gaps, ledges, and is warty, and ends up needing a lot of reconstruction, before you can machine the model, or 3D print, or run an FEA mesh on it.
Short-List Prescription For Each Of The Three Flaws Discussed
Sliver Patches – create local mesh controls on, or adjacent to the slivers, to allow smaller elements – try to get below 20:1 aspect.
Ledges and Gaps – Modify the model to eliminate the extraneous topology. Replace it with something bigger, and simpler. (Fallback – use the Standard Mesher).
Singular, Zero-Radius Patches – Remove them via Delete Face, and FILL to create a non-singular plug.