Home - LLNL-Collaboration/uiuc2016 GitHub Wiki

Goal

VisualCMI is a browser-based interactive mesh visualization tool that was developed to aid in visualizing mesh connectivity. Originally, the tool was intended to help developers better understand underlying mesh representations and aid them in debugging mesh connectivity problems while developing and refactoring mesh data structures. More recently, the tool has garnered from interest from other projects that wish to leverage it in order to more easily visualize and debug meshes as they're manipulated during physics simulations.

The goal of this effort is to extend this existing web tool to support the needs of its growing user base. In general, this means improving VisualCMI in a number of different ways (e.g. improving interactivity, visualization capabilities, generality, et cetera). For starters, we'd like to specifically focus on the following improvements:

  • Loading several types of meshes conforming to LLNL's Conduit Mesh Blueprint. The mesh blueprint describes the type of mesh (structured/unstructured), the types of its elements (e.g. triangle, quadrilateral, et cetera), the geometric positions of its vertices, and the connectivity of the elements.
  • Adding websocket support for streaming mesh data from the compute node where the simulation is taking place to a visualization node (e.g. the user's local computer).
  • Visualizing field data (ideally both scalar and vector data) defined over the mesh vertices and elements using clear and concise visualization techniques.

Agenda

The list below outlines the agenda for the project. Generally speaking, this list will capture all of the project deliverables currently satisfied and those that will be completed in the foreseeable future.

  • Review all of the basic project materials, which includes the following items:
    • Source code for the VisualCMI tool.
    • Sample 2D Quadrilateral Meshes
  • Generate a node.js project using the VisualCMI source code as a base and place the code in the LLNL-Collaboration/uiuc2016 repository.
  • Implement a few rudimentary test cases for the VisualCMI code to kickstart the project's testing suite.
  • Set up a Docker environment and install Conduit in this environment, following these instructions to do so.
  • Translate one of the sample meshes into the Conduit Blueprint format.
  • Extend VisualCMI to support reading basic Conduit Blueprint meshes with quadrilateral elements.
    • Create a test case to verify that the translated mesh can be properly visualized in VisualCMI.

Tasks

  • Mesh Viewer
    • Environment Setup
      • Obtain Mesh Viewer prototype js code (from Ming)
      • Install node.js
      • Setup a setup a repo with a package.json, webpack setup – etc that includes includes build and unit test targets
      • Setup an initial "smoke" unit test for the Mesh Viewer
    • Initial Mesh Viewer Development
      • Add support for rendering blueprint conforming meshes
      • Start with support unstructured quad mesh
      • Improve support for large data via typed arrays
      • Enhance code base to accept base64 encoded floating point and integer arrays
    • Advanced Mesh Viewer Enhancements
      • Develop a way to select and identify subsets of mesh topology (elements, nodes)
      • Full suport for Pseudocolor rendering, Categorical coloring, Text labels
      • Support scalar fields and vector fields (via glyphs)
  • Conduit Mesh Blueprint REST Server
    • Environment Setup
    • Blueprint Server Development
      • Setup a repo and basic cmake project for the server code
      • Review the Node Viewer C++ Implementation
      • Create an empty client side REST client and new C++ REST server with a REST command
      • Extend the server so that that takes a Node, and supports REST calls to verify if a given path in the node conforms to the mesh blueprint
      • Extend the server so that it supports REST calls for sending both json and base64 encoded arrays for mesh bp tress
  • Data
    • Obtain example mesh data from Conduit (tests/blueprint/t_blueprint_mesh_examples creates data in hdf5 format)
    • Obtain sim mesh data (from Ming and Kenny)
      • Write code to convert a simple 2d unstructured quad mesh from Ming or Kenny's data to conform to the mesh blueprint
  • Extended UI
  • Applications
    • Run ML Classification on subset of zones identified by a selection in the Mesh Viewer
    • (stretch) Demo using in situ renders from a mesh using Strawman and rendering a subset of the mesh with the Mesh 2D Viewer in the Extended UI