Introduction to Meshing

Mesh Generation

What is Mesh Generation ?

Mesh (grid) generation is the practice of generating a polygonal (surface) or polyhedral (volume) mesh that approximates a geometric domain. A mesh — nodes and elements — is commonly associated with the finite element method. A grid — gridpoints and zones — is sometimes associated with Lagrangian finite volume or finite difference methods. Mesh and grid are used interchangeably in this document, since their geometry and connectivity are identical (only the solution method is different).

A 2D mesh is required in order to run a numerical simulation in UDEC or FLAC and a 3D mesh is required for 3DEC or FLAC3D. The input geometry to build the mesh can vary. Common sources are CAD, NURBS, STL, contour lines or a point cloud from scanned datasets.

Three-dimensional meshes created for finite difference and finite element methods typically consist of tetrahedrons, pyramids, prisms, or hexahedrons. Meshes are often categorized as: structured, unstructured, or hybrid meshes. Mesh quality is crucial for the stability, accuracy, and fast convergence of a numerical simulation. There are numerous measures of mesh or element quality, such as element aspect ratio, Jacobian, planarity of element faces, maximum and minimum angles at corners, etc.

Structured Meshes

Structured meshes are identified by regular connectivity. For example, a quadrilateral mesh in 2D is structured if each internal node is joined to 4 neighboring quadrilaterals, forming a regular array of elements. FLAC (2D) meshes are structured. In 3D, a structured hexahedral grid has each internal node connected to 8 elements. This type of mesh is highly space efficient because the neighborhood relationships are defined by storage arrangement. Structured meshes typically have well-shaped elements. Generating these elements for simple geometry is straightforward. BlockRanger, FLAC3D primitives, FLAC3D extruder, FLAC3D Building Blocks allow users to create meshes by connecting primitive shapes (hexahedrons, prism, tetrahedrons, etc.), with each shape containing a pre-defined, mapped, structured mesh. These primitive shapes can be used to build relatively complex grids. The main advantage of a structured grid over unstructured is typically better shaped elements (better accuracy in each element); the disadvantage is the time required to build geometrically complex models.

Examples of primitive shapes available in FLAC3D (from left to right “brick”, “cylinder”, “cshell”, and “radcylinder”).

Structured mesh in FLAC3D generated using the Extrusion tool. The lower right insert shows the decomposition of the volume into 20 simple solids as seen in the Extrusion pane.

Examples of primitive shapes available in 3DEC (from left to right “brick”, “drum”, and “tunnel”).

Unstructured Meshes

An unstructured grid is identified by irregular connectivity. It cannot be expressed easily as a two-dimensional or three-dimensional array in computer memory. This allows for any possible element type and arrangement. Compared to structured meshes, this type of mesh can be highly space inefficient since it relies on explicit storage of neighborhood relationships. It is very common for these meshes to employ triangles in 2D and tetrahedrons in 3D. However, some meshers allow you to build hex-dominant unstructured meshes that contain a majority of quadrilaterals (2D) or hexahedrons (3D) with far fewer numbers of other element types (triangles in 2D or tetrahedrons, prisms, pyramids in 3D). Automatic meshers usually output unstructured meshes. They have the advantage of generating meshes for any geometry, especially complex geometries, significantly faster than the operations required to build a similar model with a mapped mesher. Itasca just introduced a new powerful and easy-to-use automatic mesher called Griddle. Griddle is accessible from the Rhino CAD-system and can output both all-tetrahedral and hex-dominant meshes. The new version of FLAC3D (v 6.0) also offers some basic automeshing capabilitites that allow you to fill any closed-volume geometry with tetrahedrons.

FLAC3D unstructured mesh generated by Griddle in Rhino.

Octree Meshes

Consider an initial structured hexahedral grid. If we refine this grid by subdividing hexahedrons (a hex is subdivided into eight smaller hexahedrons) in areas of interest, a non-conformal mesh with smaller elements in some areas and larger elements in others would result. We continue subdividing the smaller hexahedrons in our areas of interest up to a certain level of refinement (e.g., a minimum element-edge length). If we then enforce the rule that an element’s neighbor must be either ½, 1, or 2 times its size (by subdividing further), we obtain a balanced octree mesh (like that shown below). With this method, the user initially creates a regular structured hexahedral grid independent of the geometry and then densifies this grid close to the features that need to be modeled and analyzed. The level of densification will depend on the precision that is required. The densification process consists of dividing a hexahedron into eight hexahedrons and repeating this until the desired zone size is achieved. The main advantage of the octree method is its ability to generate a mesh for complex geometries very quickly. The main disadvantage is that the resulting mesh does not conform to the geometry, but rather results in “stair step” boundaries that approximate the modeled features, which is not acceptable for all types of problems.

FLAC3D mesh using the built-in octree generation commands.
Hybrid Meshes

A hybrid mesh usually refers to a mesh that contains a combination of structured and unstructured meshes.

Conformal vs. Non-conformal Meshes

A non-technical definition of a conformal mesh is a mesh where each element, if it has a neighbor, completely shares a face with the neighbor (and by extension the edges and nodes of that face as well). An example of a non-conformal mesh includes a hexahedral element sharing one of its quadrilateral faces with two faces of adjoining tetrahedra (two triangle faces). Another example includes the case where two meshes might be laterally offset from each other, where some of the nodes and edges do not match at element boundaries (sometimes referred to as "hanging nodes"). FLAC3D is capable of handling both of these grid types. Non-conformal grids can be handled with FLAC3D interfaces or attach logic. 3DEC zones are always conformal within a block. By default, 3DEC grids are also conformal between blocks; however, there is a switch in the GENERATE command that will not enforce gridpoint matching between blocks (GEN EDGE ALT).

Both of the following meshes are comformal; the former is structured, the second is unstructured. The geometry for the following mesh was decomposed into hexahedral, tetrahedral, and prism solids with the Rhino CAD system and meshed with BlockRanger. The solid geometry creation in Rhino required about five hours of effort. The resulting mesh is an all-hexahedral structured mesh.

All-hexahedral structured mesh generated by BlockRanger for FLAC3D.

This next mesh was created with Griddle by using the bounding surfaces of tunnels and soil layers as input. Manual decomposition into simple primitive shapes was not required and hence model creation time was reduced to less than one hour. The resulting mesh is a hexahedral-dominant unstructured mesh.

Hexahedral dominant unstructured mesh generated by Griddle for FLAC3D.

What is a Good Mesh?

A good mesh is a mesh that allows you to solve your problem at the expected level of accuracy within the time available for the project. At the point where mesh size and complexity become computational factors, mesh generation is always a compromise between time and accuracy.

Mesh generation can be a very time-consuming process. Therefore judgement is needed to determine if a given mesh will perform well enough for a given model or if more effort is needed to improve its quality. Given the geometrical complexity of some models and the tools available for mesh creation, it is often necessary to accept meshes that deviate significantly from the known ideal shape.

The density of the mesh is required to be sufficiently high in order to capture details (e.g., displacements, stress) in areas of interest as well as properly mimic the physical mechanisms of the problem. On the same note, mesh density should not be so high that it captures unnecessary details that are not of interest to the project or beyond the precision of the field measurements. These burden the CPU and waste time.

How do I decide the type of mesh?

In terms of accuracy, a structured hexahedral mesh usually results in the best-shaped elements.

In terms of user efficiency, an unstructured mesh is usually easier to assemble, especially when dealing with complex geometries that include several features. An unstructured mesh can usually be built in a very limited time with an automatic mesher and is composed of less zones than an equivalent structured mesh, which also reduces the computational time of your model — the smaller number of zones in your model, the faster the simulation.

Which tools should I use to generate my mesh?

There are multiple ways to generate a mesh for a given geometry. As observed above, mesh generation is a compromise between efficiency and accuracy. In turn efficiency is dependent not only on the type of mesh but also on the user’s experience. Even if a new tool offers excellent new capabilities, one might prefer to use an existing tool where proficiency is established. Different people might choose different tools to mesh the same geometry in a given amount of time.

The following guidelines are general. They provide a broad overview of 3D meshing problems and solutions. Each user may decide to follow or deviate from them depending on experience, preference, and capability.

Which tools can I use to generate a mesh for FLAC3D or 3DEC?

Itasca offers a number of mesh generation tools. They may be divided into two categories.

Itasca offers several approaches in each category. Each approach has advantages and drawbacks that are outlined as follows.

The following tables summarize the different built-in (FLAC3D, 3DEC) or Rhino CAD-based (Griddle, BlockRanger) meshing tools for building structured and unstructured meshes. Building hybrid meshes (combinations of structured and unstructured meshes) simply requires a combination of these tools.

FLAC3D Meshing

3DEC Meshing

CAD-Based Meshing Capabilities

Built-in vs. CAD-based Meshing Capabilities


Abbasi, B., D. Russell, and R. Taghavi (2013). FLAC3D mesh and zone quality,” Continuum and Distinct Element Numerical Modeling in Geomechanics, Zhu, Detournay, Hart, and Nelson (eds.), Paper: 11-02, Itasca International Inc., Minneapolis, 12 pages, ISBN 978-0-9767577-3-3.

Wikipedia. "Mesh generation," accessed January 10, 2017. ""

Wikipedia. "Principles of grid generation," accessed January 10, 2017. ""

Wikipedia. "Types of mesh," accessed January 10, 2017. ""

Wikipedia. "Unstructured grid," accessed January 10, 2017. ""

Introduction to Meshing Updates

Latest News
  • Webinar: Using Rigid Blocks in PFC This webinar will provide a brief overview of PFC modeling using convex rigid blocks, including...
    Read More
  • Remote Training Planned for 2021 Itasca Consulting Group is planning remote, online training for early 2021....
    Read More
  • 3DEC 7 is officially released! Enhanced user interface with new automated block and zone generation tools, and new structural elements....
    Read More

Upcoming Events
2 Feb
This hands-on, virtual training course is 16 hours total, spread over four days in a 1.5-week period, and covers the analysis of embank... Read More