Skip to content
hotblack17 edited this page Apr 3, 2013 · 6 revisions

This page discusses the code design for ElVis 2.0.

Polynomial Representation


Evaluation of the polynomials can be a significant bottleneck in the visualization process, especially for higher-order fields. An open question is which polynomial representation is best suited for evaluation in OptiX and Cuda, and can we convert arbitrary polynomial bases to this representation with low numerical error?

Plugins


Since ElVis will handle all data representation internally, there is no longer a need for user-created plugins at ElVis runtime. Plugins will only be required for the model conversion utility.

Core


The core will be separated into two separate shared libraries.

Pre-Processing Core

The pre-processing core is responsible for requirements 1,3,4 and 5.

Support for requirement 5

Data will be provided to ElVis through the use of inheritance. ElVis defines a class structure of the most commonly used element types, and requires all extensions to provide concrete implementations for customization. In some cases (i.e., planar-faced, straight-sided elements), the default functionality in the classes we provide will be usable without additional customization from the user, beyond the requirement to create a subclass.

The pre-processing core will consist of the following class structure. All classes are abstract base classes. We require that all plugins provide the appropriate subclasses for their data.

IElement - abstract base class representing an arbitrary element.

  • Query number of vertices [virtual]
  • Point in element [virtual]
  • Query vertex value [virtual]

ITwoDElement - abstract base class that inherits from Element

  • Query number of edges [virtual]

ITriangle - abstract base class that inherits from TwoDElement.

  • Query number of edges [virtual, overriden]

ICurvedTriangle - abstract base class that inherits from TwoDElement.

  • Query number of edges [virtual, overriden]

IPlanarTriangle - abstract base class that inherits from TwoDElement.

  • Query number of edges [virtual, overriden]

Triangle - concrete class that inherits from IPlanarTriangle. Full implementation of planar, straight-edged triangles.

Quadrilateral - abstract base class that inherits from TwoDElement

  • Query number of edges [virtual, overriden]

ThreeDElement - abstract base class that inherits from Element.

Clone this wiki locally