Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
scrollbar

See also: OATC Wiki Home

Date: June 18, 2010
Time: 09:00 - 10:00 am
Venue: Skype Conference Call
Topic: Extendable version of OpenMI 2

...

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 Unknown User (don), Deltares (gennadii.donchyts@deltares.nl)
Jesper Grooss, DHI (jgr@dhigroup.com)

...

All work to be done in the SourceForge OpenMI-2.0.0-extendable branch: http://openmi.svn.sourceforge.net/viewvc/openmi/branches/OpenMI-2.0.0-extendable/Image Removed

Meeting Decision: Code will be moved to the main trunk folder (Jesper).

Component

Update?

update author

author deadline

reviewer

deadline

C# OpenMI 2 Standard

y/n

who

28. June

who

2. July

C# OpenMI 2 SDK

y/n

who

28. June

who

2. July

C# OpenMI 2 GUI

y/n

who

28. June

who

2. July

Java OpenMI 2 Standard

y/n

Rob

28. June

who

2. July

Samples to test extendability?

y/n

who

28. June

who

2. July

FRAMES Extension Concept

y/n

Stef

28. June

Rob

2. July

Loop Extension Concept

y/n

who

28. June

who

2. July

OGC Extension Concept

y/n

who

28. June

who

2. July

...

is required in order to implement code which knows only about IValueSet, otherwise IValueSet is useless without information about specialized implementation. Once we have instance of the IValueSet - we can call GetValues / SetValues without need to know about specific implementation. In the current version you are forced to extract number of times and number of elements from the specialized version, and only after that it is possible to call GetValue / SetValue.unmigrated-wiki-markup

(Jesper) I am not quite sure that an int\[\] will be able to describe the data correctly. As I understand the FRAMES stuff, then a dimension may vary in size depending on another dimension, i.e. assuming the underlying data is of the form (simulation-index, quantity-index, time-step-index):

Code Block
 double[][][] values 

...

Get/set multiple values from IValueSet

Wiki Markup(Gena) Make it possible to set/get multiple values instead of working with a single value, otherwise performance will be extremely bad, checking all indices\[\] on every call is not that nice and will make OpenMI perform terrible.

(Rob) Perhaps we could leave this to specialised high performance versions of IValueSet? (thumbs up)

(Gena) The use of interfaces without methods / properties is a very bad code smell AFAIK. If we introduce IValueSet and define it as a generic way to access values - it should provide way to do so.

...

(Jesper) Alternatively these can be implemented once and for all as C# extensions, which will be able to utilize high performance implementations, but does not require to be a part of the public interface. (thumbs up)

Meeting Decision: All agreed to leave this out of the IValueSet for OpenMI 2.

IExchangeItem event

(Gena) What is our goal with ItemChanged event in IExchangeItem? Do we want to get this event fired only when values of the exchange item are changed? If yes - then let's rename it to ValuesChanged and add indices to it (indicating which values were changed). That should make it much more useful.

...

(Rob) I have updated the method name in IBaseExchangeItem as follows (thumbs up):

Code Block
    /**
     * Returns an Observable to be used to receive notifications from the
     * exchange item about content changes. This notification is sent when
     * the exchange item values have been updated. It is the responsibility
     * of the observer to figure out which actual values have changed and
     * how to act on these changes.
     *
     * The argument passed in the Observer update call must be an instance of
     * the ExchangeItemValuesUpdatedEventArgs class.
     * 
     * @return Observable for receiving exchange item change notifications
     */
    public Observable getValuesUpdatedObservable();

Also renamed the event args class to: ExchangeItemValuesUpdatedEventArgs . (thumbs up).

Meeting Decision: All agreed to this change, the C# code will be updated accordingly. It was noted that some additional events / notifications should be added to the ITimeSpaceExchangeItem for changes to the time set and element set.

Namespaces for Namespaces for interfaces

(Rob) I prefer a namespace split, e.g. in openmi.standard.base and openmi.standard.timespace packages. Provides structure and leaves room for the future.

...

(Jesper) I would then probably make a spatial/geometry namespace or similar, that holds the ISpatialAxis, IElementSet, and the future ISpatialLine or whatever types of geometries that are required to be supported. Because most likely the TimeSpace version is not the only type of component that requires a spatial definition.

Meeting Decision: Agreed to create the timespace namespace and put relevant interfaces there. Base interfaces are to be put in the root (standard) namespace.

Other issues

  • (Peter) What happens if MyDictionaryComponent gets linked to MyLinkableComponent? Does one class have to derive from both extensions? (MyLinkableDictionaryComponent : IBaseLinkableComponent, IDictionaryComponent, ExtensionTimeSpace) Is there more than we can properly think through in three weeks?

...

(Jesper) When it implements the IBaseLinkableComponent, then it is OpenMI 2.0 compliant. The rest is in principle up to adaptors. We could consider to require that components also specify which extensions it supports, i.e. a 2.0 TimeSpace component is base compliant and time-space-extension compliant.

Meeting Decision: Adrian pointed out that with this support for extensions we should be more clear about what compliancy means. Even with OpenMI 1.4 it is not clear to a user what he can expect when a model is OpenMI compliant. We agreed to work on a better definition of OpenMI compliancy and add it to the documentation.