See also: OATC Wiki Home

Date: April 21.4 - 23.4, 2009
Venue:DHI, Hørsholm, Agern Allé 5, Denmark

Participants:

Rob Knapen, Alterra, Wageningen UR (Rob.Knapen@wur.nl)
Standa Vanecek, DHI (s.vanecek@dhi.cz)
Adrian Harper, Wallingford Software (adrian.harper@wallingfordsoftware.com)
Stef Hummel, Deltares (stef.hummel@deltares.nl)
Unknown User (don), Deltares (gennadii.donchyts@deltares.nl)
Jesper Grooss, DHI (jgr@dhigroup.com)

Apologies:
Peter Schade, BAW (peter.schade@baw.de)
Andrea Antonello (andrea.antonello@hydrologis.eu)
Jan Gregersen, LicTek (gregersen@lictek.dk)
Unknown User (onnoroos), Alterra (Onno.Roosenschoon@wur.nl)
Unknown User (jnh@dhigroup.com) Johan Hartnack , DHI (jnh@dhigroup.com)

Documents:

http://www.openmi.org/
http://sourceforge.net/projects/openmi
wiki.openmi.org

Table of contents

Minutes

1. Minutes from previous OATC meeting

2. Maintenance and support

3. OpenMI 2.0 Issues

3.1 Road map to 2.0 alpha version

3.1.1 Changest to the standard

To be done by: Gena
Will be finished by: april 27 th

3.1.2 Backbone

To be done by: Stef and/or Rob B.
Will be finished by: may 8 th

3.1.3 Buffer

To be done by: Stef and/or Rob B.
Will be finished by: may 8 th

3.1.3 Time interpolation Decorator

To be done by: Stef and/or Rob B.
Will be finished by: may 15 th

3.1.4 GUI

To be done by: Adrian
Will be finished by: try before the next meeting (june 8 th).

3.1.5 SimpleRiver Model - running in GUI

To be done by: Adrian
Will be finished by: try before the next meeting (june 8 th).

3.1.6 OpenMI 2.0 wrapper around OpenMI 1.4 Components

To be done by: Stef and Jesper
Will be finished by: try before the next meeting (june 8 th).
Schedule:

3.2 Pending Remarks on Standard as result of Java review

This led to some remarks, of which a few were "java only", but some of them reflected on the Standard in general. Items to be addressed at the next meeting:

  1. Question: what does isAvailable() mean in case of multiple consumers. Do all consumers need to have the same time(s)?
    1. Leave in for now, review after more implementation, one suggestion of modification bool isAvailable(whosAsking);
    2. (warning) Will be discussed later during the meeting, Stef will show an example of using isAvailable(whosAsking);
  2. Question: Collection or Set instead of List for (In|Out)putExchangeItems in LC?
    1. It will be ICollection (thumbs up) .
  3. Question: Introduce IState instead of Object? This will emphasize the relation between IManageState and IPersistentState. Additional suggestion: IPersistentState extends IState.
    (b.t.w: makePersistent / readPersistentState are wrong names, should be something like getAsByteStream)
    1. Gena has discussed with Rob between last and current meeting. After some discussion the final result (thumbs up) is described on: Suggestion about changed to state management
  4. To be discussed: Introduce generics in IOutputItem.Values()? i.e. weakly typed via <T>
    1. (thumbs down) We will not introduce generics in the standard. However, they could be used in the SDK.
  5. Remark: Working with providers/consumers, we should take care that such a circularity might give garbage collection problems. After a short discussion, we see no real general way so solve this risk, so it has been decided that we should leave this up to the Garbage Collector.
  6. (thumbs up) We will introduce something like OpenMIException : Exception. However, first we will have a detailed look at the guidelines for introducing custom exceptions in both .Net and Java. Rob K. has added a page for this, Guidelines for introducing custom exceptions. It now includes Java suggestions, (warning) Gena will add .Net suggestions.

3.3 Suggestions for the states and possible transitions between the states of the ILinkableComponent

If component has Invalid status and we call Validate() - it may even call Update() on another components in order to validate itself.

3.4 Limitations of time representation in OpenMI (by W. de Winter (wim.dewinter@wur.nl))

The Limitations of time representation was discussed as part of the time issue, see 3.6.2.

3.5 More suggestions on v2.0 changes

3.6 The ITime Issue

3.6.1 Time Interface(s)

After some discussions, their were four proposals. See list below (including the original 1.4 situation).
Note: naming to be done yet.

  public interface ITime {
      double StampAsModifiedJulianDay { get; }
      double DurationAsModifiedJulianDay { get; }
  }
  public interface ITimeSet {
      List<ITime> Times { get; }
      bool HasDurations { get; }
  }
  public interface ITime {
      double StampAsModifiedJulianDay { get; }
  }
  public interface ITimeSpan : ITime {
      double DurationAsModifiedJulianDay { get; }
  }
  public interface ITimeSet {
      List<ITime> Times { get; }
      bool HasDurations { get; }
  }
  public interface ITimeSet
  {
      IList<double> TimeStamps { get; set; }
      IList<double> Durations { get; set; }

      TimeZoneInfo TimeZone { get; set; }

      bool HasDurations { get; }
  }
  public interface ITimeSet
  {
      IList<double> TimeStamps { get; }
      TimeZoneInfo TimeZone { get; }
  }
  public interface ITimeSpanSet : ITimeSet
  {
      IList<double> Durations { get; }
  }
  public interface ITime
  {
  }
  public interface ITimeStamp : ITime
  {
      double ModifiedJulianDay {get;}
  }
  public interface ITimeSpan : ITime
  {
      ITimeStamp Start { get; }
      ITimeStamp End   { get; }
  }

After studying the proposal, we have made a decision (thumbs up). We will take version I.

3.6.2 Platform specific time or Modified Julian?

Adrian suggested that we incorporate as less platform specific things in the Standard as possible. This also holds for Lists and events. (question) We will be put the issue on the agenda for next meeting.
After some detailed discussion on the .Net.DateTime/Java.Date versus the MJD implementation, we have reached a conclusion (thumbs up) : We will keep using the Modified Julian Day.
We should take into consideration whether we want to support a c++ version of the standard in the future.

4. Decorators

The decorators were discussed thouroughly, and we came up with some extensions to the standard.

See list of questions discussed on the following page: Exchange item decorators.

Current changes to the standard:

    // add a new interface:
    public interface IExchangeItemDecoratorFactory
    {
        IIdentifiable[] GetAvailableOutputDecorators(IOutputItem decoratedItem, IInputItem targetItem);
        IOutputItemDecorator CreateOutputItemDecorator(IIdentifiable decoratorId, IOutputItem decoratedItem, IInputItem targetItem);

        IDescribable GetDecoratorDescription(IIdentifiable id);
    }

    // add the following methods to the ILinkableComponent:
    public interface ILinkableComponent
    {
        ...

        IExchangeItemDecoratorFactory GetDecoratorFactory();

        void AddOutputItemDecorator(IOutputItemDecorator decorator);

        void RemoveOutputItemDecorator(IOutputItemDecorator decorator);
    }

5. OATC Procedures

We will keep track of a wish list for version 3.0.

6. www.OpenMI.org and wiki.OpenMI.org

Gena will move the content of the current wiki to the new wiki, and make a redirect page to the new wiki on the current one, and will ask the Greek to adjust the name server to let it refer to the new new wiki.

7. Miscellaneous issues

7.1. OpenMI Goes Linux

7.1.1. The OpenMI Linux version ...

Peter Schade achieved quite a bit of result, making nearly everything working. During a Skype session Peter explained the status to the other OATC members, who were quite impressed.

The Linux version has been commited to SourceForge:http://openmi.svn.sourceforge.net/svnroot/openmi/branches/OpenMI-Version-1-Trunk/

7.1.2. The Linux HowTo pages are on the wiki

https://public.deltares.nl/display/OPENMI/How+to+port+the+OpenMI+from+Windows+to+Linux
How to port the OpenMI environment from Linux to Windows:

A set of Mono dlls and exe files was generated and tested on openSUSE 11.0 Linux. Interested persons are invited to test the set, especially the ConfigurationEditor on further (Linux) platforms supported by Mono.

https://public.deltares.nl/display/OPENMI/How+to+generate+a+LinkableComponent+with+a+Fortran+engine+on+Linux
How to generate a LC (Fortran 90 engine and C# wrapper) on Linux

Deltares will test the Linux version on Ubuntu and Fedora in about 3 weeks from now (say May 15 th ).
Results will be reported at next meeting, after which Adrian will take care of the distribution.

8. Tasks and unresolved issues

All tasks are handled by sourceForge. GOTO: OpenMI Tasks on source forge

9. Any other business