BlueM.DLLAdapter: Difference between revisions

From BlueM
Jump to navigation Jump to search
mNo edit summary
(Anwendungsbeispiel)
Line 19: Line 19:
:Schliessen alle Dateien und freigabe des Speichers  
:Schliessen alle Dateien und freigabe des Speichers  


* Auszuge aus dem Quellcode
==Anwendungsbeispiel==
<csharp>
Beispiel zur Nutzung des Bluem.DLLAdapters zur Simulation mittels BlueM.dll in VB.NET:
namespace IHWB.OpenMI.BlueM
<vbnet>
{
bluem_dll = New BlueM_EngineDotNetAccess("Pfad-zu-BlueM.dll")
    public class BlueM_EngineDotNetAccess
    {
        #region Basisfunktionen


        public void Initialize(string filePath)
Try


        public void Finish()
    Call bluem_dll.Initialize("Pfad-zu-Datensatz")


        public void Dispose()
    Dim SimEnde As DateTime = BlueM_EngineDotNetAccess.DateTime(bluem_dll.GetSimulationEndDate())
       
        public void PerformTimeStep()


         #endregion
    'Schleife über Simulationszeitraum
    Do While (BlueM_EngineDotNetAccess.DateTime(bluem_dll.GetCurrentTime) <= SimEnde)
         Call bluem_dll.PerformTimeStep()
    Loop


        #region ModelInfo
    'Simulation erfolgreich
    simOK = True


        public string GetModelDescription()
Catch ex As Exception


        public string GetModelID()
    'Simulationsfehler aufgetreten
    MsgBox(ex.Message, MsgBoxStyle.Exclamation, "BlueM")
    simOK = False


        #endregion
Finally


        #region Exchangeobjekte
    Call bluem_dll.Finish()
    Call bluem_dll.Dispose()


        public int GetNumberOfNodes()
End Try
 
</vbnet>
        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>


[[Kategorie:BlueM Code]]
[[Kategorie:BlueM Code]]

Revision as of 01:13, 4 October 2007

BlueM.DLLAdapter ist ein .NET Wrapper zum Ansprechen des BlueM Rechenkerns in DLL-Form.

Schnittstellendefinitionen

Klassendiagramm

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

Anwendungsbeispiel

Beispiel zur Nutzung des Bluem.DLLAdapters zur Simulation mittels BlueM.dll in VB.NET: <vbnet> bluem_dll = New BlueM_EngineDotNetAccess("Pfad-zu-BlueM.dll")

Try

   Call bluem_dll.Initialize("Pfad-zu-Datensatz")
   Dim SimEnde As DateTime = BlueM_EngineDotNetAccess.DateTime(bluem_dll.GetSimulationEndDate())
   'Schleife über Simulationszeitraum 
   Do While (BlueM_EngineDotNetAccess.DateTime(bluem_dll.GetCurrentTime) <= SimEnde)
       Call bluem_dll.PerformTimeStep()
   Loop
   'Simulation erfolgreich
   simOK = True

Catch ex As Exception

   'Simulationsfehler aufgetreten
   MsgBox(ex.Message, MsgBoxStyle.Exclamation, "BlueM")
   simOK = False

Finally

   Call bluem_dll.Finish()
   Call bluem_dll.Dispose()

End Try </vbnet>