Scan-and-Solve for Rhino

Simulate Early, Simulate Often... In Rhino

# Meshfree simulation for meshes? (The story behind SnSMesh)

Meshfree simulation for meshes?

 The model of Michelangelo’s David is scanned and reconstructed as a mesh with 1,712,240 triangles (courtesy of Digital Michelangelo project at Stanford University.)

This may sound very confusing.  If meshing is bad, then why are we using meshes?  And if you already have a mesh, then why not use it for all computations, including simulation?  The answers to these questions are actually fairly straightforward, and the confusion has more to do with the language than with the concepts.  So let’s try to get this straight.

Meshing is a generic term that refers to a subdivisionof a shape into a collection of simple“cells” that are connected to each other without cracks, gaps, or overlaps.  The type of the cells depends on the shape.  For example, if the shape is a surface, then it is subdivided into a surface mesh, typically consisting of triangles or quadrilateral shapes.  The cells in the mesh can be curved or flat, but the flat “polygonal” cells are particularly convenient for many computations and this is why many surfaces are closely approximated by surface meshes.  See the surface of David on the right.  Many modeling tasks rely on such surface meshes as intermediate representations, for example, in reconstruction, rendering, shape matching, area computations, and so on.  A boundary of a 3D solid model can be readily approximated by a surface mesh, and every CAD system can produce such a mesh, which makes meshes a convenient medium for exchanging information between systems and applications – from STL format for 3D printing to VRML format for web viewing.

 Turbine blade model (mesh with 1,765,388 faces) from Large Geometric Archive, Georgia Institute of Technology

So if meshes are that great, why don’t we use them to perform structural simulation?  Actually, they are great, and we do use them to perform structural simulation.  But there are two problems.  First, to perform structural simulation on a 3D solid using classical Finite Element Analysis, we need a solid mesh:a volumetric subdivision of the solid into a union of 3D solid cells, usually tetrahedral (solid “triangles”) or hexahedral (solid “quadrilaterals”).  This is not the same animal as a surface mesh of the solid’s boundary, and is surprisingly difficult to create in many cases, because it needs to adapt faithfully to the solid’s boundary.  But wait, if our solid’s boundary is already a surface mesh, it should be easy to adapt: just fit a tetrahedron to every triangle, fill the interior and we are done, right?  Well, yes, but how many tetrahedra would we need?  If we take k to be a rough linear resolution, then the number of 2D surface cells is going to be proportional to k2=k*k, and the number of 3D solid cells to k3=k*k*k.  If there are, say, on the order of 1,000,000 cells in the 2D mesh boundary of a solid such as the turbine blade on the left,we would need roughly 1,000,000,000 3D cells in the finite element mesh that adapts to the boundary.  So the second problem is that you probably do not want to wait for that size mesh or simulation on your laptop.

This is where Scan&Solve for Meshes comes to the rescue.  It lets the surface meshes do what they do best: represent solid boundaries and perform geometric computations at whatever resolution is needed for the geometric accuracy.  Then, Scan&Solve creates a separate a solid mesh of space that does not conform to the surface mesh, to perform structural simulation at whatever resolution is needed for simulation accuracy.