| |
 | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Zeitschritte unabhängig der writeControl im Controldict speichern (1240 / mal gelesen)
|
cfdtobi Mitglied Student

 Beiträge: 67 Registriert: 16.07.2015
|
erstellt am: 29. Jun. 2016 14:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, gibt es in OF eine Möglichkeit den lezten komplett berechneten Zeitschritt unabhängig des im controlDict vorgegebenen writeIntervals zu speichern? Hintergrund ist der, dass wenn ich mein writeIntervall auf große Intervalle anpasse, um nicht zu viele Daten zu erzeugen, meine wallTime aber zu einem ungeschickten Zeitpunkt abläuft, eventuell einiges an Rechenzeit verloren geht. Bps. writeIntervall 1 Sekunde - wallTime beim Stand 1,99 Sek zu Ende, würde ja bedeuten dass 0.99 Sekunden verloren wären. Lässt sich so etwas umsetzten? Eventuell ala: "Schreibe jeden Zeitschritt und lösche nach 3 Zeitschritten den ersten abgelegten" (oder so ähnlich) Viele Grüße Tobi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 29. Jun. 2016 15:46 <-- editieren / zitieren --> Unities abgeben:          Nur für cfdtobi
|
cfdtobi Mitglied Student

 Beiträge: 67 Registriert: 16.07.2015
|
erstellt am: 29. Jun. 2016 16:18 <-- editieren / zitieren --> Unities abgeben:         
|
cfdtobi Mitglied Student

 Beiträge: 67 Registriert: 16.07.2015
|
erstellt am: 29. Jun. 2016 16:22 <-- editieren / zitieren --> Unities abgeben:         
Ok purgeWrite habe ich soweit verstanden... Aber ist es mit dieser Funktion dann auch möglich gewissen Zeitschritte trotzdem zu behalten (über das vorgegebene writeIntervall)? also prinzipiell über purge immer nur die letzten beiden Zeitschritte speichern, und zusätzlich jeden 50. Zeitschritt behalten? Hoffe das ist halbwegs verständlich?! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 29. Jun. 2016 17:05 <-- editieren / zitieren --> Unities abgeben:          Nur für cfdtobi
Nicht das ich wüsste, purge behält nur die angegebenen letzten Zeitschritte. purge = 5; letzten 5. Wie du das lösen kannst ist aber sehr simple. Du kannst ja ein kleines bash-Skript schreiben, dass dir das überprüft. Beispiel: Code:
|-> 0 |-> 50 |-> 100 |-> 150 |-> 121.25 |-> 121.50 |-> 121.75
Dann sollte das Skript halt alle x Sekunden prüfen ob du 200 hast. In C++ würde ich das mit dem % Operator und regulären Ausdrücken machen. Damit FOAM dir den Zeitschritt nicht löscht, könntest du den dann beispielsweise temporär umbenennen zu time_200. Nach der Simulation muss man halt den Präfix wieder entfernen. Das wäre jetzt die von mir schnellste Lösung. Gibt sicherlich auch elegantere aber deswegen mag ich die bash; einfach, schnell und unkompliziert (außer bei Datenmanipulationen, aber dafür ist se ja nicht ausgelegt). Hoff es hilft dir weiter. Code:
pimpleFoam > log & saveData.sh &
------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cfdtobi Mitglied Student

 Beiträge: 67 Registriert: 16.07.2015
|
erstellt am: 30. Jun. 2016 13:39 <-- editieren / zitieren --> Unities abgeben:         
ah OF kann das doch... Habe das eben an nem cavity - icoFoam - Case getestet: Aus dem controlDict: Code:
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 17 18 application icoFoam; 20 startFrom startTime; 22 startTime 0; 24 stopAt endTime; 26 endTime 0.5; 28 deltaT 0.001; 30 writeControl adjustableRunTime; 32 writeInterval 0.003; 34 purgeWrite 2; 36 writeFormat ascii; 38 writePrecision 6; 40 writeCompression on; 42 timeFormat general; 44 timePrecision 6; 46 runTimeModifiable true; 48 secondaryWriteControl adjustableRuntime; 49 secondaryWriteInterval 0.025; 50 secondaryPurgeWrite 0; 49 // ************************************************************************* //
liefert dann das Ergebnis, dass alle 0.025 Sekunden ein Zeitschritt fix stehen bleibt, die Zwischenschritte dann aber durch purge gelöscht werden. Grüße Tobi [Diese Nachricht wurde von cfdtobi am 30. Jun. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 30. Jun. 2016 14:24 <-- editieren / zitieren --> Unities abgeben:          Nur für cfdtobi
Hey Tobi, danke für die Rückmeldung. Das wusste ich noch nicht (wie soll man auch alle Funktionen auswendig können ?). Eine Frage, wie bist DU drauf gekommen? Nachdem du das nun erwähnt hast, hab ich mir die Klasse Time mal näher angeschaut und dann sieht mans. ------------------ Viele Grüße, Tobias Holzmann Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cfdtobi Mitglied Student

 Beiträge: 67 Registriert: 16.07.2015
|
erstellt am: 30. Jun. 2016 14:57 <-- editieren / zitieren --> Unities abgeben:         
|
Shor-ty Moderator
     

 Beiträge: 2466 Registriert: 27.08.2010 ESI-OpenCFD OpenFOAM v2312
|
erstellt am: 30. Jun. 2016 18:34 <-- editieren / zitieren --> Unities abgeben:          Nur für cfdtobi
|