Scalable Interfaces for Geometry and Mesh based Applications


Posted by on Jun 23, 2014 in Meshkit

EBMesh : Embedded Boundary Mesh generation tool

EBMesh is an open source tool to generate Cartesian meshes for embedded boundary algorithms by using a ray-tracing technique.

 ebmesh_geom  ebmesh



Input and output from EBMesh tool. (a) STL 3D “statue” and “horse” models. (b) Cartesian mesh elements of 3D STL models.

By this tool, each mesh cell is distinguished as being inside, outside, or on the boundary of the input geometry, which is determined by firing rays parallel to x/y/z coordinates. The most expensive process of the embedded boundary mesh generation, an edge-geometry intersection test, is performed for the group of edges on a fired ray line together, which decreases the computational complexity of the whole method significantly. Produced boundary cells also have edge-cut fraction information and volume cut fraction information for each material.

EBMesh tool can directly import various CAD-based solid model formats and facet-based formats. Mesh results are used by exporting in a variety of file formats or by linking as library with query functions.

This tool achieves O(N2logNt) compared by O(N3logNt) from other methods (N : # of division of enclosing box sides, Nt : # of input surface facet triangles).

For more details, examples and results see paper:

Kim, H., and Tautges, T. J. (2010). EBMesh: An Embedded Boundary Layer Meshing Tool. In Proceedings of the 19th International Meshing Roundtable (pp.  227-242).

Building MeshKit for EBMesh

0. Prerequisites: If you’d like to read solid model based geometry files (iges, step, brep, sat, sab… etc.) MeshKit requires iGeom implementation, so you’ll need to build/install it first. See  CgmFromScratch for instructions. For iGeom build, you can choose a geometry engine such as OpenCASCADE and ACIS. OpenCASCADE is an opensource which can be downloaded from

If you just read facet based geometry files (hdf5, genesis, stl … etc.), you don’t need to build iGeom implementation above.

In addition, MeshKit EBMesh requires iMesh implementation for its mesh data structure, so you need to build/install it too. See  MoabFromScratch.


1. Grab the code straight from the repository using git: ‘git clone meshkit’


2. Run ‘autoreconf -fi’ in the main source directory. NOTE: MeshKit relies on the autotools (autoconf, libtool, automake) that come with most LINUX/UNIX distributions. If they’re not part of your OS, or you’re getting mysterious autotools errors, you might want to try downloading/building more recent versions of those packages then trying again. On windows, try running cmake (though this is only indirectly supported, meaning it may not be up to date).


3. In the top-level source directory, run the configure script, with the various options you want. To get a list of options, run ./configure –help. To use EBMesh, you will need “./configure –with-imesh=(iMesh build directory path) –with-igeom=(iGeom build directory path)”. You can remove “–with-igeom”, if you only use facet based geometry.


4. Go to sub directory “test/algs” from the MeshKit top-level source directory. Run “make test_ebmesh” to make a EBMesh tool test executable. You can execute “test_ebmesh” with several options.


If you have problems running ‘autoreconf -fi’ or suspect that the build system is broken do to improperly installed versions of the GNU autotools then see:AutoToolsIssues.


When using –with-cgm option and CGM is build using –with-cubit option you might encounter segmentation fault and *** glibc detected *** errors. See this link for details.

Copyright © 2014 SIGMA. All Rights Reserved.