Publications Details

Publications / Conference

Experiences in using C++ to develop a next generation strong shock wave physics code

Peery, James S.

The goals and time constraints of developing the next generation shock code, RHALE++, for the Computational Dynamics and Adaptive Structures Department at Sandia National Laboratories have forced the development team to closely examine their program development environment. After a thorough investigation of possible programming languages, the development team has switched from a FORTRAN programming environment to C++. This decision is based on the flexibility, strong type checking, and object-oriented features of the C++ programming language. RHALE++ is a three dimensional, multi-material, arbitrary Lagrangian Eulerian hydrocode. Currently, RHALE++ is being developed for von Neumann, vector, and MIMD/SIMD computer architectures. Using the object oriented features of C++ facilitates development on these different computer architectures since architecture dependences such as inter processor communication, can be hidden in base classes. However, the object oriented features of the language can create significant losses in efficiency and memory utilization. Techniques, such as reference counting, have been developed to address efficiency problems that are inherent in the language. Presently, there has been very little efficiency loss realized on SUN scalar and nCUBE massively parallel computers; however, although some vectorization has been accomplished on CRAY systems, significant efficiency losses exist. This paper presents the current status of using C++ as the development language for RHALE++ and the efficiency that has been realized on SUN, CRAY, and nCUBE systems.