The NIH/NIGMS
Center for Integrative Biomedical Computing

cleaver
Tetrahedral Mesh Generation

Cleaver is a multi material tetrahedral meshing API and application.

download-button-on
Previous Versions

Overview
Specifications
User Documentation
Support
3DSlicer Extension

Overview

Cleaver - A MultiMaterial Tetrahedral Meshing Library and Application

The Cleaver Library is based on the 'Lattice Cleaving' algorithm:
Bronson J., Levine, J., Whitaker R., "Lattice Cleaving: Conforming Tetrahedral Meshes of Multimaterial Domains with Bounded Quality". Proceedings of the 21st International Meshing Roundtable (San Jose, CA, Oct 7-10, 2012)

The method is theoretically guaranteed to produce valid meshes with bounded dihedral angles, while still conforming to multimaterial material surfaces. Empirically these bounds have been shown to be significant.

 

Cleaver Acknowledgement
Cleaver License

 

Acknowledgement: Cleaver is an Open Source software project that is principally funded through the SCI Institute's NIH/NIGMS CIBC Center. Please use the following acknowledgment and send us references to any publications, presentations, or successful funding applications that make use of NIH/NIGMS CIBC software or data sets.

"This project was supported by the National Institute of General Medical Sciences of the National Institutes of Health under grant numbers P41 GM103545 and R24 GM136986.”

 Cleaver Citation: [bibtex citation] [Endnote citation]


 

MIT License

Copyright (C) 2012, Jonathan Bronson,
Scientific Computing & Imaging Institute, University of Utah

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files ( the "Software" ), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Specifications

Supported Platforms

The Cleaver Library is written in C++. It is designed to be cross-platform and has been successfully compiled on Windows 7, Mac OSx, and Linux. Binary forms will be available on the Cleaver project page.



User Documentation

The following tabs contain information designed for users interested in learning more about how to use Cleaver.

 

Building Cleaver
Usage
Comand Line

cmake [src]
make

Alternatively, if you do not wish to build the command line program (which requires the Teem Library) use ccmake to disable it.

 

What Can Cleaver Do?

Cleaver generates conforming tetrahedral meshes for multimaterial or multiphase volumetric data. Both geometric accuracy and element quality are bounded. The method is a stencil-based approach, and relies on an octree structure to provide a coarse level of grading in regions of homogeneity.

 

What does Cleaver use as input?

The cleaving algorithm works by utilizing indicator functions. These functions indicate the strength or relative presence of a particular material. At each point, only the material with the largest indicator value is considered present. In practice, inside-outside and distance functions are most common.

 

What is the input format?

The cleaver library takes as input an instance of the Cleaver::Volume class. The Volume is a collection of Cleaver::ScalarField's, along with a sampling rate. The Cleaver::ScalarField class is an abstract class, that can be extended by users to create arbitrary inputs. We provide the FloatField class for loading 3D arrays of floating point data. The Cleaver command-line tool also offers convenience functions for loading the teem NRRD image format into the FloatField format.

 

What is the output format?

The Cleaver Library returns a Cleaver::TetMesh object. This object supports direct output to file in several formats:

 

  1. TetGen: .node, .ele
  2. SCIRun: .pts, .elem, .txt
  3. Matlab: .mat

 

Running ./cleaver -h

usage: cleaver -p -as [val] -al [val]  -i [input1.nrrd input2.nrrd ...]  -o [output]  -f [format]
         -p      use padding         default=no
         -as    alpha short           default=0.357
         -al     alpha long            default=0.203
         -i       input filenames    minimimum=1
         -o     output filename    default=output
         -f      output format         default=tetgen
         -h     help

   Valid Parameters:
                 alpha short                  0.0 to 1.0
                 alpha long                   0.0 to 1.0
                 tetmesh formats         tetgen, scirun, matlab

Examples:
cleaver -h                                                                               print help guide
cleaver -i mat1.nrrd mat2.nrrd                                           basic use case
cleaver -p -i mat1.nrrd mat2.nrrd                                      pad boundary
cleaver -i mat1.nrrd mat2.nrrd -o mesh                          specify output name
cleaver -i mat1.nrrd mat2.nrrd -o mesh -f scirun           specify output format


Support

All of our mailing lists are public and searchable through Google. For best search results, include the "cleaver" or "sympa" in your search terms.

Alternatively, you can browse the cleaver mailing list archive.

Some geometric operations in this code do not yet use proper predicates, and are therefore not guaranteed safe for all possible input fields. This is something we will work towards fixing in later releases. In the mean time, if you have data that you unable to mesh with Cleaver, contact us, and we will work with you to get it running.

Cleaver Mailing List
Bugs/Feature Requests

Joining the Cleaver Mailing List

  1. Compose an email to This email address is being protected from spambots. You need JavaScript enabled to view it. with the following in the body of message: subscribe cleaver
  2. Nothing needed in the Subject line. Just send.
  3. You will receive a response from the list manager requesting confirmation. Just send back a reply message to confirm your subscription (no added text needed).
  4. Finally, you will receive a welcome message confirming that you have been added to the mailing list.

Unsubscribing

  1. Compose an email to This email address is being protected from spambots. You need JavaScript enabled to view it. with the following in the body of message: unsubscribe cleaver
  2. Nothing needed in the Subject line. Just send.
  3. You will receive a response from the list manager notifying you that the command has succeeded and you have been removed from the list.

 

Please send all bug reports and feature requests to the Cleaver mailing list: This email address is being protected from spambots. You need JavaScript enabled to view it.

 

3DSlicer Extension

800px-SlicerFrogOutputSlicer3D provides a graphical front-end interface for executing Cleaver. After Cleaver completes, Slicer can then read the VTK output into its scene automatically, or manually.

Documentation is located on the 3DSlicer wiki.