Paulin Research Group develops and distributes a line of software products used around the world to perform finite element analysis, a process used by engineers to determine the various stresses that a system will be subjected to under specified operating parameters. This is used for such various tasks such as failure analysis, determining design parameters requirement, and insuring compliance to safety standards.
The process flow, shown below, begins with the user specifying the object geometry and material specifications, using a variety of design tools and templates provided. The operating parameters are then specified, including such factors as temperature, pressure, and external forces applied. Finite element analysis is then performed, computing the stresses that the object will be subjected to over time and repetitive operation under a number of scenarios. The end results are provided in report form, along with graphical representations of stress values overlaid on the mesh geometry.
Prior to our involvement, results were rendered as static images. We were contracted to develop an interactive viewer, utilizing DirectX to provide real-time rendering and manipulation of the results.
ViewFE was developed with Visual C++, using an MFC SDI framework. The program may be launched from any of the PRG applications to automatically load a mesh and associated data for display. ViewFE may also be used as a stand-alone application to load results from previous analysis runs, and may be distributed freely by PRG customers to allow viewing of analysis results by 3rd parties.
Integration with Existing Products
The viewer had to interface with three existing products developed and distributed by the customer:
The viewer was to be a bundled application that would utilize data provided by any of these packages. Integration with multiple products already in the field required us to work closely with the customer to design a common data format.
DirectX 7/8 Based Rendering
To provide high performance rendering, DirectX 7 was used in the initial release of ViewFE. As additional features were added, the availability of DirectX 8 offered various features that would be beneficial to the ViewFE application.
However, given the diverse customer base running the product, it was apparent that not all customers could use a DirectX 8 based application. Many users, particularly those using the viewer on portable computers, would not have 3D acceleration available that would support DirectX 8, and the new API no longer supported software acceleration. There was also concerns about possible compatibility issues on system that were running the current version of ViewFE. There was no desire to have to maintain two separate versions of the viewer to ensure customers could use the viewer.
The solution was to separate the application code from API dependencies, moving API dependent code into separate DLLs. At startup the application detects the availability of the DirectX runtime and compatible hardware, and selects the appropriate DLL to load. If DirectX 8 is selected and for some reason fails to initialize correctly, the program automatically falls back to DirectX 7.
This provides seamless support for a wide variety of configurations. It also allows for future addition of support for other rendering APIs by constructing additional libraries, without having to change the application code.
Visitors Since 1/1/2000: