Diffpack is an object-oriented software system for the numerical modeling and solution of partial differential equations. User applications cover a wide range of engineering areas and span from simple educational applications to major product development projects. Examples of customers in different segments include Bosch, Cambridge, Canon, CEA, Cornell, DaimlerChrysler, Furukawa, Intel, Mitsubishi, Natexis Banque, NASA, Nestlé, Shell, Siemens, Stanford, Statoil, Petrobras, Veritas, and XEROX, just to mentioned a few.
Diffpack is a problem-solving environment designed to provide maximum modeling flexibility for construction of highly customized FEM solvers. For users of FEM-applications like ANSYS, CFX, FLUENT, NASTRAN, LS-DYNA, etc. … Diffpack offers a complementary approach which can give significant benefits for solving problems with special model features.
There are more than 270 customers in more than 30 countries world-wide, including major industrial enterprises, consulting companies, software vendors, and research institutes employing Diffpack in such diverse areas as (amongst others) multi-phase flow in porous media, fuel cells, tribology, biomedical sciences, seismic and financial modeling.
Diffpack is organized as a collection of C++ libraries embedded in an environment of software engineering tools. It contains over 600 C++ classes ranging from basic data structures to major modules for e.g. mixed FEM, adaptive meshing, multi-level algorithms and parallel computing.
Diffpack is designed for the engineer with insight into the mathematics of his simulation problem. When programming in Diffpack, he can concentrate entirely on the essential numerics. The code of a basic FEM solver can fit on one or two sheets of paper and advanced multi-physics simulators can be constructed by linking simpler sub-simulators together.
Diffpack allows run time selection of all application entities, from simple numerical parameters to abstract quantities such as elements, matrices, solvers, etc. The user can set up advanced experiments, for example looping over different solvers or preconditioners, and he can automatically create reports containing e.g. numerical results, images and movies.
The user can make his own development fully interoperable with Diffpack. Existing code, for example in FORTRAN, can be made interoperable via a thin communication interface. This makes it easy to extend Diffpack into a tool tailored to the user’s particular application area. For preprocessing, Diffpack can interface several tools, such as ANSYS, ABAQUS, and NASTRAN. Postprocessing supports popolar programs like MATLAB, Gnuplot, IRIS Explorer, AVS and Vtk.
In Diffpack, low-level computing intensive operations are always performed in a FORTRAN-like style, while object-oriented principles are only used for higher-level administrative tasks. This ensures flexible APIs and computational efficiency competing with tailored FORTRAN codes.
The Diffpack learning process is supported by a comprehensive volume published by Springer-Verlag ([1]). This book introduces Diffpack programming via the style of typical FORTRAN or C codes, and then gradually introduces the object-oriented techniques characterizing more advanced Diffpack applications. The book contains over 50 application examples, which are all part of the product as delivered to customers. These examples form also a valuable resource as application templates for the user’s own development.