Software: FEMM - Stromfluss - OptiY-Modellinterface

Aus OptiYummy
Zur Navigation springenZur Suche springen

Simulation des Trimmens - Datenschnittstelle zum Modell
Software FEMM - Stromfluss - Optiy input-output-files.gif

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 stehen nach der Simulationsrechnung wieder an definierter Stelle in einer Textdatei.
  • Das Optimierungstool liest diese Ergebniswerte aus der Textdatei und berechnet daraus die erforderlichen Änderungen der Parameterwerte für eine weitere Verbesserung des Modellverhaltens.
  • Der Zyklus beginnt dann von vorn, bis keine weitere Verbesserung mehr erreichbar ist.

Es ist im Allgemeinen 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:


1. Input-Datei für Vorgabe-Parameter

Bisher sind die Input-Parameter Bestandteil des Modell-Scripts. Die Input-Parameter sollen als separate Textdatei gestaltet. Für diese Übung nennen wir die ASCII-Textdatei Input_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:

s
25
Ls
500
bz
200
d
20 
RF
100 
Pmax
6.2
RN
240
Szul
0.02
PV
0.2 
SF
0.3

Achtung: Die Teilnehmer-Nummer xx kommt hier nicht in die Input-Datei, sondern bleibt Bestandteil des Modells!


2. 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 darf nicht auskommentiert werden!
-- Funktionelle und technologische Parameter (Standardwerte)
   xx=00; -- Teilnehmer-Nr. 00 bis 30
-- s=25; -- Schnittbreite des Laser-Strahls [µm]
-- Ls=500; -- aktuelle Länge L-Schnitt [µm]
-- bz=200; -- Breite eines Zuschlags für Fertigung [µm]
-- d=20; -- Schichtdicke in µm = Dicke 2D-Elemente
-- RF=100; -- Nennwert Flächenwiderstand der Paste [Ohm/Quadrat]
-- Pmax=6.2; -- max. zul. Leistungsdichte in Paste [W/cm²]
-- RN=240; -- Nennwert nach Trimmen [Ohm]
-- Szul=0.02; -- zulässige relative Toleranz von RN
-- PV=0.2; -- max. Verlustleistung im Betrieb [W]
-- SF=0.3; -- Fertigungsstreuung ungetrimmter Widerstand (rel.)
-- Parameter aus Textdatei einlesen mit Fehlertest
   in = openfile("e:\\femm\\Input_xx.txt","r"); -- Datei öffnen zum Lesen
   if in then -- wenn Datei geöffnet, dann Werte einlesen
   read(in, "*l");
   s = read(in, "*l", "*n");
   read(in, "*l");
   Ls = read(in, "*l", "*n");
   read(in, "*l");
   bz = read(in, "*l", "*n");
   read(in, "*l");
   d = read(in, "*l", "*n");
   read(in, "*l");
   RF = read(in, "*l", "*n");
   read(in, "*l");
   Pmax = read(in, "*l", "*n");
   read(in, "*l");
   RN = read(in, "*l", "*n");
   read(in, "*l");
   Szul = read(in, "*l", "*n");
   read(in, "*l");
   PV = read(in, "*l", "*n");
   read(in, "*l");
   SF = read(in, "*l", "*n");
   else print("Could not open Input_xx.txt"); end;
   closefile(in);
-- Berechnete Geometrie- und Material-Parameter
   :

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!


3. 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 ist das nur der aus der aktuellen Parameterbelegung berechnete Widerstand der Anordnung:

   :
   print ("R=", R, "[Ohm]") -- Werte in Outputfeld der LUA-Cosole
   print (" mit v=", v, "[V]");
   print (" und i=", i, "[A]");
   out = openfile("e:\\femm\\Output_xx.txt", "w");
   write(out, "R=", R, "\n");
   closefile(out);

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