BlueM.DLLAdapter

From BlueM
Revision as of 02:55, 31 August 2007 by Reussner (talk | contribs)
Jump to navigation Jump to search

Schnittstellendefnitionen

Nachfolgend werden die Schnittstellen-Methoden zur Kommunikation mit der BlueM DLL mit den zugehörigen Übergabe- bzw. Rückgabeparametern aufgelistet.

Falls ein Fehler auftritt wird die Methode "CreateAndThrowException" aufgerufen (schmeisst einen Fehler).

  • Basismethoden
  • Initialize
<csharp>public void Initialize(string filePath)</csharp>
"filePath" ist der Absolute Pfad mit dem Projektnamen ohne die Dateiendung .ALL (Bsp. "d:\Simulation\TSIM").
Das System wird initialisiert und alle zugehörigen Daten aus den Simulationsdateien geladen.
  • PerformTimeStep
<csharp>public void PerformTimeStep()</csharp>
Berechnet den nächsten Zeitschritt.
  • Finish / Dispose
<csharp> public void Finish()</csharp>
<csharp> public void Dispose()</csharp>
Schliessen alle Dateien und freigabe des Speichers
  • Auszuge aus dem Quellcode

<csharp> namespace IHWB.OpenMI.BlueM {

   public class BlueM_EngineDotNetAccess
   {
       #region Basisfunktionen
       public void Initialize(string filePath)
       public void Finish()
       public void Dispose()
       
       public void PerformTimeStep()
       #endregion
       #region ModelInfo
       public string GetModelDescription()
       public string GetModelID()
       #endregion
       #region Exchangeobjekte
       public int GetNumberOfNodes()
       public string GetNodeKennung(int NodeID)
       public double GetYCoordinate(int NodeID)
       public double GetXCoordinate(int NodeID)
       #endregion
       #region Zeit_methoden
       public int GetTimeStepLength()
       public string GetCurrentTime()
       
       public string GetSimulationStartDate()
       public string GetSimulationEndDate()
       #endregion
       #region Get_SET_VALUES
       public double Get_Qab(int index)
       public void Set_Qzu(int index, double inflow)
       #endregion
       #region Private_methoden
       private void CreateAndThrowException()
       {
           int numberOfMessages = 0;
           numberOfMessages = mBlueM_DLLMethoden.GetNumberOfMessages();
           string message = "Error Message from BlueM Fortran Core ";
           for (int i = 0; i < numberOfMessages; i++)
           {
               int n = i+1; // Fortran zählt ab 1 (nicht 0)
               StringBuilder messageFromCore = new StringBuilder("                                                        ");
               mBlueM_DLLMethoden.GetMessage(ref n, messageFromCore, (uint)messageFromCore.Length);
               message += "; ";
               message += messageFromCore.ToString().Trim();
           }
           throw new Exception(message);
       }
       #endregion
   }

} </csharp>