It was also essential that the client applicants maintain their scope and data integrity.
Therefore the coupler was designed to interface independent applications.
This was in part possible via the design of the coupler which is discussed below, but also by making use of the Multiple Program Multiple Data capabilities of MPI.
For example, the following call can run both app1.exe and app2.exe separately,
» mpirun -n nproc1 ./app1.exe : -n nproc2 ./app2.exe
The applications can therefore retain their independent instructions, data and scope for independent operation.
However, the same command can be used to run the two applications conjointly, if they include calls to the coupler library.
Any exchange of data is via the coupler interface.
Since the coupler is a set of library routines, any access to these routines is via functional calls within the client applications.
In order to ensure minimal change to the client application, these calls can all be grouped in a "socket", or "portal" module within the clients.
The terminology is intended to describe how the client is plugged into the coupler via the socket module.