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

Aus OptiYummy
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(14 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:
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:'''
** 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:''' <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.
** 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: <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!
** 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.


Beim Schließen des zugehörigen Dialogfensters werden die Ausdrücke als LUA-Script interpretiert.


Das Ergebnis des Ausdrucks ist der Zahlenwert der Eingabe.  
[[Bild:Memo_stempel.gif|right]]
<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;">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;">Auf Basis einer Folge von Anweisungen der Scriptsprache unter Einbeziehung bedingter Verzweigungen oder Schleifen kann man den FEM-Prozess freizügig automatisieren.</p>


LUA-Console:
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.
LUA-Textdatei:
Eine Textdatei, welche  ein LUA-Script enthält, kann man über File - Open Lua Script aktivieren:
Hinweis:
Wer keine Schreibrechte im FEMM-Programm-Ordner besitzt, muss die beiden Dateien
Roters-Ch9Fig6.fem
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-Console werden im Beispiel die Werte der Magnetkraft als Funktion der Rotorposition aufgelistet.
Innerhalb eines FEM-Systems steht der gesamte Umfang der verwendeten Scriptsprache zur Verfügung:
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:


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


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


Allgemeine Funktionen
'''1. Allgemeine Funktionen'''


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


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


Domänenbezogene Funktionen


gekennzeichnet durch 2 Zeichen vor dem Funktionsnamen (uv_function) mit:
'''2. Domänenbezogene Funktionen'''


u = magnetic | electrostatic | current flow | heat flow  
Sind gekennzeichnet durch 2 Zeichen vor dem Funktionsnamen ('''uv'''_function) mit:
* '''u''' = '''m'''agnetic | '''e'''lectrostatic | '''c'''urrent flow | '''h'''eat flow  
* '''v''' = '''i'''nput (Preprocessor) | '''o'''utput (Postprocessor)


v = input (Preprocessor) | output (Postprocessor)


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


Definition des Problems  
* Definition des Problems  
 
* Hinzufügen/Löschen von Objekten  
Hinzufügen/Löschen von Objekten  
* Editieren von Objekten  
 
* Bearbeiten von Objekteigenschaften  
Editieren von Objekten  
* Selektieren von Geometrie  
 
* Labeling von Objekten  
Bearbeiten von Objekteigenschaften  
* Erzeugen/Löschen des Netzes  
 
* Zoom der Ansicht
Selektieren von Geometrie  
* Sichtbarkeit Fenster/Raster
 
* Diverse Hilfsfunktionen
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):
Die Funktionen für den Postprocessor wirken auf die zum Modell gehörenden Ergebnisdateien (ans/res/anc/anh):


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


Selektieren von geometrischen Elementen in der Ergebnisdatei
Zoom der Ansicht
Konfiguration der Ergebnisdarstsellung
Diverse Hilfsfunktionen


Mit diesen Funktionen kann man sämtliche Möglichkeiten der grafischen Bedienoberfläche in Form von LUA-Funktionsaufrufen nachempfinden:
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 [https://www.lua.org/manual/4.0/ '''Version 4.0'''] der LUA-Sprache benutzen.


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
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 (µ<sub>o</sub> 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&nbsp;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




<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