Gast
#2975047
Hallo zusammen! Erstmal wünsch ich allen nachträglich ein Frohes Fest. Ich hoffe ihr habt euch über die Weihnachtsfeiertage erholen können! Nun zu meiner Frage: Ich arbeite zur Zeit an einem von mir erstellten Programm welches zum lösen einer partiellen Differentialgleichung gedacht ist. Es handelt sich dabei um eine Berechnung für Gleitlager. MEIN PROBLEM IST FOLGENDES: Das Programm arbeitet "quasi" einwandfrei. ABER: es ist viel zu langsam. Ich muss pro Zeitschritt ein lineares Gleichungssystem mit über 2000 Gleichungen lösen. Anschließend wird noch ein nichtlineares Gleichungssystem gelöst. Je Wellenumdrehung benötige ich ca. 180-300 Zeitschritte. Bei manchen Betriebsfällen benötige ich zusätzlich bis zu 100 Wellenumdrehungen, damit eine konvergente Lösung auftritt. Also: Da geht ordentlich Schamlz rein. Generell wurde das Programm schon ordentlich optimiert (Lösungsalgorithmen für dünn besetzte Matrizen, guter "rate" Algorithmus, ect.) Bei einem Test stellte sich heraus, dass der gleiche Code in C um einiges schneller abgearbeitet wird. ICH MÖCHTE DAHER FOLGENDES: Das User Frontend soll in VB.net bleiben. Ist schon ziemlich schön gestalltet und tut seinen Dienst. Den Solver will ich jetzt in ein C-Programm auslagern. MEINE FRAGE IST: - macht das Sinn, oder mache ich das Programm nur unnötig kompliziert? - Wie kann ich "anständig" mit dem C-Programm kommunizieren? Ich dachte mir, dass ich die "Randbedingungen" einfach von VB.net in eine Textdatei exportiere, dann das C-Programm starte und einlese? - Kann ich mit meinem C-Programm irgendwie mit VB.net kommunizieren? Sprich, kann mein C-Programm quasi einen "Interupt" senden, damit das VB.net Programm merkt, dass ein Iterationsschritt abgeschlossen ist, und die Lösung in einem Digramm darstellt? ICH BITTE UM ZAHLREICHE ANREGUNGEN UND BEDANKE MICH IM VORAUS!