Proceedings of the Workshop on Parallel/High-Performance Object-Oriented Scientific Computing (POOSC'99)

root-class SimulationArea (see g. 3). A concrete simulation area will inherit the basic communication methods from this parent class, and change the implementation to its own needs. Using this pattern, you can write simulation programs with compatible simulation sub-domains without the need to rewrite the communication between the di erent simulation-domains. To parallelize a simulation build usforall g in children g.comunicate(); Client list of neighbours Simulation Area Simulation Area Concrete del(SimulationArea) communicate() add(SimulationArea) del(SimulationArea) communicate() add(SimulationArea) Fig. 3. Design Pattern used for Domain-Decomposition ing the Domain-Decomposition, we make the SimulationArea root-class inherit from a class similar to a Thread-class, so that all simulation-area objects become active objects. (Active in the sense, that these objects run concurrently). Iterator Pattern to step through neighbor-lists The iterator pattern is used to step through dynamic lists of neighbor simulation areas. This pattern is also available in C++ STL. Strategy Pattern to select a numerical algorithm The core functionality of a simulation of physical processes always are some numerical algorithms. The selection of algorithms is stored in libraries for procedural languages like C or FORTRAN. To keep the advantage of a ne-grained selection of di erent algorithms we choose a strategy pattern for our numerical algorithms. A strategy always works on a speci c context. As an example we use the coordinate transformation of a vector (see g. 4). Here the vector is the context of the strategy, and the di erent transformations are the concrete strategies, that have to be implemented for a simulation. The basic functionality is de ned in the root-class for the coordinate transformation strategy. In this example the root-class contains the methods toGeneric and toSpecial. These methods transform the coordinates of a vector between a special coordinate system and a (pre-de ned) generic coordinate system. toSpecial() toGeneric() toSpecial() toGeneric() toSpecial() toGeneric() toSpecial() toGeneric() Vector Coordinate Transf. strategy Cylinder Spherical Other ... Fig. 4. Strategy Design Pattern for Coordinate Transformations Facade Pattern to handle input parameters To handle user input parameters independent of the objects used in the simulation, we use the facade pattern. A facade object collects all input, and marshals the parameters to the correct object for this simulation. Factory Pattern to create the particles A Factory pattern can be used to create the particles for the simulation. Communicating a single particle will not be e cient, therefore container classes for particles are necessary. Particles created using the ParticleFactory can now be collected, and put into container classes (see g. 5). ParticleFactory GetParticle(key)

[1]  Miron Livny,et al.  Condor-a hunter of idle workstations , 1988, [1988] Proceedings. The 8th International Conference on Distributed.

[2]  Sally McClean,et al.  CONTINUOUS-TIME MARKOV MODELS FOR GERIATRIC PATIENT BEHAVIOUR , 1997 .

[3]  Michael R. Genesereth,et al.  An agent-based framework for interoperability , 1997 .

[4]  David Thomas,et al.  The Art in Computer Programming , 2001 .

[5]  Tim Brecht,et al.  ParaWeb: towards world-wide supercomputing , 1996, EW 7.

[6]  Ian T. Foster,et al.  Globus: a Metacomputing Infrastructure Toolkit , 1997, Int. J. High Perform. Comput. Appl..

[7]  Peter R. Cappello,et al.  Javelin: Internet-based Parallel Computing using Java , 1997, Concurr. Pract. Exp..

[8]  Steve Plimpton,et al.  Fast parallel algorithms for short-range molecular dynamics , 1993 .

[9]  L. Lucy A numerical approach to the testing of the fission hypothesis. , 1977 .

[10]  Andrew S. Grimshaw,et al.  The Legion vision of a worldwide virtual computer , 1997, Commun. ACM.

[11]  David E. Culler,et al.  WebOS: operating system services for wide area applications , 1998, Proceedings. The Seventh International Symposium on High Performance Distributed Computing (Cat. No.98TB100244).

[12]  Ladislau Bölöni,et al.  Structural Biology Metaphors Applied to the Design of a Distributed Object System , 1999, IPPS/SPDP Workshops.

[13]  Noam Nisan,et al.  The popcorn project: distributed computation over the internet in java , 1997 .

[14]  Sheldon M. Ross,et al.  A Course in Simulation , 1990 .

[15]  Timothy W. Finin,et al.  KQML as an agent communication language , 1994, CIKM '94.

[16]  John Dubinski A parallel tree code , 1996 .

[17]  Eric A. Brewer,et al.  ATLAS: an infrastructure for global computing , 1996, EW 7.

[18]  Ladislau Bölöni,et al.  An object-oriented framework for building collaborative network agents , 2000 .

[19]  Arch D. Robison,et al.  C++ gets faster for scientific computing , 1996 .

[20]  Jörg Stadler,et al.  IMD: A Software Package for Molecular Dynamics Studies on Parallel Computers , 1997 .

[21]  Arthur C. Graesser,et al.  Is it an Agent, or Just a Program?: A Taxonomy for Autonomous Agents , 1996, ATAL.

[22]  Ami Marowka,et al.  The GRID: Blueprint for a New Computing Infrastructure , 2000, Parallel Distributed Comput. Pract..

[23]  Ladislau Bölöni,et al.  An aspect-oriented approach to distributed object security , 1999, Proceedings IEEE International Symposium on Computers and Communications (Cat. No.PR00250).

[24]  Ladislau Bölöni,et al.  The Design of Software Agents For a Network of PDE Solvers , 1999 .

[25]  Ladislau Bölöni,et al.  A component-based architecture for problem solving environments , 2000 .

[26]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .