Development Services Case Study

Home | Up | Search | X-Zone News | Book Support | Links | Feedback | Smalltalk MT | The Scrapyard | FAQ | Technical Articles



Customer: Paulin Research Group
Customer Information: PRG develops a line of software products for Finite Element Analysis, a process used to model and predict stress factors in real world applications.
Service Provided: Created ViewFE, a Direct3D based tool for interactive review of 3D geometry and analysis results
Platform: Windows 95/98/ME/2000/XP using DirectX 7 or DirectX 8 APIs
Distribution: Distributed to several thousand customers worldwide, including a large international base.  Additional distribution of ViewFE by customers to third parties for review of customer data, as allowed under product license.

Product Overview

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.

Operating Parameters Defined

Finite Element Analysis Performed

Geometry Defined



Display and Analysis of Results

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. 

The viewer allows the user to manipulate objects through standard functions such as pan/rotate/zoom.  It also allows the user to perform additional processing of the object, such as clipping operations to create cutaway views.

Various functionality is also provided to facilitate interpretation of the results, including statistical distribution, high stress region detection, and selective display of areas meeting specified criteria.

Overstress of a system may lead to deformation of system components, the formation of which can be predicted by finite analysis.  ViewFE allows for the display of these conditions, including animation of the deformation process and the stresses involved.

Integration with Existing Products

The viewer had to interface with three existing products developed and distributed by the customer:


FE/Pipe: A complete modeling and finite element analysis package, allowing for the design and analysis of complex systems.


NozzlePro: A finite element analysis program specialized for the design of piping and vessel components, using versatile templates for the rapid design of common components.


BOS Fluids: Provides for analysis of fluid transients in piping systems.

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.

This site, created by DirectX MVP Robert Dunlop and aided by the work of other volunteers, provides a free on-line resource for DirectX programmers.

Special thanks to WWW.MVPS.ORG, for providing a permanent home for this site.

Visitors Since 1/1/2000: Hit Counter
Last updated: 07/26/05.