See also: OATC Wiki Home
Date: April 8.6 - 11.2, 2009
Venue:Deltares , Rotterdamseweg 185, Delft, The Netherlands
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)
~don, Deltares (gennadii.donchyts@deltares.nl)
~jnh@dhigroup.com Johan Hartnack , DHI (jnh@dhigroup.com)
Peter Schade, Bundesanstalt fuer Wasserbau (peter.schade@baw.de)
Apologies:
Jesper Grooss, DHI (jgr@dhigroup.com)
Jan Gregersen, LicTek, (Gregersen@LicTek.dk)
Andrea Antonello, Universita` di Trento, (andrea.antonello@gmail.com)
Documents:
http://www.openmi.org/
http://sourceforge.net/projects/openmi
wiki.openmi.org
Table of contents
agenda
1. Minutes from previous OATC meeting
1.1 Status of the Linux test
Deltares did not find time yet. This afternoon a test will be done on one of the Deltares 64 bit systems (action: Bert).
Later this week, preferably Wednesday or Thursday, (action) Rob K. will test it at Alterra, on a 32 bit machine.
1.2 Release 1.4.1
No action taken yet, so still pending. However, in 1.4.0 there appear not to be any really blocking problems.
1.3 www.OpenMI.org and wiki.OpenMI.org
The Dissimination Committee has concluded that the current www.OpenMI.org is is quite OK, so this site will remain the main OpenMI entry.
However, we will still move the wiki.OpenMI.org content from the public.wldelft.nl site to the new confluence server that has been prepared to serve the wiki.OpenMI.org space.
Action: Gena / Stef / Deltares automation department.
2. Status of the implementation .NET
2.1 Changes to the standard
All proposed changes resulting from the previous meeting have been realized.
2.2 Backbone
Gena update the backbone according to the latest version of the Standard. Small modifications by Stef and Adrian afterwards.
Note: the documentation is not up to date at all. Actually: the documentation of the Standard is the most important one. We could already start to work on this documentation for the more static items, like the ValueDefinition, ElementSet, etc.
2.3 Buffer
The buffer has "ported" to the latest 2.0.
However, there is an issue to adress: the extrapolation, interpolation, etc.
2.4 Time interpolation Decorator
Stef experimented a bit. Two major issues to have a look at came up:
- when to extrapolate/interpolate
- the component needs to know which decorator is a TimeDecorator.
2.5 GUI
The Gui is quite on its way. To be done:
- details on working with decorators
- actually run the application
2.6 SimpleRiver Model - running in GUI
While developing the GUI, the Simple River Model has been updated also (there might be small issues when really running it).
2.7 OpenMIException : Exception - sugestions
Introducing the OpenMI exception is being rediscussed.
The opinion is that it might be done, but that it does not have a very high priority. During the present meeting we will focus on other, more urgent, issues. The OpenMI exception then will be considered at the september meeting.
2.7 OpenMI 2.0 wrapper around OpenMI 1.4 Components
Jesper worked on it quite a bit, together with Stef when needed. Quite some progression was made.
The content of the task shifted from wrapping a 1.4 LinkableComponent to wrapping the 1.4 Sdk.Wrapper.IEngine.
So people who have implemented their wrapper based on the IEngine will be able to migrate their model to 2.0 quite easily.
3 Status of the Java implementation
We once again discussed to which extend we should support Java for version 2.0.
Part |
To be done or not? |
How to do it? |
---|---|---|
Standard |
surely t.b.d. |
convert C# to Java, including comments, semi-automatically |
Backbone/Buffer |
most probably |
take java-1.2 as base |
Spatial |
most probably |
take java-1.2 as base (there have been only slight modifications to the IElementSet |
Wrapper |
probably not |
4 Pending from previous meetings / Other items to be discussed
- Question: what does isAvailable() mean in case of multiple consumers. Do all consumers need to have the same time(s)?
- Leave in for now, review after more implementation, one suggestion of modification bool isAvailable(whosAsking);
Will be discussed later during the meeting, Stef will show an example of using isAvailable(whosAsking);
- Related: The code:
while (!providingOutputItem.IsAvailable(consumerThatIsAsking)) { providingOutputItem.Component.Update(providingOutputItem); } values = providingOutputItem.Values;
is actually representing the original 1.4 GetValues() call. So it might be wise, to put emphasis again on the still working 'pull approach', introduce this getValues() call:
values = providingOutputItem.GetValues(consumerThatIsAsking);
Will be discussed later during the meeting, Stef will show an example of using isAvailable(whosAsking);
- We will introduce a boolean argument that indicates whether the component should run in a pull mode (like in OpenMI 1.4) or in loop mode: Discuss component operation mode here - comment from Peter Gijsbers need to be discussed
- "string Validate()" / "bool IsValid(IExchangeItem item)" / "IsAvailable()", etc.
to be reviewed at this meeting
- When we get loops in the compositions - we have to tell which component will be first! In the new GUI, we will let the user indicate the 'Start up component'.
- The Timezone issue has to be re-adressed. According to Adrian it is not doing what we expected.
- Decorator issues:
- Do we need to recognize the type of decorator (time, space, SI-conversion)?
- Do we want to support 3th-party decorators indeed?
- Is is useful to let the component have a property OutputDecorators, containing the list of already created decorators?
- How to support the end user, when "chaining" decorators?
- IArgument needs a mechanism for identifying the type of argument e.g. File, Path, int double etc Very usful for providing customised GUI functionality
Adrian's proposal is below
namespace OpenMI.Standard { public enum EArgType { String = 0, // default Bool, Int, Double, Path, // presummed to exist and accessable FilePath, // presummed to exist and accessable PathNew, FilePathNew, XML, // Rob: can be used together with a schema for complex argument data MIME, // Rob: might be useful to pass in images, or text documents, etc. } /// <summary> /// The IArgument interface defines a key - value pair. If the property ReadOnly is /// false the value is editable otherwise it is read-only. /// </summary> public interface IArgument : IDescribable { /// <summary> /// Type that string value represents and can be converted to /// </summary> EArgType ValueType { get; } /// <summary> /// The key (string) in key-value pair. /// </summary> string Key {get;} /// <summary> /// <para>The value (double) in key-value pair.</para> /// /// <para>If the ReadOnly property is true and the property is attempted to be changed /// from outside an exception must be thrown.</para> /// </summary> string Value { get; set; } /// <summary> /// Defines whether the Values property may be edited from outside. /// </summary> bool ReadOnly {get;} } }
-
Gena's proposal:
Current version:
public interface IArgument : IDescribable { string Key { get; } string Value { get; set; } bool ReadOnly { get; } }Proposed change to cover types:
public interface IDescribable { string Caption { get; set; } string Description { get; set; } } public interface IValueDefinition : IDescribable { Type ValueType { get; } bool DescribesSameAs(IValueDefinition otherValueDefinition); } public interface IArgument : IValueDefinition { object Value { get; set; } bool ReadOnly { get; } }
5. Release 2.0 plan
5.1. Documentation / basic / changes
5.2. Alpha release
5.3. External review and further migration of models
5.4. Migration of commercial models and documentation
5.3. Discusion
6. OATC Procedures
7. Miscellaneous issues
7.1 SourceForge clean up
Recently, I checked out the entire OpenMI source forge repository. This took forever, the size of the whole repository is 4.2GB. From this, 3.8GB is located in directories called "Wrappers", which is mainly code and data from HEC, RAS, CUAHI and MODFLOW. Long time ago we made a folder on the OpenMI source forge called MyOpenSource. The idea behind this directory was to have a place where people could put some code, that did not fit into the SDK, but still could be useful for OpenMI developers. Placing an entire model, data and binary files there is in my opinion too much. It is annoying to have so long download times when checking out and it may also add to some confusion, that the OpenMI repository mainly consists of various wrappers. My suggestion is to ask those responsible for the code in the wrappers directories to make their own repositories on source forge, where after we can remove all these files from the OpenMI repository. In order to make sure that people know about these important wrapper developments we could make a page on the wiki with a short description of the various projects and link to the location of the code.
Kind regards
Jan Gregersen
Discussion/Conclusion: Gena will have a session with the Hec-Ras and Modflow developers at the beginning of july. Most propably their developments will be moved out of the current repository.
Action Gena will take care that, once this is done, the OpenMI sourgeforge project will contain a reference to the Hec-Ras and Modflow developments.
7.2. September OATC meeting in Hamburg?
- Do the OATC members agree with a public talk?
- Aim: Spreading the OpenMI in Germany
- Target group: Developers
- Tuesday afternoon, 9th of September
Discussion/Conclusion: We all agree that indeed it will be useful to have a public session on on Tuesday afternoon on the OpenMI 2.0 developments.
The main part of the public will be java oriented, and we may not have java up and running by then, but the .Net version most probably will suffice to introduce the new concepts to the developers.
Before mid of july the OATC will confirm that indeed the public session will take place.
8. Tasks and unresolved issues
All tasks are handled by sourceForge. GOTO: OpenMI Tasks on source forge