Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Demonstration Of The Open Mi

Presentation for the Final OpenMI LIFE workshop "Integrated models and policy- OpenMI solutions for a sustainable future.

  • Login to see the comments

  • Be the first to like this

Demonstration Of The Open Mi

  1. 1. Demonstration of the OpenMI<br />Jan Gregersen<br />www.HydroInform.com<br />
  2. 2. What is OpenMI<br />Rainfall module<br />OpenMI is an open IT-standard that facilitates<br />Linking of hydrological model and modules<br />Rainfall / Precipitation<br />Rainfall-runoff model<br />Runoff<br />River model<br />
  3. 3. Different approaches to linking<br />Output file<br />Output file<br />Output file<br />Output file<br />Output file<br />All together<br />“hardcoded” <br />File based<br />The OpenMI way<br />RR model<br />River model<br />RR model<br />RR model<br />&<br />River model<br />Write<br />Write<br />Write<br />Write<br />Read<br />River model<br />Write<br />
  4. 4. Another standard - USB<br />Rainfall module<br />USB<br />Precipitation<br />My model<br />River model<br />Runoff<br />Rainfall-runoff model<br />Leakage<br />Provides freedom of choice for the users<br />Provides opportunities for suppliers<br />Ground water model<br />
  5. 5. DEMO<br />River model<br />Runoff<br />Rainfall-runoff model<br />3 : Inspect the results<br />2 : Configure and run<br />1 : Setup your models<br />OMI file<br />
  6. 6. What is a model ?<br />
  7. 7. How does OpenMI work<br />Setup files<br />Output file<br />void Initialize(IArgument[] properties)<br />string ComponentID<br />string ComponentDescription<br />string ModelID<br />string ModelDescription<br />ITimeSpanTimeHorizon<br />IInputExchangeItemGetInputExchangeItem(int index)<br />IOutputExchangeItemGetOutputExchangeItem(intidex)<br />intInputExchangeItemCount<br />intOutputExchangeItemCount<br />void AddLink (ILink link)<br />void RemoveLink(string linkID)<br />string Validate()<br />void Prepare()<br />IValueSet GetValues(ITime time, string linkID)<br />ITimeStamp EarliestInputTime <br />void Finish()<br />void Dispose()<br />User Interface<br />OpenMI Standard<br />Write<br />Run<br />Write<br />My model<br />OMI file<br />Read<br />.NetOrJava<br />model engine<br />Fortran, C, c++, Pascal, C#, Java, etc.<br />OpenMIStandardInterface<br />Write<br />
  8. 8. How OpenMI works<br />From outside all OpenMI compliant components look the same<br />void Initialize(IArgument[] properties)<br />string ComponentID<br />string ComponentDescription<br />string ModelID<br />string ModelDescription<br />ITimeSpanTimeHorizon<br />IInputExchangeItemGetInputExchangeItem(int index)<br />IOutputExchangeItemGetOutputExchangeItem(intidex)<br />intInputExchangeItemCount<br />intOutputExchangeItemCount<br />void AddLink (ILink link)<br />void RemoveLink(string linkID)<br />string Validate()<br />void Prepare()<br />IValueSet GetValues(ITime time, string linkID)<br />ITimeStamp EarliestInputTime <br />void Finish()<br />void Dispose()<br />RR model<br />River model<br />
  9. 9. How does OpenMI work<br />void Initialize(IArgument[] properties)<br />string ComponentID<br />string ComponentDescription<br />string ModelID<br />string ModelDescription<br />ITimeSpanTimeHorizon<br />IInputExchangeItemGetInputExchangeItem(int index)<br />IOutputExchangeItemGetOutputExchangeItem(intidex)<br />intInputExchangeItemCount<br />intOutputExchangeItemCount<br />void AddLink (ILink link)<br />void RemoveLink(string linkID)<br />string Validate()<br />void Prepare()<br />IValueSet GetValues(ITime time, string linkID)<br />ITimeStamp EarliestInputTime <br />void Finish()<br />void Dispose()<br />My model<br />Read OMI file<br />Create component<br />Invoke (call) Initialize<br />Component will read input files and initialize<br />
  10. 10. How does OpenMI work<br />The OMI file<br />&lt;?xml version=&quot;1.0&quot;?&gt;<br />&lt;LinkableComponent Type=“RainfallRunoffModelLC&quot; Assembly=&quot;..inRainfallRunoffModel.dll&quot;&gt;<br /> &lt;Arguments&gt;<br /> &lt;Argument Key=“InputFileName&quot; ReadOnly=&quot;true&quot; Value=“..dataMyInputFile.xml&quot; /&gt;<br /> &lt;/Arguments&gt;<br />&lt;/LinkableComponent&gt;<br />
  11. 11. void Initialize(IArgument[] properties)<br />string ComponentID<br />string ComponentDescription<br />string ModelID<br />string ModelDescription<br />ITimeSpanTimeHorizon<br />IInputExchangeItemGetInputExchangeItem(int index)<br />IOutputExchangeItemGetOutputExchangeItem(intidex)<br />intInputExchangeItemCount<br />intOutputExchangeItemCount<br />void AddLink (ILink link)<br />void RemoveLink(string linkID)<br />string Validate()<br />void Prepare()<br />IValueSet GetValues(ITime time, string linkID)<br />ITimeStamp EarliestInputTime <br />void Finish()<br />void Dispose()<br />My model<br />
  12. 12. void Initialize(IArgument[] properties)<br />string ComponentID<br />string ComponentDescription<br />string ModelID<br />string ModelDescription<br />ITimeSpanTimeHorizon<br />IInputExchangeItemGetInputExchangeItem(int index)<br />IOutputExchangeItemGetOutputExchangeItem(intidex)<br />intInputExchangeItemCount<br />intOutputExchangeItemCount<br />void AddLink (ILink link)<br />void RemoveLink(string linkID)<br />string Validate()<br />void Prepare()<br />IValueSet GetValues(ITime time, string linkID)<br />ITimeStamp EarliestInputTime <br />void Finish()<br />void Dispose()<br />My model<br />Query and display exchange items<br />User selects output and input<br />Create a link object<br />Add the link to both components<br />
  13. 13. void Initialize(IArgument[] properties)<br />string ComponentID<br />string ComponentDescription<br />string ModelID<br />string ModelDescription<br />ITimeSpanTimeHorizon<br />IInputExchangeItemGetInputExchangeItem(int index)<br />IOutputExchangeItemGetOutputExchangeItem(intidex)<br />intInputExchangeItemCount<br />intOutputExchangeItemCount<br />void AddLink (ILink link)<br />void RemoveLink(string linkID)<br />string Validate()<br />void Prepare()<br />IValueSet GetValues(ITime time, string linkID)<br />ITimeStamp EarliestInputTime <br />void Finish()<br />void Dispose()<br />My model<br />GetValues(time)<br />Flow<br />GetValues(time)<br />Return<br />
  14. 14. River model and ground water model<br />My model<br />GetValues(time) (water level)<br />GetValues(time) (Leakage)<br />Leakage<br />Water level<br />
  15. 15. Model migration<br />Setup files<br />Output file<br />void Initialize(IArgument[] properties)<br />string ComponentID<br />string ComponentDescription<br />string ModelID<br />string ModelDescription<br />ITimeSpanTimeHorizon<br />IInputExchangeItemGetInputExchangeItem(int index)<br />IOutputExchangeItemGetOutputExchangeItem(intidex)<br />intInputExchangeItemCount<br />intOutputExchangeItemCount<br />void AddLink (ILink link)<br />void RemoveLink(string linkID)<br />string Validate()<br />void Prepare()<br />IValueSet GetValues(ITime time, string linkID)<br />ITimeStamp EarliestInputTime <br />void Finish()<br />void Dispose()<br />User Interface<br />OpenMI Standard<br />Write<br />Run<br />Write<br />My model<br />OMI file<br />Read<br />.NetOrJava<br />model engine<br />Fortran, C, c++, Pascal, C#, Java, etc.<br />OpenMIStandardInterface<br />Write<br />OpenMI SDK<br />
  16. 16. OpenMI is just a standard<br />Pipistrelle<br />Frames<br />And more….<br />
  17. 17. Looking forward<br />OpenMI Version 2.0<br />Rainfall module<br />New concept for data operations and linking<br />Better support for non-model components <br />Precipitation<br />Not only pull-driven<br />No trigger<br />And much more, to be presented later today…..<br />
  18. 18. Looking further forward<br />
  19. 19. Thank you for your attention <br />

×