We have already created a number of use cases (GOTO use cases). However, these do not seem to be practically useful for the version 2 development at this stage. In order to simplify things a bit we looked at different categories of components that should be equally supported by version 2.
When Open version 1.* was developed focus was on linking models (type 6 above). All remaining types can be made compliant to OpenMI 1.* , but you need various workarounds to make it work. It is the intention with version 2 to solve this, so that each of the examples above are supported in a straightforward way.
The first full architecture for the OpenMI version 2 was completed at the meeting. We call this version the Trento version. There are still details that can and will be refined and potential pitfalls ahead. However, we think the Trento version will be close to fulfilling the needs for OpenMI version 2. The Trento version (the OpenMI.Standard interfaces) will remain unchanged until we have a full implementation of the SDK and the configuration editor and we have tested how it works for the simple test models. More details about the development plan are found below, in section 3.3. The Trento version is now committed to the trunk on source forge. Unit tests for the reduced version of the SDK are running.
As in version 1.4, exchange items play a significant role. A LinkableComponent has a list of input items and output items. Input items describe what can be accepted as input and output items describe what can be provided as output - same as for version 1.4. However, for version 2 exchange items also contain the actual values. Values are represented by a property of type IList. This list can contain any object as opposed to version 1.4 where the values always were either an array of doubles, or an array of vectors (i.e. value's x/y/z-components). For input items this list is of type Set, whereas the list in output items is of type Get. Allowing to set values is a major change as compared to version 1.4 and is introduced mainly to make it easier to work with component type 7 described in section 3.1. Values in output and input items are the actual values - no spatial, temporal or unit conversions. Getting values will not trigger any calculations.
The values in the list corresponds to elements in the elementSet and the times in the times property of the temporal information on the exchange item, gathered in the ITemporal interface. The order is first elements, then times. Getting values does not trigger any calculations.
If a component needs to get values not already available in the times property, or if the IsAvailable property of the output item is false, the component can invoke the Update method in the ILinkableComponent interface, which typically for models will make these progress with on time step.
In version 1.4 a GetValues call requested values to be represented at time, locations, and the unit defined by the accepting component. In version 2 this is achieved by requesting a decorator (IDecorator inherited from the IOutputItem). The decorator is obtained from the LinkableComponent by invoking the GetDecorator method. A decorator is an outputItem adapted to the inputItem which is passed as argument in the GetDecorator method. For decorators an argument property makes it possible to define further details about how the data is provided - e.g. interpolation methods.
We had a long discussion about changing the modified Julian time to the .Net time (e.g. DateTime). Especially, the definition of time span was difficult to agree upon. Should a time span be a start time and a period or should it be a start time and an end time. Anyway, since the definition of time does not influence the general concepts of version 2, it was decided for this iteration to keep the version 1.4 definition of time, and take this discussion again when we have a clear picture of how well the main concepts work.
Validate will be reviewed once we have implemented everything else, as if then it appears redundant we can quickly remove it, and if not, we will only know how it should now look haviing done the implementation work first.
In version 1.4 values were defined by IQuantity. In version 2 this is extended to two ways of defining values. Either the well known quantity or a new type IQuality. The Quality interface will be used for categorized data. E.g. High, medium, low.
Since the IArgument interface is used to define special behavior of the decorator a more sophisticated data type should be used. E.g. arguments can be used to select interpolation methods and and to set various parameters. We have investigated using the .Net type IDictionary. This will be further investigated and added to the standard in iteration 2 or 3.
The development plan outlined in the minutes of the OpenMI Association Technical Committee meeting no 19 section 3.3 was made more detailed (see below). All deadlines defined in the plan from meeting 19 are unchanged in the new plan.
It if foreseen that we during implementation will have to make some adjustments to the standard. In such cases suggestions to changes will be published on the wiki and we will decide for the standard change either by e-mail or preferably through Skype web conferences. No individuals are allowed to make change to the standard until there is a OATC decision to do so.
Over the recent years there have been many discussions about to which extend a Java implementation of GUI and SDK should be provided by the OA (or OATC). The meeting concluded that ideally we should support Java and C# equally, which means that the OATC should provide the Java SDK and a Java based configuration editor also. However, since we do not currently have the resources to both develop the OpenMI version 2 and to extend our tasks with respect to Java development, we realize that for version 1.4.* the OATC can only work with the C# versions. We appreciate the work done by Alterra in providing Java implementations.
It has been decided by the OAEC to move the contents of the www.openmi.org to a wiki hosted by Deltares. Jaco has already organized the fist steps, which involved setting up the new wiki space and installing various plug-ins. The task in now on Jan to move the content of the current wiki mirror to the new wiki space and subsequently work on the layout.
At the OATC meeting 19 we decided to review and update the how-to-pages on the wiki. The wiki pages were distributed between Adrian, Stef, and Jan. Jan has done his task, but pages assigned to Adrian and Stef still needs to be updated. A new deadline was set for this task: March 10th 2009. (see also source forge OpenMI tasks .
Original strategy: It could be reasonable to port the OpenMI compliant WLDelftWrapper to Linux (Deltares). Alternatively, Deltares could offer a Linux engine and the information how to access it from a Windows WLDelftWrapper.
New: Meanwhile fast multicore pc cpus made a linux WLDelftWrapper less important for the BAW, see 6.1.7.
The BAW test system is a linux workstation with one Intel Xeon Dual Core Processor and SLED 10. We use the 64 bit instead of the planned 32 bit mode, since our workstations as well as our hpc cluster work in 64bit mode.
7.1.8 Merging the OpenMI Linux version into the 1.4.1 branch on source forge
Adrian will create a list of thing to do with respect to merging the Linux version of the GUI into the 1.4 branch after the 1.4.1 is released. This list will be mailed to Peter, and Peter will subsequently take care that the Linux version is available on source forge.
The next OATC meeting is extended with one day. This will allow us to more time to actual implementation during the meeting. So new date for the meeting is Monday March 9th to Thursday March 12th 2009 (see also OATC Calendar).
b1e95dc632