Software: FEMM - Elektrostatik - LUA-Scripting: Unterschied zwischen den Versionen

Aus OptiYummy
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<div align="center"> [[Software:_FEMM_-_Elektrostatik_-_Open_Boundary_Problems|<<~]] [[Software:_FEMM_-_Elektrostatik_-_LUA-Scripting|~>>]] </div>
[[Software:_FEM_-_Tutorial_-_Elektrostatik|&uarr;]] <div align="center"> [[Software:_FEMM_-_Elektrostatik_-_Open_Boundary_Problems|&larr;]] [[Software:_FEMM_-_Elektrostatik_-_Modellscript|&rarr;]] </div>
[[Software:_FEMM_-_Elektrostatik|'''^''']]
<div align="center"> '''Scriptsprachen für FEM (LUA in FEMM)''' </div>


Bisher haben wir unsere FEM-Modelle mit Hilfe der vom FEM-System bereitgestellten grafischen Oberfläche entwickelt, simuliert und die Simulationsergebnisse ausgewertet. Solche grafischen Oberflächen ([http://de.wikipedia.org/wiki/GUI '''GUI'''] = '''G'''raphical '''U'''ser '''I'''nterface) ermöglichen dem Anfänger einen relativ schnellen Einstieg in die Nutzung der Finite-Element-Methode.
Bisher haben wir unsere FEM-Modelle mit Hilfe der vom FEM-System bereitgestellten grafischen Oberfläche entwickelt, simuliert und die Simulationsergebnisse ausgewertet. Solche grafischen Oberflächen ([https://de.wikipedia.org/wiki/GUI '''GUI'''] = '''G'''raphical '''U'''ser '''I'''nterface) ermöglichen dem Anfänger einen relativ schnellen Einstieg in die Nutzung der Finite-Element-Methode.


Nun bieten aber alle modernen FEM-Systeme auch eine [http://de.wikipedia.org/wiki/Skriptsprache '''Scriptsprache'''], welche man in Ergänzung oder auch als vollständigen Ersatz für die grafische Oberfläche verwenden kann. Über die Scriptsprache wird normaler Weise für jede Funktion der grafischen Oberfläche ein Script-Befehl zur Verfügung gestellt, z.B. im Programm FEMM:
Alle modernen FEM-Systeme besitzen auch eine [https://de.wikipedia.org/wiki/Skriptsprache '''Scriptsprache'''], welche man in Ergänzung oder auch als vollständigen Ersatz für die grafische Oberfläche verwenden kann. Über die Scriptsprache wird normaler Weise für jede Funktion der grafischen Oberfläche ein Script-Befehl zur Verfügung gestellt, z.B. im Programm FEMM:
* open("filename")  = Öffnen einer Datei  
* open("filename")  = Öffnen einer Datei  
* ei_addnode(x,y) = Neuer Knoten auf x,y  
* ei_addnode(x,y) = Neuer Knoten auf x,y  
Zeile 11: Zeile 11:
* ...  
* ...  


Das Programm FEMM nutzt als Grundlage die [http://de.wikipedia.org/wiki/Lua '''LUA-Scriptsprache'''] in der [http://www.lua.org/manual/4.0/ '''Version 4.0''']. Der LUA-Interpreter ist in das Programm FEMM integriert und wirkt auf folgende Inhalte: [[Bild:Software_FEMM_-_Elektrostatik_-_LUA-Scripting_im_dialogfeld.gif|right]]
Das Programm FEMM nutzt als Grundlage die [https://de.wikipedia.org/wiki/Lua '''LUA-Scriptsprache'''] in der [https://www.lua.org/manual/4.0/ '''Version 4.0''']. Der LUA-Interpreter ist in das Programm FEMM integriert und wirkt auf folgende Inhalte: [[Bild:Software_FEMM_-_Elektrostatik_-_LUA-Scripting_im_dialogfeld.gif|right]]


* '''Eingabefelder:'''
* '''Eingabefelder:'''
Zeile 17: Zeile 17:
** Das Ergebnis des Ausdrucks ist der Zahlenwert der Eingabe.  
** Das Ergebnis des Ausdrucks ist der Zahlenwert der Eingabe.  


* '''LUA-Console:''' <div align="center">[[Bild:Software_FEMM_-_Elektrostatik_-_LUA-Scripting_in_lua-console.gif]]</div>
* '''LUA-Konsole:''' <div align="center">[[Bild:Software_FEMM_-_Elektrostatik_-_LUA-Scripting_in_lua-console.gif]]</div>
** Diese Konsole kann man über '''''View - LUA-Console''''' im FEMM öffnen.  
** Diese Konsole kann man über '''''View > LUA-Console''''' im FEMM öffnen.  
** Im unteren Input-Feld kann man Script-Ausdrücke eingeben.  
** Im unteren Input-Feld kann man Script-Ausdrücke eingeben.  
** Diese werden nach Betätigen von Evaluate ausgeführt.  
** Diese werden nach Betätigen von Evaluate ausgeführt.  
Zeile 27: Zeile 27:


* '''LUA-Textdatei:'''
* '''LUA-Textdatei:'''
** Eine Textdatei, welche  ein LUA-Script enthält, kann man über File - Open Lua Script aktivieren: <div align="center">[[Bild:Software_FEMM_-_Elektrostatik_-_LUA-Scripting_in_datei_example.gif]]</div>
** Eine Textdatei, welche  ein LUA-Script enthält, kann man über '''''File > Open Lua Script''''' aktivieren: <div align="center">[[Bild:Software_FEMM_-_Elektrostatik_-_LUA-Scripting_in_datei_example.gif]]</div>
** '''''Hinweis''''': Wer keine Schreibrechte im FEMM-Programm-Ordner besitzt, muss die beiden Dateien "Roters-Ch9Fig6.fem" und "Force-vs-Position.lua" vor dem Öffnen dieses Script-Beispiels in einen anderen Ordner kopieren!  
** '''''Hinweis''''': Wer keine Schreibrechte im FEMM-Programm-Ordner besitzt, muss die beiden Dateien "Roters-Ch9Fig6.fem" und "Force-vs-Position.lua" vor dem Öffnen dieses Script-Beispiels in einen anderen Ordner kopieren!  
** Die Anweisungen dieses Scripts werden nach dem Öffnen der Datei ausgeführt.  
** Die Anweisungen dieses Scripts werden nach dem Öffnen der Datei ausgeführt.  
** Wie von Geisterhand gesteuert laufen Modellbildung, Simulation und Ergebnisdarstellung im Programm-Fenster ab.  
** Wie von Geisterhand gesteuert laufen Modellbildung, Simulation und Ergebnisdarstellung im Programm-Fenster ab.  
** Im Output-Feld der LUA-Console werden im Beispiel die Werte der Magnetkraft als Funktion der Rotorposition aufgelistet.  
** Im Output-Feld der LUA-Konsole werden im Beispiel die Werte der Magnetkraft als Funktion der Rotorposition aufgelistet.  




[[Bild:Memo_stempel.gif|right]]
[[Bild:Memo_stempel.gif|right]]
<p style="color:green;">In einem FEM-Systems ist der gesamte Umfang der verwendeten Scriptsprache verfügbar: </p>
<p style="color:green;">Ist in einem FEM-Systems der gesamte Umfang der verwendeten Scriptsprache (z.B. von LUA) verfügbar, so eröffnen sich vielfältige Möglichkeiten: </p>
* <p style="color:green;">Die konstruktiven Parameter (Geometrie und Stoff) können damit direkt als Parameter des Finite Element Modells definiert werden.</p>  
* <p style="color:green;">Die konstruktiven Parameter (Geometrie und Stoff) können damit direkt als Parameter des Finite Element Modells definiert werden.</p>  
* <p style="color:green;">Durch mathematische Verknüpfung können aus den konstruktiven Parameter alle erforderlichen Werte für das Finite Element Modell berechnet werden.</p>  
* <p style="color:green;">Durch mathematische Verknüpfung können aus den konstruktiven Parameter alle erforderlichen Werte für das Finite Element Modell berechnet werden.</p>  
Zeile 88: Zeile 88:
* Selektieren von geometrischen Elementen in der Ergebnisdatei  
* Selektieren von geometrischen Elementen in der Ergebnisdatei  
* Zoom der Ansicht  
* Zoom der Ansicht  
* Konfiguration der Ergebnisdarstsellung
* Konfiguration der Ergebnisdarstellung
* Diverse Hilfsfunktionen  
* Diverse Hilfsfunktionen  


Zeile 95: Zeile 95:
* Man benötigt zusätzlich noch Ausdrücke der eigentlichen LUA-Sprache, um z.B. Prozesse mit bedingten Verzweigungen oder Schleifen zu beschreiben.  
* Man benötigt zusätzlich noch Ausdrücke der eigentlichen LUA-Sprache, um z.B. Prozesse mit bedingten Verzweigungen oder Schleifen zu beschreiben.  
* Um Abhängigkeiten zwischen den Modellparametern zu definieren, benötigt man außerdem mathematische Operatoren und Funktionen der LUA-Sprache.  
* Um Abhängigkeiten zwischen den Modellparametern zu definieren, benötigt man außerdem mathematische Operatoren und Funktionen der LUA-Sprache.  
* In Hinblick auf FEMM muss man hierbei die [http://www.lua.org/manual/4.0/ '''Version 4.0'''] der LUA-Sprache benutzen.  
* In Hinblick auf FEMM muss man hierbei die [https://www.lua.org/manual/4.0/ '''Version 4.0'''] der LUA-Sprache benutzen.  




Zeile 119: Zeile 119:




<div align="center"> [[Software:_FEMM_-_Elektrostatik_-_Open_Boundary_Problems|<<~]] [[Software:_FEMM_-_Elektrostatik_-_LUA-Scripting|~>>]] </div>
<div align="center"> [[Software:_FEMM_-_Elektrostatik_-_Open_Boundary_Problems|&larr;]] [[Software:_FEMM_-_Elektrostatik_-_Modellscript|&rarr;]] </div>

Aktuelle Version vom 18. Mai 2021, 09:51 Uhr

Scriptsprachen für FEM (LUA in FEMM)

Bisher haben wir unsere FEM-Modelle mit Hilfe der vom FEM-System bereitgestellten grafischen Oberfläche entwickelt, simuliert und die Simulationsergebnisse ausgewertet. Solche grafischen Oberflächen (GUI = Graphical User Interface) ermöglichen dem Anfänger einen relativ schnellen Einstieg in die Nutzung der Finite-Element-Methode.

Alle modernen FEM-Systeme besitzen auch eine Scriptsprache, welche man in Ergänzung oder auch als vollständigen Ersatz für die grafische Oberfläche verwenden kann. Über die Scriptsprache wird normaler Weise für jede Funktion der grafischen Oberfläche ein Script-Befehl zur Verfügung gestellt, z.B. im Programm FEMM:

  • open("filename") = Öffnen einer Datei
  • ei_addnode(x,y) = Neuer Knoten auf x,y
  • ei_selectnode(x,y) = Selektiert den Knoten, der x,y am nächsten liegt
  • ei_deleteselectednodes = Löscht alle selektierten Knoten
  • ...

Das Programm FEMM nutzt als Grundlage die LUA-Scriptsprache in der Version 4.0. Der LUA-Interpreter ist in das Programm FEMM integriert und wirkt auf folgende Inhalte:

Software FEMM - Elektrostatik - LUA-Scripting im dialogfeld.gif
  • Eingabefelder:
    • Beim Schließen des zugehörigen Dialogfensters werden die Ausdrücke als LUA-Script interpretiert.
    • Das Ergebnis des Ausdrucks ist der Zahlenwert der Eingabe.
  • LUA-Konsole:
    Software FEMM - Elektrostatik - LUA-Scripting in lua-console.gif
    • Diese Konsole kann man über View > LUA-Console im FEMM öffnen.
    • Im unteren Input-Feld kann man Script-Ausdrücke eingeben.
    • Diese werden nach Betätigen von Evaluate ausgeführt.
    • Die Wirkung der Befehle kann man am Modell sofort sehen.
    • Bei Bedarf erscheint eine Fehlermeldung.
    • Bereits ausgeführte Ausdrücke erscheinen im oberen Output-Feld.
    • Damit kann man Schritt für Schritt ein Script entwickeln, welches man in einer LUA-Textdatei speichert (Kopieren über Zwischenablage).
  • LUA-Textdatei:
    • Eine Textdatei, welche ein LUA-Script enthält, kann man über File > Open Lua Script aktivieren:
      Software FEMM - Elektrostatik - LUA-Scripting in datei example.gif
    • Hinweis: Wer keine Schreibrechte im FEMM-Programm-Ordner besitzt, muss die beiden Dateien "Roters-Ch9Fig6.fem" und "Force-vs-Position.lua" vor dem Öffnen dieses Script-Beispiels in einen anderen Ordner kopieren!
    • Die Anweisungen dieses Scripts werden nach dem Öffnen der Datei ausgeführt.
    • Wie von Geisterhand gesteuert laufen Modellbildung, Simulation und Ergebnisdarstellung im Programm-Fenster ab.
    • Im Output-Feld der LUA-Konsole werden im Beispiel die Werte der Magnetkraft als Funktion der Rotorposition aufgelistet.


Memo stempel.gif

Ist in einem FEM-Systems der gesamte Umfang der verwendeten Scriptsprache (z.B. von LUA) verfügbar, so eröffnen sich vielfältige Möglichkeiten:

  • Die konstruktiven Parameter (Geometrie und Stoff) können damit direkt als Parameter des Finite Element Modells definiert werden.

  • Durch mathematische Verknüpfung können aus den konstruktiven Parameter alle erforderlichen Werte für das Finite Element Modell berechnet werden.

  • Auf Basis einer Folge von Anweisungen der Scriptsprache unter Einbeziehung bedingter Verzweigungen oder Schleifen kann man den FEM-Prozess freizügig automatisieren.


LUA-Syntax im Programm FEMM

Im Kapitel 3 der FEMM-Hilfe (manual.pdf) sind die speziellen FEMM-Erweiterungen der LUA-Scriptsprache beschrieben.


1. Allgemeine Funktionen

Diese wirken unabhängig von der konkreten physikalischen Domäne des bearbeiteten Problems, z.B.:

  • clearconsole()
  • newdocument(doctype)
  • hideconsole()
  • hidepointprops()
  • messagebox("message")
  • open("filename")
  • pause()
  • print()
  • prompt("message")
  • quit()


2. Domänenbezogene Funktionen

Sind gekennzeichnet durch 2 Zeichen vor dem Funktionsnamen (uv_function) mit:

  • u = magnetic | electrostatic | current flow | heat flow
  • v = input (Preprocessor) | output (Postprocessor)


Die Funktionen für den Preprocessors wirken auf die Modelldatei der jeweiligen Domäne (fem/fee/fec/feh):

  • Definition des Problems
  • Hinzufügen/Löschen von Objekten
  • Editieren von Objekten
  • Bearbeiten von Objekteigenschaften
  • Selektieren von Geometrie
  • Labeling von Objekten
  • Erzeugen/Löschen des Netzes
  • Zoom der Ansicht
  • Sichtbarkeit Fenster/Raster
  • Diverse Hilfsfunktionen


Die Funktionen für den Postprocessor wirken auf die zum Modell gehörenden Ergebnisdateien (ans/res/anc/anh):

  • Datenextraktion
  • Selektieren von geometrischen Elementen in der Ergebnisdatei
  • Zoom der Ansicht
  • Konfiguration der Ergebnisdarstellung
  • Diverse Hilfsfunktionen


Mit diesen Funktionen kann man sämtliche Möglichkeiten der grafischen Bedienoberfläche in Form von LUA-Funktionsaufrufen nachempfinden:

  • Man benötigt zusätzlich noch Ausdrücke der eigentlichen LUA-Sprache, um z.B. Prozesse mit bedingten Verzweigungen oder Schleifen zu beschreiben.
  • Um Abhängigkeiten zwischen den Modellparametern zu definieren, benötigt man außerdem mathematische Operatoren und Funktionen der LUA-Sprache.
  • In Hinblick auf FEMM muss man hierbei die Version 4.0 der LUA-Sprache benutzen.


Nicht im Handbuch beschrieben sind die zusätzlich vordefinierten Naturkonstanten und Maßeinheiten. Man findet diese Definitionen für das Programm FEMM in der Datei ..\Programme\femm42\bin\init.lua :

  • PI = 3,14159... (Kreiszahl π - auch Pi oder pi )
  • uo = PI*4.e-7 = 1.2566E-6 (µo magn. Feldkonstante)
  • eo = 8.85418781762e-12 (εo elektrische Feldkonstante)
  • meter = 1 (auch meters ; Meter ; Meters )
  • cm = 0.01 (auch centimeter ; centimeters ; Centimeters ; Centimeter )
  • mm = 0.001 (auch millimeters ; millimeter ; Millimeter ; Millimeters ; milimeter ; milimeters )
  • um = 0.000001 (auch micrometer ; Micrometer ; micrometers ; Micrometers ; micron ; Micron ; microns ; Microns )
  • inch = 0.0254 (Zoll=2.54 cm) (auch inches ; Inch ; Inches ; in )
  • mil = 0.001*inch (auch mils ; Mils ; Mil )
  • Tesla = 1
  • mTesla = 0.001
  • Gauss = 0.0001
  • kGauss = 0.1
  • AmpMeter = 1
  • kAmpMeter = 1000
  • Oersted = 250/PI
  • kOersted = 1000*Oersted