Software: FEM - Tutorial - Magnetfeld - OptiY-Datenschnittstellen

Aus OptiYummy
Zur Navigation springenZur Suche springen

Datenschnittstellen (In-/Outputfiles)
Software FEM - Tutorial - Magnetfeld - input-output-files.gif

Datenfluss über Input-/Output-Dateien

Es existieren unterschiedliche Varianten, wie ein Optimierungstool die Parameterwerte (Input) eines Modells modifizieren und auf die damit berechneten Ergebniswerte (Output) zugreifen kann. Eine sehr allgemeine und übersichtliche Methode ist die Benutzung von ASCII-Textdateien für den Input/Output eines Modells:

  • Das Optimierungstool schreibt die aktuellen Parameterwerte an die dafür vorgesehenen Stellen in eine Textdatei.
  • Aus dieser Textdatei erhält das Modell seine Werte für eine Simulationsrechnung.
  • Die berechneten Ergebnisgrößen werden nach der Simulationsrechnung wieder an definierten Stellen in eine andere Textdatei geschrieben.
  • Das Optimierungstool liest diese Ergebniswerte aus der Textdatei und verarbeitet sie je nach Experimentierziel. In unserem Beispiel würden die Ergebnisgrößen nur als Funktionsfläche in 3D-Diagrammen dargestellt.

Es ist meist besser, eine strikte Trennung zwischen Parametern (Input-File), Modell (LUA-Script) und Ergebnisgrößen (Output-File) vorzunehmen. In diesem Sinne soll das LUA-Script nun umgestaltet werden.


Input-Datei für Vorgabe-Parameter

Bisher sind die Input-Parameter Bestandteil des Modell-Scripts. Die Input-Parameter sollen als separate Textdatei gestaltet werden. Für diese Übung nennen wir die ASCII-Textdatei Eingabe_xx.txt (mit xx=Teilnehmer-Nummer).

Die Datenwerte in dieser Textdatei müssen so strukturiert werden, dass sowohl das Optimierungsprogramm als auch das Modellscript problemlos darauf zugreifen können:

dMagnet
40
hTopf
27.5
dAnker
10
lAnker
10
hDeckel
2.5
dStift
1
dWand
1
wSpule
400
dLack
0.06
sWickel
0.5
sAnker
1
sDeckel
0.01
sGleit
0.1
iSpule
1

Achtung: Die Teilnehmer-Nummer xx und die Material-Parameter kommen hier nicht in die Input-Datei, sondern bleiben Bestandteil des Modells!


Einlesen der Daten im LUA-Script

Die ursprünglichen Parameterwerte sollte man mit Standardwerten versehen und auskommentieren. Damit weiß man auch später noch, um welche Parameter es sich handelt.


Achtung: Die Teilnehmer-Nummer xx ist nicht auskommentiert!

:
-------------------------------------------------------------------------------
-- Konstruktive, technologische und Betriebs-Parameter (Standardwerte)       --
-------------------------------------------------------------------------------
   xx=00;                       -- Teilnehmer-Nr. 00 bis 30
-- dMagnet=40;                  -- Topf-Durchmesser [mm]
-- hTopf=27.5;                  -- Topf-Höhe [mm]
-- dAnker=10;                   -- Anker-Durchmesser [mm]
-- lAnker=10;                   -- Anker-Länge [mm]
-- hDeckel=2.5;                 -- Höhe des Deckels bzw. Topfbodens [mm]
-- dStift=1;                    -- Durchmesser der Bohrung [mm]
-- dWand=1;                     -- Wandstärke des Topfes [mm]
-- wSpule=400;                  -- Windungen in der Spule
-- dLack=0.06;                  -- Gesamtdicke der Drahtbeschichtung [mm]
-- sWickel=0.5;                 -- Spalt zw. Spulendraht und Eisen [mm]
-- sAnker=1;                    -- Arbeitsluftspalt [mm]
-- sDeckel=0.01;                -- Restspalt zw. Deckel und Topf [mm]
-- sGleit=0.1;                  -- Führungsluftspalt für Anker [mm] 
-- iSpule=1;                    -- Spulenstrom [A]
-- Parameter aus Textdatei einlesen mit Fehlertest
   in = openfile(mydir .. "Eingabe_xx.txt","r"); -- Datei öffnen zum Lesen
   if in then -- wenn Datei geöffnet, dann Werte einlesen
   read(in, "*l");
   dMagnet = read(in, "*l", "*n");
   read(in, "*l");
   hTopf = read(in, "*l", "*n");
   read(in, "*l");
   dAnker = read(in, "*l", "*n");
   read(in, "*l");
   lAnker = read(in, "*l", "*n");
   read(in, "*l");
   hDeckel = read(in, "*l", "*n");
   read(in, "*l");
   dStift = read(in, "*l", "*n");
   read(in, "*l");
   dWand = read(in, "*l", "*n");
   read(in, "*l");
   wSpule = read(in, "*l", "*n");
   read(in, "*l");
   dLack = read(in, "*l", "*n");
   read(in, "*l");
   sWickel = read(in, "*l", "*n");
   read(in, "*l");
   sAnker = read(in, "*l", "*n");
   read(in, "*l");
   sDeckel = read(in, "*l", "*n");
   read(in, "*l");
   sGleit = read(in, "*l", "*n");
   read(in, "*l");
   iSpule = read(in, "*l", "*n");
   else print("Could not open Eingabe_xx.txt"); end;
   closefile(in);
-------------------------------------------------------------------------------
-- Materialien (Luft, Kupfer, Eisen) --
-------------------------------------------------------------------------------
   :

Die Input-Zeilen mit den Parameter-Namen werden jeweils überlesen. Der auf der nächsten Zeile folgende Wert wird dem im Script definierten Parameter-Bezeichner zugewiesen.

Achtung: Es ist unbedingt zu überprüfen, ob nach der Verwendung einer Input-Datei mit den gleichen Parameter-Werten wirklich die gleichen Ergebnisse berechnet werden!


Output-Datei für Simulationsergebnisse

Die für die Bewertung der Simulation relevanten Ergebnisgrößen müssen ebenfalls in eine Textdatei geschrieben werden. In unserem Beispiel sind das die Magnetkraft und der Koppelfluss:

   :
-- Output-File mit Ergebniswerten erzeugen: 
   out = openfile(mydir .. "Ergebnis_xx.txt", "w");
   write (out,"F="  , Fz_Anker, "\n");
   write (out,"Psi=", Psi     , "\n");
   closefile(out);

Die erforderlichen File-Operationen werden an das Ende des LUA-Scripts platziert.


Verifizierung des Modells

Nach diesen Änderungen müssen nach Ausführung des kompletten LUA-Scripts im FEMM in der Datei Ergebnis_xx.txt die richtigen Werte für Magnetkraft und Koppelfluss stehen..


Einbindung in den OptiY-Workflow

Falls es nicht mehr geöffnet ist, so öffnen wir erneut OptiY mit der Datei Magnet_xx.opy und ergänzen nun die fehlende Einbindung des Modells.

  • Einfügen der Symbole von Input- und Output-File auf dem Workflow, Benennung und Zuordnung der konkreten ASCII-Textdatei:
    Software FEM - Tutorial - Magnetfeld - optiy outputfile zuordnen.gif
  • Bevor wir die Nennwerte des Workflows mit der Input-Datei verbinden, beginnen wir mit der Zuordnung der beiden Output-Verbindungen zur Output-Datei. Wir markieren dazu im Dialogfenster des Outputfiles die zu verbindenden Größen _F und _Psi und aktivieren das Zuordnen:



===>>> Hier geht es bald weiter!

Script vom vorigen Jahr siehe: http://www.ifte.de/lehre/cae/fem/06_magnet/optiy_modellinterface.html