An Architecture for the Automatic Development of High Performance Multi-Physics Simulators

C. G. Santos, Maria Anaïs Barbosa, Maria Bezerra · 2008

MPhyScas (Multi-Physics Multi-Scale Solver Environment) is an environment dedicated to the automatic development of simulators based on the finite element method. The term multi-physics can be defined as a qualifier for a set of interacting phenomena, in space and time. These phenomena are usually of different natures and may be defined in different scales of behavior (macro and micro mechanical behavior of materials). A multi-physics system is also called a system of coupled phenomena. If two phenomena are coupled, it means that a part of one phenomenon’s data depends on information from other phenomenon. Such a dependence may occur in any geometric part, where both phenomena are defined. Multi-physics and multi-scale problems are difficult to simulate and the building of simulators for them tend to be very demanding in terms of time spent in the programming of the code. The main reason is the lack of reusability. A detailed discussion can be found in [2], [3]. Usually, simulators based on the finite element method can be cast in an architecture of layers. In the top layer global iterative loops (for time stepping, model adaptation and articulation of several blocks of solution algorithms) can be found. This corresponds to the overall scenery of the simulation. The second layer contains what is called the solution algorithms. Each solution algorithm dictates the way linear systems are built and solved. It also defines the type of all operations involving matrices, vectors and scalars, and the moment when they have to be performed. The third layer contains the solvers for linear systems and all the machinery for operating with matrices and vectors. This layer is the place where all global matrices, vectors and scalars are located. The last layer is the phenomenon layer, which is responsible for computing local matrices and vectors at the finite element level and assembling them into global data structures. The definition of those layers is important in the sense of software modularization. But it does not indicate neither how entities belonging to different layers interact nor what data they share or depend upon. That is certainly very important for the definition of abstractions, which could standardize the way those layers behave and interact. The architecture of MPhyScas presents a language of

Read the paper · More papers on PaperTik