
Verwendung von Jobsequenzen zum Speichern von Daten nach der Lösung Ihres Modells
Wussten Sie, dass Sie mit dem Knoten Study programmatische Sequenzen von Vorgängen ausführen können, darunter das Lösen des Modells, das Speichern in einer Datei sowie das Generieren und Exportieren von Plot-Gruppen, Ergebnissen und Bildern? In diesem Blog-Beitrag sehen wir uns diese nützliche Funktion genauer an.
Anmerkung der Redaktion: Die ursprüngliche Version dieses Beitrags wurde am 21. Juni 2017 veröffentlicht. Sie wurde seitdem mit neuen Inhalten und Screenshots aktualisiert.
Ein Beispiel: Das Modell Micromixer
Um diese Funktionalität zu demonstrieren, laden wir das Tutorial-Modell Micromixer aus den Application Libraries. Dieses Modell ist im Ordner COMSOL Multiphysics > Fluid Dynamics verfügbar und veranschaulicht die Strömung und den Stofftransport in einem laminaren statischen Mischer.
Das Modell führt zunächst eine Strömungssimulation mit dem Interface Laminar Flow durch. Im nächsten Schritt berechnet es die Mischeffizienz mithilfe des Interfaces Transport of Diluted Species und verwendet dabei die Ergebnisse der Strömungssimulation als Eingabe. Die Spezies wird basierend auf der Fluidgeschwindigkeit stromabwärts transportiert.
Die Berechnungszeit für dieses Modell beträgt einige Minuten. Um das Modell etwas zu vereinfachen, damit wir die Berechnung schneller durchführen können, werden wir den Stofftransport nicht berücksichtigen. Dazu ändern wir die Einstellungen des zweiten Studienschritts, Step 2: Stationary 2, indem wir im Fenster Settings die Kontrollkästchen Transport of Diluted Species und Reacting Flow, Diluted Species deaktivieren.
Wir können eine zusätzliche Änderung vornehmen, um das Modell schneller auszuführen. In den Einstellungen des Knotens Mesh setzen wir den Sequence type auf Physics-controlled mesh und die Element size auf Extremely coarse.
Nun können wir Study 1 berechnen, um sicherzustellen, dass alles funktioniert. Der resultierende Plot zeigt die Geschwindigkeit an einigen Schnitten entlang der Mischergeometrie.
Automatisches Speichern von Modellen mithilfe von Jobsequenzen
Nachdem wir das Modell vorbereitet haben, können wir eine Jobsequenz verwenden, um den Prozess des Lösens und Speicherns zu automatisieren.
Um eine Abfolge von Vorgängen unter dem Knoten Study zu definieren, öffnen Sie zunächst das Dialogfeld Show More Options, indem Sie auf die entsprechende Schaltfläche (das Augensymbol) in der Symbolleiste des Model Builders klicken. Aktivieren Sie anschließend das Kontrollkästchen Solver and Job Configurations.
Durch Aktivieren dieser Einstellung wird ein versteckter Knoten Job Configurations in der Modellstruktur angezeigt. Dieser Knoten ist für die reguläre Modellierungsarbeit nicht relevant. Er enthält im Wesentlichen grundlegende Informationen zur Reihenfolge, in der der Lösungsprozess ausgeführt werden soll. Normalerweise wird diese Reihenfolge indirekt über die oberste Ebene einer Studie gesteuert, ohne dass die Option Solver and Job Configurations aktiviert werden muss.
Klicken Sie mit der rechten Maustaste auf Job Configurations und wählen Sie die Option Sequence, um einen Unterknoten Sequence hinzuzufügen.
Klicken Sie anschließend mit der rechten Maustaste auf den Knoten Sequence, um unterhalb der Option Run verschiedene Optionen anzuzeigen, die als sequenzielle Vorgänge hinzugefügt werden können, wenn die Sequenz ausgeführt wird.
- Job — Mit der Option Job können Sie eine weitere Jobkonfiguration hinzufügen, die aus dieser Sequenz ausgeführt werden soll.
- Solution — Die Option Solution führt einen der Knoten Solution aus, die sich unter dem Knoten Solver Configurations weiter oben in der Baumstruktur Study befinden.
- Other — Unter Other können Sie External Class auswählen, um eine externe Java-Datei aufzurufen. Die Option Geometry erstellt einen Knoten Geometry, der beispielsweise in Kombination mit einem parametrischen Sweep nützlich sein kann, um eine Folge von MPH-Dateien mit unterschiedlichen Geometrieparametern zu generieren. Die Option Mesh erstellt einen Knoten Mesh. Die Option Method Call ruft eine Methode auf, die unter Global Definitions hinzugefügt und im Application Builder erstellt wurde.
- Save Model to File — Save Model to File speichert das gelöste Modell in einer MPH-Datei.
- Results — Unter der Option Results können Sie Plot Group auswählen, um alle oder eine ausgewählte Gruppe von Plot-Gruppen auszuführen. Mit den Optionen unter Plot Group wird die Erstellung von Plot-Gruppen automatisiert, sodass Sie nach der Lösung nicht manuell durch alle Plot-Gruppen klicken müssen, um die entsprechenden Visualisierungen zu erstellen. Die Option Derived Value ist aus Gründen der Abwärtskompatibilität vorhanden. Wir empfehlen jedoch, die Option Evaluate Derived Values zu verwenden, mit der Knoten unter Results > Derived Values ausgewertet werden. Mit der Option Export to File werden alle Knoten für den Datenexport unter dem Knoten Export ausgeführt.
Alle Vorgänge, die durch Hinzufügen eines Sequence-Knotens ausgeführt werden, können auch durch Schreiben von API-Code in Java und Verwenden des Method Editors erreicht werden. Im Allgemeinen kann jeder Vorgang, der in der Benutzeroberfläche ausgeführt wird, auch über die COMSOL API ausgeführt werden.
Wir können nun eine einfache Sequenz erstellen. Klicken Sie dazu mit der rechten Maustaste auf den Knoten Sequence und wählen Sie die Option Solution.
Im Allgemeinen werden je nach Modell und Studien mehrere Lösersequenzen durch verschiedene Studien definiert. Im Abschnitt General der Einstellungen des Knotens Solution können Sie mit der Einstellung Run festlegen, welche Lösersequenz(en) berechnet werden soll(en). Standardmäßig werden mit der Option All alle Lösersequenzen unter Solver Configurations für alle Studien ausgeführt. In der Regel sollten Sie die Einstellung Run auf die spezifische Lösersequenz setzen, die Sie ausführen möchten.
In diesem Beispiel besteht die Lösersequenz Solution 1 (sol1) aus den unter Solver Configurations > Solution 1 aufgeführten Operationen. Die Lösungsdatenstruktur Solution Store 1 (sol2) dient als Zwischenspeicher für die von Stationary Solver 1 berechnete Lösung und ist nicht mit einer Lösersequenz verknüpft. Daher wählen wir in diesem Fall Solution 1 (sol1) aus.
Wenn der Löser fertig ist, wollen wir die Datei speichern. Klicken Sie dazu mit der rechten Maustaste auf den Knoten Sequence und wählen Sie Save Model to File.
Im Einstellungsfenster für Save Model to File finden Sie eine Reihe von Optionen zum Speichern einer Serie von MPH-Dateien mit Parametern, die am Ende des Dateinamens hinzugefügt werden. Diese Optionen sind nützlich für parametrische Sweeps wie Batch-Sweeps. In einem so einfachen Beispiel ist dies jedoch nicht erforderlich, sodass wir für die Einstellung Add parameters to filename die Option None auswählen können. An dieser Stelle müssen wir auch einen Dateinamen für einen Speicherort angeben, für den wir Schreibrechte haben. In diesem Beispiel lauten der Dateiname und der Dateipfad C:\COMSOL\myfile.mph.
Um die Operationen auszuführen, wählen Sie den Knoten Sequence und klicken Sie auf Run.
Datenexport nach dem Lösen in COMSOL Multiphysics®
Das Mikromischer-Modell, das wir verwendet haben, verfügt bereits über einen definierten abgeleiteten Wert. Sie finden diesen unter Results > Derived Values > Global Evaluation. Die Variable heißt S_outlet und ist die relative Konzentrationsabweichung am Auslass. Sie ist als Variable unter Component > Definitions > Variables definiert.
Der Wert von S_outlet wird zu Table 1 gesendet. Wir können diesen Wert in einer Datei speichern, indem wir eine Einstellung im Einstellungsfenster von Table 1 ändern. Ändern Sie Store table in On file und geben Sie einen Dateinamen an, zum Beispiel C:\COMSOL\my_data.txt.
Fügen Sie nun die Operation Evaluate Derived Values zur Sequenz hinzu.
Wenn Sie im Abschnitt General der Knoteneinstellungen Evaluate Derived Values alle Größen auswerten möchten, können Sie die Einstellung Evaluate von All in Global Evaluation 1 ändern. Beachten Sie, dass durch Auswahl dieser Option der Name des Knotens in der Modellstruktur in Evaluate: Global Evaluation 1 geändert wird. In diesem einfachen Beispielmodell mit nur einem auszuwertenden Modellstrukturknoten können Sie diesen Schritt jedoch überspringen.
Ändern SieDestination table im Abschnitt Result in Table 1 (dort haben wir den Namen und den Speicherort der Ausgabedatei definiert).
Der letzte Schritt vor dem erneuten Ausführen der Sequenz besteht darin, das Interface Transport of Diluted Species und die Option Reacting Flow, Diluted Species im Einstellungsfenster von Step 2: Stationary 2 zu aktivieren, um den Spezies-Transport zu berechnen (was wir zunächst übersprungen haben, um das Modell schneller zu lösen).
Jetzt können wir die Sequenz ausführen.
Ausführen von Jobsequenzen aus der Studienebene oder der Befehlszeile
Um eine Jobsequenz vom Hauptknoten Study oder über die Befehlszeile auszuführen, können Sie anstelle der oben beschriebenen Methode einen parametrischen Sweep verwenden. Ein parametrischer Sweep ist eine spezielle Art von Jobsequenz, für die im Wesentlichen die gleichen Anweisungen wie oben gelten. In diesem Fall übernimmt jedoch der Knoten Job Configurations > Parametric Sweep die Rolle des Knotens Job Configurations > Sequence.
Bevor Sie den Knoten Parametric Sweep hinzufügen, löschen Sie den Knoten Job Configurations > Sequence sowie dessen untergeordnete Knoten.
Fügen Sie dann unter Study 1 einen Parametric Sweep hinzu. Dadurch wird automatisch ein Knoten Job Configurations > Parametric Sweep erstellt. Standardmäßig erkennt der oberste Studienknoten jedoch keine Jobsequenzen unter Job Configurations. Ebenso erlaubt das Command-Line-Interface keine direkte Ausführung von Jobsequenzen innerhalb eines Studienknotens, sondern unterstützt nur die Ausführung ganzer Studien. Das Hinzufügen eines Dummy-Parameters (z. B. dummy = 1) unter Global Definitions > Parameters ermöglicht die Erkennung, sodass die Jobsequenz sowohl direkt aus Study 1 als auch über die Befehlszeile ausgeführt werden kann.
So wird der entsprechende Parametric Sweep angezeigt:
Klicken Sie mit der rechten Maustaste auf Study 1 und wählen Sie Show Default Solver. Dadurch wird ein Knoten Parametric Sweep unterJob Configurations hinzugefügt.
Die folgende Abbildung zeigt den entsprechenden Sweep über einen Parameterwert für einen Dummy-Parameter. Da wir nun wissen, dass der Knoten Parametric Sweep 1 lediglich ein spezieller Typ des Knotens Sequence ist, können wir erkennen, dass die untergeordneten Knoten Solution 1, Save Model to File 1 und Evaluate: Global Evaluation 1 genauso funktionieren, wie im vorherigen Beispiel, und auf dieselbe Weise hinzugefügt werden können.
Um die Jobsequenz aus dem Model Builder auszuführen, klicken Sie mit der rechten Maustaste auf den Knoten Study 1 und wählen Sie Compute.
Verwendung des Command-Line Interface
Wenn Sie das Command-Line-Interface (z. B. Command Prompt im Windows® Betriebssystem) verwenden, um die Jobsequenz auszuführen, können Sie nach dem Hinzufügen des Dummy-Parameters einen Befehl wie den folgenden eingeben:
comsolbatch -inputfile mymodel.mph -study std1,
wobei std1 der Tag fürStudy 1 ist.
Genau wie bei der Ausführung der Studie über den COMSOL Desktop® führt dieser Befehl die Sequenz von Vorgängen aus, die das Modell löst, in einer Datei speichert und schließlich den Knoten Global Evaluation auswertet. Sie können das Eingabeargument study std1 weglassen, wenn Ihr Modell nur einen Study-Knoten enthält.
Um Modellbaum-Tags anzuzeigen, wählen Sie Tag aus dem Menü Model Tree Node Text in der Symbolleiste des Model Builder.
Der Tag std1 wird jetzt in der Modellstruktur angezeigt:
Beachten Sie, dass, wenn Sie bereits einen parametrischen Sweep in Ihrem Modell haben, jeder Sweep entweder ein „innerer Sweep” oder ein „äußerer Sweep” ist. Der Sweep im obigen Beispiel mit dem Dummy-Parameter ist ein „äußerer Sweep”. Der Knoten Study erkennt automatisch, welcher Sweep-Typ für die beste Leistung verwendet werden sollte. Sie können dies jedoch bei Bedarf manuell festlegen. Um eine Jobsequenz über die Befehlszeile zu verwenden, muss Ihr Sweep ein „äußerer Sweep” sein.
Nahezu alle Arten von Sweeps können von einem inneren Sweep in einen äußeren Sweep umgewandelt werden, jedoch nicht umgekehrt. Innere Sweeps können schneller sein, da sie einen Teil der zugrunde liegenden Struktur der Berechnung nutzen, um den Vorgang zu beschleunigen. Allerdings können nicht alle Arten von Sweeps innere Sweeps sein. Ein Sweep über einem Geometrieparameter muss beispielsweise immer ein äußerer Sweep sein; auch dies wird automatisch vom Löser übernommen. Um sicherzustellen, dass der Parametersweep ein äußerer Sweep ist, ändern Sie in den Einstellungen für Parametric Sweep die Option Use parametric solver auf Off. Führen Sie dann die Operation Show default solver aus und fahren Sie von da aus fort.
Nächste Schritte
Mit Jobsequenzen können Sie eine Reihe gängiger Aufgaben nach der Lösung eines Modells automatisieren. In diesem Blog-Beitrag haben wir gezeigt, wie Sie:
- das Modell als MPH-Datei speichern
- einen abgeleiteten Wert in eine Datei exportieren
Weitere Aufgaben, die Jobsequenzen verwenden und die Sie selbst ausprobieren können, sind unter anderem:
- Neugenerieren von Plots nach der Lösung
- Exportieren von Plot-Daten in eine Datei
- Exportieren von Bild-Daten in eine Datei
Wir hoffen, dass die Jobsequenzen nützlich für Ihre tägliche Modellierungsarbeit sind!
Oracle und Java sind eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften. Microsoft und Windows sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern.
Kommentare (0)