Closed Arombolosh closed 1 year ago
Klappt das mit allen Simulationen? Ist mir aktuell absolut unklar, wie das passieren kann. Da muss ja die Restart-Datei nicht korrekt beim Anhängen von Ausgaben aktualisiert werden. Aber daran wurde meines Wissens nach seit Monaten nichts geändert... Interessant!
Ok, ich seh's... das war von Anfang an kaputt :-)
Restart-Info wird nur alle 5 minuten geschrieben:
// siehe
SolverControlFramework::SolverControlFramework(ModelInterface * model) :
m_restartMode(RestartFromLast),
m_simTimeDt(3600*24), // every 1 d simtime
m_realTimeDt(5*60), // every 5 min real time
...
Dokumentiert sind die Variablen wie folgt:
/*! Simulation time in [s] to wait before writing restart info (default 1 d simulation time). */
double m_simTimeDt;
/*! Real (wall clock) time in [s] to wait before writing restart info (default 5 min real time). */
double m_realTimeDt;
m_simTimeDt
wird derzeit nirgendwo benutzt. Und m_realTimeDt
führt dazu, dass eben nur alle 5 Minuten ein Neustartzeitpunkt gesetzt wird. Damit werden alle seit dem letzten Zeitpunkt geschriebenen Ausgaben wiederholt.
Das ist doof, aber ich hab irgendwo ein Skript, was solche Werte rausfiltert (muss ich mal rauskramen).
Eine saubere Lösung a la DELPHIN hat aber den Nachteil, dass man eben nach jedem Schreibvorgang die Restart-Datei schreibt und gerade bei schnellen Simulationen (und dem schnarchlahmen Windows + Defender-Checks) bremst das die Simulationen drastisch aus.
Alle Ausgaben im Speicher zu Cachen und dann nach 5 Minuten zusammen mit dem Restart-Punkt kollektiv rauszuschreiben wäre eine Lösung, ist aber ziemlich aufwändig zu programmieren (vor allem, wenn NANDRAD als FMU benutzt wird).
Vorschlag: m_realTimeDt-check vorerst auskommentieren und mit der "geringfügigen" Verlangsamung von NANDRAD leben - dafür aber keine doppelten Ausgaben haben. Soll ich das so machen?
Noch ein besserer Vorschlag: m_realTimeDt
wird als "Mindestzeit seit Simulationsstart zum starten von Restartdaten" interpretiert. Sobald die Simulation länger als diese Zeitspanne läuft, ist es eine langsame Simulation und Restart-Daten werden nach jeder Ausgabe geschrieben.
Noch besser - entweder Restart nach jeder Ausgabe oder nur am Ende - das ist idiotensicher und funktioniert auch mit FMUs
Nandrad Simulation durchführen.
NANDRAD Simulation dabei vorzeigt abbrechen. Dann mit Restart wieder weiter simulieren. Dann werden doppelte Zeitreihen hergestellt. Bei ersten Projekt hatte ich 2 mal die Zeitwerte 8633 h und 8634 h und damit verbundene Ergebnisse
Beim zweiten Projekt sind es 4 doppelte Zeitwerte gewesen 115 h 116 h 117 h 118 h
Wer solche Fehler einbaut muss bei der nächsten Stammtischrunde Kiba für alle ausgeben :)