BlueM.DLLAdapter
Jump to navigation
Jump to search
BlueM.DLLAdapter ist ein .NET Wrapper zum Ansprechen des BlueM Rechenkerns in DLL-Form.
Schnittstellendefinitionen
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>