Issues with the current coupler: It should have been written in C. It should have more "safe mode" timeout options. For example poll for receiver ready before sending to catch deadlocks. Poll for receive and trap too many spins waiting for an event. There is only one coupler. Coupler has no concept of being "tiled" itself. A heirarchical structure of coupled "couplers" could be envisioned. Only one tile set per process can be registered. No real support for multi-threaded codes. Coupler itself is pure sequential The coupler only supports transfer of two-dimensional fields. Wrong name errors are not trapped clearly. Consistency between components is hard to validate. Coupled setup consists of a coupling layer plus one or more component models and communications API for talking between the coupling layer and the components. Coupling layer really provides two functions 1. An limited form of associative storage into which component models can export data and from which component models can import data. Data is exported and imported using a text string to identify it. Abstraction is similar to that of a simple file system. There are implicit synchronisation rules that need to be adhered to. Could be extended to allow file system access and/or http based communication. 2. Extrapolation and interpolation modules which are used to map data between component models having differing grids. Associative Storage Function ============================ Data is exported and imported using a text string to identify it. Abstraction is similar to that of a simple file system. In the current coupler implementation there are implicit synchronisation rules that need to be adhered to. A component model cannot asynchronously request data. Could be extended to allow file system access and/or http based communication. Extrapolation and interpolation =============================== This maps data between different representations.