Department of Mechanics: Seminar: Abstract Niekamp

From Wiki @ Department of mechanics
Jump to navigation Jump to search

Rainer Niekamp, Institute of Scientific Computing, Technische Universität Braunschweig

Non-Intrusive Coupling of Simulations based on Software-Component-Technique

Nowadays there is a large number of projects concerning the coupling of different simulation codes. This presentation describes a framework for the coupling of simulations like fluid-structure interaction or micro-macro formulations as well as for the coupling of simulations with Monte Carlo and Optimisation methods. This framework consists of a C++ component template library (CTL) supporting remote method calls using various protocols like pvm, mpi or tcp/ip together with an interface definition for simulations-codes serving as an standartisation for such codes. The CTL is an implementation of the component technology based on C++ generic template programing. Similar to CORBA it can be used to realize distributed component-based software systems, where a component is a piece of software which consists of a well defined interface and an implementation. Interface and implementation are connected throw a communication channel. In this way the usage of a component is independend of their location, meaning that the component is network transparent.

One important feature of the CTL is their lightweight design and their seamless integration into the C++ language. It is a template library and in its simplest configuration it depends on nothing than the standard libraries which are available on nearly all Unix-like plattforms. Like the standard template library (STL) --- which is a part of the C++ language --- provides generic container datatypes, the CTL provides methods to realize distributed systems.

The CTL can be used for fast prototyping of distributed software systems. But its main focus is to transform existing C/C++ or FORTRAN libraries to remote accessable software components. The idea behind the CTL is to provide a mechanism which makes the development of distributed systems as easy as possible, so that the differences between traditional monolithic programs and complex distributed software systems nearly vanish.