CMB for advancing modeling and simulation

Modeling and simulation are critical components of scientific simulation, which is leveraged by fields as diverse as manufacturing, astrophysics, and climate science. Kitware has been developing the Computational Model Builder (CMB) to address some of the challenges in modeling and simulation, and will be presenting CMB at SC14 next week in New Orleans. To kick things off, we sat down with Bob O’Bara, an Assistant Director of Scientific Computing at Kitware and an expert on CMB to get an overview of the project.

You’re the PI on the CMB project. Could you tell us a little bit about it? How and why did you start the project?

We initially started CMB (the Computational Model Builder) back in 2007. The goal was to produce a set of tools to help create hydrological models and simulations for the U.S. Army Research and Development Center (ERDC), which was the main source of funding for the project. Since then, the project has also been funded by a Department of Energy ASCR SBIR Phase II award and the Department of Defense Productivity Enhancement, Technology Transfer, and Training (PETTT) Program. The focus of the project has also been expanded to provide customizable open-source tools for simulation modeling (not just hydrological simulations).

When getting started with CMB, did you leverage any existing software packages to jump-start your work?

In terms of software packages, CMB itself is based on top of ParaView’s library and, as a result, can support client/server and distributed architectures. It also makes use of several open-source libraries, including:

  • Boost
  • QT – for GUI development
  • GDAL for supporting Geospatial data
  • VXL for LiDAR processing
  • MOAB/MeshKit for meshing infrastructure
  • CGM/OpenCASCADE for solid modeling functionality
  • MoleQueue for job queue submission

What toolkits did the team then develop specifically for CMB?

In addition to leveraging several existing open-source projects, we developed two libraries. The first is the Simulation Modeling Toolkit (SMTK) for representing the three major resources within a simulation model:

  • Geometric Domain
  • Information (or attributes) associated with the geometry that completes the simulation model (such as boundary conditions and material properties)
  • Discrete Representations (i.e., meshes)

It is important to note that in the case of geometric models and meshes, SMTK interfaces with existing systems such as OpenCASCADE and MOAB, thereby not reinventing the wheel. But, at the same time, it provides an abstraction to the functionality so that other modeling kernels, such as ACIS and Parasolid, and other mesh databases, such as FMDB, can be integrated in SMTK without the application needing to be modified.

The other component we developed within CMB is the Remote Meshing/Modeling Utilities (ReMUs), which provides remote functionality to different modeling kernels and meshing systems. This allows users to access functionality that is not supported on their users’ platforms or to make use of HPC systems, which can better provide the computational resources.

On the CMB site, there are also several applications listed. Could you explain what some of those applications are?

In terms of our current CMB applications, the primary one is ModelBuilder, which allows a user to load a mesh, load in a simulation description, and export that information. These are the first steps in prepping a mesh for simulation. For loading in a mesh, we currently support VTK, MOAB, and Exodus formats. We will be extending these in the future. Once the mesh has been loaded, a BREP is automatically created from the mesh in addition to the side-set information that may also be present.

ModelBuilder for creating a mesh for simulation.

The next step is loading the simulation description and assigning the appropriate simulation information to the model’s geometry. This includes things such as boundary conditions and material properties. From there, ModelBuilder enables the user to export the simulation information to the format needed by his or her specific simulation environment (note that CMB puts no restrictions on the simulator and treats it as a black box).

The user will need to represent his or her simulation information using a straightforward XML format and write a Python Exporter script that converts the information into his or her simulation format.

The other CMB applications that we have developed include:

  • Reactor Geometry Generator (RGG), which is a tool for defining and meshing the geometry of a nuclear reactor’s core,
  • PointsBuilder for examining and modifying LiDAR data,
  • SceneBuilder, which is designed as a tool for combining different geometries that make up a scene or assembly, and
  • MeshViewer, which is a tool for examining the quality of a mesh and modifying parts of a mesh.

For people interested in getting started with CMB, where should they look for downloads or source code, or other resources?

The initial release of ModelBuilder is available on computationalmodelbuilder.org, and we currently support Windows, Macs, and Linux. In the next couple of months, we plan on creating a series of short webinars showing how to use different aspects of the tool as well as a series of How-To blogs. In the meantime, we have set up a mailing list for the community to ask questions and report bugs. In the very near future, we will also be providing online documentation on the simulation information file format, as well as on the example files and exporters.

RGG is also available from the CMB website and allows researchers to build reactor geometry. I they have access to the Cubit mesher, they will also be able to generate meshes of the geometry.

Anything else you’d like to share about CMB?

Something we’re really proud of is that, out of the box, CMB is problem “agnostic,” meaning that it can be applied to most numerical simulation workflows that are either model or mesh focused. This broadens the applicability of CMB and will help us grow the community. Areas we’re currently focused on include multi-scale simulations, nuclear energy, hydrology, computational fluid dynamics, and biomedical simulations. We expect to expand, but it’s an excellent starting point.

Also, we will be at SC14 next week in New Orleans, where we will be demoing RGG and ModelBuilder, so stop by the Kitware booth (#1354) to see CMB in action. Or, if you want to discuss something specific, feel free to contact me (bob.obara@kitware.com) and we can set up a meeting at the event.

Questions or comments are always welcome!