Beim Erstellen von Multiphysikmodellen und Simulations-Apps ermöglicht es die COMSOL API, Code zu schreiben, um Arbeitsabläufe zu automatisieren, benutzerdefinierte Funktionen in Apps hinzuzufügen und sie in externe Tools zu integrieren. Die in COMSOL Multiphysics® Version 6.3 eingeführte Chatbot-Funktion verbindet Sie direkt mit OpenAI™ GPT-Modellen, sodass Sie COMSOL API Code generieren oder debuggen können. Dies kann beispielsweise dabei helfen, sich wiederholende Aufgaben in for-Schleifen umzuwandeln oder Logikfehler in einer Methode zu finden. Sie können das Chatbot-Fenster auch verwenden, um allgemeine Tipps zur Modellierung zu erhalten.
In diesem Blog-Beitrag werden wir einige einfache Beispiele durchgehen, die veranschaulichen, wie diese neue Funktion als nützlicher Modellierungsassistent dienen kann.
Verwendung des Chatbot-Fensters in Verbindung mit dem Java-Shell-Fenster
Das Chatbot-Fenster wurde für die praktische Verwendung in COMSOL Multiphysics® optimiert. Es bietet spezifische Informationen zur Modellierung und Simulation, sodass das Kopieren und Einfügen von Nachrichten aus externen KI-Tools entfällt. Stattdessen können Sie ganz einfach Methoden anhängen, um sie auf Fehler zu überprüfen oder vom KI-Modell vorgeschlagenen API-Code auszuführen. Die Ergebnisse werden sofort im Model Builder und im Grafikfenster angezeigt.
Das ebenfalls in Version 6.3 eingeführte Java-Shell-Fenster bietet ein Command Prompt zum interaktiven Ausführen von Java Code. Sie können das Java-Shell-Fenster verwenden, um im Chatbot-Fenster generierten Code auszuführen. In den folgenden Beispielen zeigen wir Ihnen, wie das geht.
Wenn Sie mehr über die Verwendung der COMSOL API und des Java-Shell-Fensters erfahren möchten, lesen Sie bitte den Abschnitt “Running Code in the Java Shell Window” des Artikels Overview of the COMSOL API im Learning Center.
Schritt 1: Aktivieren des Chatbot-Fensters
Das Chatbot-Fenster ist für die Windows®-Version von COMSOL Multiphysics® verfügbar. Es ist im Plattformprodukt enthalten, wird jedoch nicht standardmäßig installiert. (Anweisungen zur Installation und Einrichtung des Chatbot-Fensters finden Sie in diesem Learning-Center-Artikel.)
Beachten Sie:
- Um die Funktionen des Chatbot-Fensters nutzen zu können, müssen Sie sich für ein OpenAI-Konto registrieren und einen OpenAI-API-Schlüssel anfordern, wofür in der Regel ein Kostenbeitrag erforderlich ist. Derzeit werden die großen Sprachmodelle (LLMs) OpenAI™ und Azure® OpenAI™ GPT-4 unterstützt.
- Das eigentliche LLM ist nicht in COMSOL Multiphysics® installiert — das Chatbot-Fenster dient lediglich der Erleichterung der Kommunikation mit dem LLM.
Demos: Verwendung des Chatbot-Fensters zur:
- Erstellung einer Geometrie,
- Generierung von Beschriftungen,
- Fehlersuche im Code,
- Beantwortung von Fragen und
- Fehlersuche im Modellaufbau.
Erstellung einer Geometrie
Grundkenntnisse in Java können bei der Arbeit mit der COMSOL API hilfreich sein. Bei Verwendung des Chatbot-Fensters sind diese jedoch häufig nicht erforderlich, da es Funktionen enthält, die bei der Java-Syntax und der Codestruktur unterstützen.
Sehen wir uns zunächst an, wie uns das Chatbot-Fenster beim Erstellen einer Zylindergeometrie helfen kann. Klicken Sie zunächst auf die Schaltfläche Blank Model, mit der Sie alle Aspekte des Modells mithilfe der API von Grund auf erstellen können.
Öffnen Sie anschließend das Chatbot-Fenster: Wechseln Sie im Tab Home zum Menü Windows und wählen Sie Chatbot.
Das Chatbot-Fenster wird im unteren rechten Bereich der Desktop-Umgebung geöffnet.
Im Chatbot-Fenster stehen drei Optionen für Chat-Themen zur Verfügung: General, Programming, und Modeling. Wählen Sie für dieses Beispiel Programming aus.
Schreiben Sie jetzt den Prompt Create a geometry of a cylinder.
Dadurch wird Code zum Erstellen eines Zylinders mit beliebigem Radius und beliebiger Höhe generiert, jedoch wird der Code nicht ausgeführt. Um den Code auszuführen, müssen Sie ihn an das Java-Shell-Fenster senden.
Klicken Sie mit der rechten Maustaste auf den Code-Block und wählen Sie Send to Java Shell.
Das Java-Shell-Fenster wird mit einer Kopie desselben Codeblocks geöffnet.
Klicken Sie auf die Schaltfläche Run unten im Java-Shell-Fenster, um den Zylinder zu generieren.
Im hier gezeigten Beispiel wurde der folgende Code generiert:
// Create a 3D geometry
model.geom().create("geom", 3);
// Add a cylinder to the geometry
model.geom("geom").feature().create("cyl", "Cylinder");
// Set cylinder properties: radius and height
model.geom("geom").feature("cyl").set("r", 1); // radius
model.geom("geom").feature("cyl").set("h", 5); // height
// Build the geometry
model.geom("geom").run();
Bitte beachten Sie jedoch, dass das Chatbot-Fenster aufgrund einer geringen Zufälligkeit in seinen Antworten jedes Mal leicht unterschiedliche Varianten des Codes erzeugen kann.
Generierung von Beschriftungen
Das KI-Modell, mit dem die Chatbot-Funktionalität kommuniziert, versteht nicht alle Aspekte der COMSOL API. Durch die Verwendung der Funktionen Record Code oder Record Method im Application Builder können wir es jedoch dazu anleiten, nützliche Code-Vorschläge zu erstellen. Im folgenden Beispiel erfahren Sie, wie Sie einem Modell Beschriftungen hinzufügen und darauf aufbauen können, indem Sie das Chatbot-Fenster um Hilfe bitten. Öffnen Sie zunächst das Tutorial-Modell Pacemaker Electrode aus den Application Libraries unter COMSOL Multiphysics > Electromagnetics.
Falls das Modell noch nicht berechnet wurde, klicken Sie bitte auf Compute. Die Berechnung dauert einige Sekunden.
Als Nächstes werden wir die integrierte Codeaufzeichnungsfunktion verwenden, um zu lernen, wie man eine Beschriftung hinzufügt. Gehen Sie in der Menüleiste zum Tab Developer und klicken Sie auf Record Method, um die Aufzeichnung zu starten.
Sie werden aufgefordert, die Aufzeichnung als method1 zu speichern, was für unsere Zwecke ausreichend ist. Sie können diese Methode nach Belieben umbenennen. Der Model Builder ist nun rot umrandet, um anzuzeigen, dass eine Aufzeichnung läuft.
Klicken Sie im Modellbaum mit der rechten Maustaste auf 3D Plot Group 3 und wählen Sie Annotation.
Geben Sie im Einstellungsfenster für den Knoten Annotation im Feld Text eval(V) ein. Dadurch wird der lokale Wert des elektrischen Potentialfeldes berechnet und angezeigt. Geben Sie anschließend für die Einstellungen unter Position die Werte 0.001, 0.002 und 0.003 für die x-, y- und z-Koordinaten ein.
Klicken Sie auf die Schaltfläche Plot, um die Beschriftung zu erstellen.
Gehen Sie zum Tab Developer und klicken Sie auf Stop Recording.
Klicken Sie nun auf die Schaltfläche Application Builder und doppelklicken Sie im Baum den Knoten method1. Dadurch wird der aufgezeichnete Code im Method Editor angezeigt.
Kopieren Sie diesen Code und wechseln Sie zurück zum Model Builder.
Bevor Sie das Chatbot-Fenster zum automatischen Erstellen von Annotation-Knoten verwenden, müssen Sie den soeben erstellten Annotation-Knoten löschen, um Konflikte zu vermeiden. Klicken Sie im Modellbaum mit der rechten Maustaste auf den Annotation-Knoten und wählen Sie Delete.
Wählen Sie jetzt im Chatbot-Fenster die Option Programming aus und geben Sie die folgenden Anweisungen ein, indem Sie den Code einfügen, den Sie aus dem Methoden-Editor kopiert haben:
This is how you create an annotation in COMSOL Multiphysics:
model.result(“pg3”).create(“ann1”, “Annotation”);
model.result(“pg3”).feature(“ann1”).set(“posxexpr”, 0.001);
model.result(“pg3”).feature(“ann1”).set(“posyexpr”, 0.002);
model.result(“pg3”).feature(“ann1”).set(“poszexpr”, 0.003);
model.result(“pg3”).feature(“ann1”).set(“text”, “eval(V)”);
Can you create a for loop that places these annotations at 10 locations along a line from (x,y,z)=(0,0,-0.02) to (x,y,z)=(0,0,0).
Drücken Sie die Eingabetaste oder klicken Sie auf die Schaltfläche Submit.
Klicken Sie mit der rechten Maustaste auf den Bereich mit dem generierten Code und wählen Sie Send to Java Shell.
Klicken Sie im Java-Shell-Fenster auf Run, um die Beschriftungen zu plotten.
Versuchen wir nun etwas Fortgeschritteneres. Beginnen Sie damit, alle generierten Annotation-Knoten zu löschen. Halten Sie dazu die Umschalttaste gedrückt, um mehrere Knoten auszuwählen, klicken Sie dann mit der rechten Maustaste und wählen Sie im Kontextmenü die Option Delete.
Öffnen Sie das Chatbot-Fenster und geben Sie folgenden Prompt ein:
Instead, create annotations in a helix pattern centered along the same line with helix radius 0.0025.
Bitte klicken Sie auf die Schaltfläche Submit oder drücken Sie die Eingabetaste.
Wiederholen Sie nun den zuvor beschriebenen Vorgang. Klicken Sie mit der rechten Maustaste auf den generierten Code, senden Sie ihn an das Java-Shell-Fenster und klicken Sie auf Run, um die Beschriftungen hinzuzufügen.
Als Nächstes erhöhen wir die Dichte des Beschriftungsmusters. Löschen Sie zunächst die 10 erstellten Annotation-Knoten. Verwenden Sie dann das folgende Prompt im Chatbot-Fenster:
Now, make the frequency twice as high and create 20 annotations.
Klicken Sie erneut mit der rechten Maustaste auf den generierten Code und senden Sie ihn an das Java-Shell-Fenster:
Klicken Sie auf Run, um die Beschriftungen darzustellen.
Diese Beispiele vermitteln Ihnen einen Einblick, wie die Chatbot-Funktionalität genutzt werden kann, um komplexe Automatisierungsaufgaben sehr schnell zu lösen. Durch die Kombination von Record Method (oder Record Code) und Prompts im Chatbot-Fenster können Sie die Antworten des Chatbots steuern, um die Komplexität Ihres Codes schnell aufzubauen. Bei wiederholter Verwendung desselben Codes können Sie anstelle des Java-Shell-Fensters den Code in eine Methode im Method Editor eingeben. Wir hätten übrigens auch das Löschen der Annotation-Knoten aufzeichnen und diesen Teil des Prozesses ebenfalls automatisieren können.
Fehlersuche im Code
Eine weitere Anwendungsmöglichkeit der Chatbot-Funktion besteht darin, subtile Fehler in Ihrem Code zu finden, die über einfache Syntaxfehler hinausgehen. Um dies zu veranschaulichen, verwenden wir die App Tuning Fork aus den Application Libraries, die Sie unter COMSOL Multiphysics > Applications finden. Für diese Tutorial-App sind keine Add-On-Produkte erforderlich.
Wechseln Sie zum Application Builder und doppelklicken Sie im Zweig Methods auf die Methode setMaterial.
Um Syntaxfehler zu finden, können Sie auf die Schaltfläche Check Syntax im Tab Method klicken. Diese Funktion nutzt nicht das Chatbot-Fenster, sondern ist eine Überprüfung auf Compiler-Ebene. Mithilfe des integrierten Java-Compilers kompiliert der Method Editor automatisch eine Methode, wenn Sie beispielsweise ein Fenster verlassen oder Ihre App oder Ihr Modell speichern.
Um Fehler im Code zu finden, die nicht mit der Syntax zusammenhängen, kann das Chatbot-Fenster hilfreich sein.
Führen wir einen Fehler in den Code ein, um zu veranschaulichen, wie diese Funktionalität genutzt werden kann. Ersetzen Sie in der Methode setMaterial den Verweis auf das Material mat4 durch mat3. Wenn der Benutzer nun das Material Eisen mit dem Tag „mat4“ auswählt, verwendet die App stattdessen die Materialeigenschaften für Kupfer mit dem Tag „mat3“.
Die Methode ist nun mit dem vordefinierten Prompt I need help finding potential bugs in setMaterial, ignoring any code style issues an das Chatbot-Fenster angehängt. (Die beiden anderen Optionen im Untermenü Send to Chatbot, Conversation About setMaterial und Suggest Improvements to setMaterial, verfügen über unterschiedliche vordefinierte Prompts.)
Drücken Sie die Eingabetaste oder klicken Sie auf die Schaltfläche Submit.
Das Chatbot-Fenster erkennt den Fehler und gibt die folgende Meldung aus:
**Duplicate Material Selection for Copper and Iron:**
– Both “copper” and “iron” are setting the selection for `mat3`. This might be intentional, but if different materials are expected, this is a bug.
Es weist auch auf zwei weitere potenzielle Probleme hin. In diesem Fall handelt es sich jedoch um einen Fehlalarm, da dem Chatbot-Fenster nicht alle Informationen über die anderen Methoden und Funktionen der App zur Verfügung standen.
In diesem Fall war der Fehler ohne die Unterstützung des Chatbot-Fensters relativ leicht zu erkennen. Stellen Sie sich jedoch vor, die App würde statt nur fünf Materialien 40 oder 50 Materialien unterstützen. In solchen Fällen kann die Verwendung des Chatbot-Fensters bei der Arbeit mit längeren Codeblöcken den Debugging-Prozess erheblich beschleunigen.
Sie können auch im Chatbot-Fenster nach Tipps zur Modellierung fragen. Nehmen wir an, wir sind neu auf dem Gebiet der elektrostatischen Modellierung und interessieren uns dafür, welche Randbedingungen für solche Modelle wichtig sind. Wählen Sie dazu im Chatbot-Fenster die Themenoption Modeling aus. Geben Sie folgendes Prompt an:
Which are some of the most important boundary conditions for electrostatics?
Das Chatbot-Fenster liefert eine ziemlich gute Antwort. Beachten Sie jedoch, dass dort die “Mixed Boundary Condition” erwähnt wird. Diese Randbedingung ist zwar in der COMSOL® Software verfügbar, erfordert jedoch das AC/DC Module und hat einen anderen Namen: Distributed Capacitance.
Im Allgemeinen kann das Chatbot-Fenster einen hilfreichen Ausgangspunkt für einführende Fragen zur Modellierung bieten. Für anspruchsvollere Themen empfiehlt es sich jedoch, zusätzlich die COMSOL-Dokumentation (auch in der Software über das Fenster Help verfügbar) und relevante Fachbücher zu diesem Thema zu konsultieren. Wenn Sie anstelle von Programming oder Modeling die Themenoption General auswählen, können Sie Fragen zu beliebigen Themen stellen, auch zu solchen, die nicht mit COMSOL Multiphysics® in Zusammenhang stehen.
Fehlersuche im Modellaufbau
Sie können das Chatbot-Fenster auch verwenden, um einfache Fehler in Ihrer Modellierungskonfiguration zu finden. Die Chatbot-Funktionalität versteht zwar nicht alle Aspekte der Modellierung und Simulation, kann aber dennoch hilfreich sein. Beispielsweise kann sie Tippfehler in Ausdrücken identifizieren, die im Model Builder verwendet werden.
Um dies zu testen, öffnen Sie das Tutorial-Modell Laser Heating of a Silicon Wafer aus den Application Libraries unter COMSOL Multiphysics > Heat Transfer. Dieses Modell, das eine transiente Simulation eines Lasers zeigt, der über einen Siliziumwafer bewegt wird, erfordert keine Add-On-Produkte.
Führen wir nun einen künstlichen Tippfehler in eine der Variablendefinitionen ein. Der Ausdruck, der den Abstand vom Brennpunkt definiert, lautet korrekt:
sqrt((x-x_focus)^2+(y-y_focus)^2)
Wir werden dies in den folgenden falschen Ausdruck ändern, in dem der zweite Term x_focus anstelle von y_focus enthält:
sqrt((x-x_focus)^2+(y-x_focus)^2)
Speichern Sie die Datei, indem Sie im Menü File die Option Save As und anschließend die Option Model File for Java (.java) auswählen.
Dadurch wird eine Textdatei mit der Erweiterung .java erstellt, die zu einer Java .class-Datei kompiliert werden kann, um als eigenständige Java Komponente verwendet zu werden. Bei diesem Ansatz wird COMSOL Multiphysics® ohne die COMSOL Desktop® Benutzeroberfläche ausgeführt. Die .java-Datei enthält die gesamte Modellkonfiguration über API-Code. In diesem Fall verwenden wir die Datei jedoch ausschließlich, um potenzielle Probleme in der Modellkonfiguration zu identifizieren. (Die Verwendung dieser Funktion hat nichts mit der Kompilierung von Apps mit COMSOL Compiler™ zu tun.)
Öffnen Sie die .java-Datei in einem beliebigen Texteditor, kopieren Sie den Code und fügen Sie ihn in das Chatbot-Fenster ein, indem Sie ein Prompt wie das folgende verwenden:
Can you find any errors in this model:
Das erste Problem, auf das das Chatbot-Fenster hinweist, ist der Tippfehler, den wir gerade eingeführt haben:
1. **Duplicate Variable Definition**: The variable `r_focus` is defined twice with different expressions. The first definition is correct:
“`java
model.component(“comp1”).variable(“var1”).set(“r_focus”, “sqrt((x-x_focus)^2+(y-y_focus)^2)”);
“`
The second definition at the end of the method seems incorrect:
“`java
model.component(“comp1”).variable(“var1”).set(“r_focus”, “sqrt((x-x_focus)^2+(y-x_focus)^2)”);
“`
Ensure you use the correct expression for `r_focus`.
Diese Art der Fehlerbehebung kann hilfreich sein, um kleinere Fehler in Ihrer Modellkonfiguration zu erkennen. Bei komplexeren Modellen empfiehlt es sich, Redundanzen zu entfernen und den Code zu vereinfachen, bevor Sie das Modell als .java-Datei speichern. Dazu können Sie den Verlauf komprimieren, sodass die Datei nur die aktuellen Modelleinstellungen enthält (File > Compact History).
Nächste Schritte
In diesem Blog-Beitrag haben wir die Funktionen des Chatbot-Fensters anhand des Tutorial-Modells Pacemaker Electrode vorgestellt. Wenn Sie die Datei, die zur Erstellung des Beispiels verwendet wurde, selbst ausprobieren möchten, klicken Sie auf die Schaltfläche unten.
Weiterführende Literatur
Möchten Sie mehr über den Application Builder und die COMSOL API erfahren? Lesen Sie die entsprechende Dokumentation:
- Get an introduction to using the Application Builder
- Learn more about programming using the COMSOL API
Microsoft und Azure sind Marken der Microsoft-Unternehmensgruppe. OpenAI ist eine Marke von OpenAI, Inc. Oracle und Java sind eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.

Kommentare (0)