#region Copyright /* * Copyright (c) 2005,2006,2007, OpenMI Association * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * Neither the name of the OpenMI Association nor the * names of its contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY "OpenMI Association" ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL "OpenMI Association" BE LIABLE FOR ANY * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #endregion using System; using System.Collections; using OpenMI.Standard; using System.Runtime.Remoting; namespace RTCTools.OpenMI.Sdk.Wrapper { /// /// The IRunEngine is the interface the ModelEngine component /// The Class RTCTools.OpenMI.Sdk.Wrapper.LinkableRunEngine will access the /// model engine component through this interface. /// /// /// None /// public interface IRunEngine { /// /// Initialize will typically be invoked just after creation of the object /// that implements the IRunEngine interface. /// /// /// Hashtable with the same contents as the Component arguments /// in the ILinkableComponent interface. Typically any information /// needed for initialization of the model will be included in this table. /// This could be path and file names for input files. /// void Initialize(Hashtable properties); /// /// This method will be invoked after all computations are completed. Deallocation of memory /// and closing files could be implemented in this method /// void Finish(); /// /// This method will be invoked after all computations are completed /// and after the Finish method has been invoked /// void Dispose(); /// /// This method will make the model engine perform one time step. /// /// Returns true if the time step was completed, /// otherwise it will return false /// bool PerformTimeStep(); /// /// Get the current time of the model engine /// /// The current time for the model engine ITime GetCurrentTime(); /// /// Get the time for which the next input is needed for /// a specific Quantity and ElementSet combination /// /// ID for the quantity /// ID for the ElementSet /// ITimeSpan or ITimeStamp ITime GetInputTime(string QuantityID, string ElementSetID); /// /// Get earlist needed time, which can be used /// to clear the buffer. For most time stepping model engines this /// time will be the time for the previous time step. /// /// TimeStamp ITimeStamp GetEarliestNeededTime(); /// /// Sets values in the model engine /// /// quantityID associated to the values /// elementSetID associated to the values /// The values void SetValues(string QuantityID, string ElementSetID, IValueSet values); /// /// Gets values from the model engine /// /// quantityID associated to the requested values /// elementSetID associated to the requested values /// The requested values IValueSet GetValues(string QuantityID, string ElementSetID); /// /// In some situations a valied values cannot be return when the /// RTCTools.OpenMI.Sdk.Wrapper.IRunEngine.GetValues is invoked. In such case a missing values /// can be returned. The GetMissingValeusDefinition method can be used to query which definition /// of a missing value that applies to this particular model component. Example of missing value /// definition could be: -999.99 /// /// Missing value definition double GetMissingValueDefinition(); /// /// Get the ComponentID. The component ID is the name of the non-populated component. This is typically /// the product name of your model engine. /// /// Component ID string GetComponentID(); /// /// Get a description of your component. This description refers to the non-populated component. This is /// typically a description of what your component does and which methods that are used. E.g. "Finite element /// based ground water model". /// /// Component description string GetComponentDescription(); } }