Software: FEM - Tutorial - Magnetfeld - Vernetzung und Berechnung

Aus OptiYummy
Zur Navigation springenZur Suche springen

Vernetzung und Berechnung

Globale Pfad-Variable

  • Spätestens jetzt muss man das Speichern des FEM-Modells veranlassen, da erst danach die Vernetzung durchgeführt werden kann.
  • Im Sinne der Portabilität definieren wir dafür eine globale Pfad-Variable in der ersten Script-Zeile, bevor wir das Script fortschreiben:
    Software FEM - Tutorial - Magnetfeld - netz automatisch.gif
   mydir="";           -- es wird der aktuelle Pfad der geöffneten LUA-Datei benutzt
-- mydir="E:\\femm\\"; -- Beispiel für eine absolute Pfadangabe
   :
-------------------------------------------------------------------------------
-- Vernetzung und Feld-Berechnung  (nach Speichern des Modells)              --
-------------------------------------------------------------------------------
   mi_saveas(mydir .. "Magnet_xx.fem"); -- Speichern in vorhandenen Ordner
   :
-------------------------------------------------------------------------------
-- Loeschen nicht mehr benoetigter Dateien am Ende des Lua-Scripts           --
-------------------------------------------------------------------------------
   remove(mydir .. "Magnet_xx.fem"); -- Loeschen der Modelldatei   
   remove(mydir .. "Magnet_xx.ans"); -- Loeschen der Grafikdatei
  • Leider kann es manchmal zu ganz gemeinen Blockierungsproblemen mit derart erzeugten .fem-Dateien kommen (Siehe: Workaround).
  • Wir müssen deshalb darauf achten, dass wir diese Datei am Ende des Lua-Scripts wieder löschen! Das gleiche gilt für die grafische .ans-Ergebnisdatei, welche wir im Folgenden noch erzeugen

Automatische Vernetzung

Wir hatten für alle Bereiche des Modells eingestellt, dass der Vernetzungsgenerator "Triangle" selbst die erforderliche Maschengröße ermitteln soll:

   mi_createmesh(); -- Erzeugen des Netzes
  • Das Ergebnis der automatischen Vernetzung sieht auf den ersten Blick nicht schlecht aus. So werden z.B. in den kleineren Bereichen feinere Netze genutzt (weil größere Maschen nicht hineinpassen!).
  • Schaut man sich die Vernetzung in den Luftspalten jedoch genauer an, erkennt man, dass grundsätzlich nur eine Element-Schicht benutzt wird. Das betrifft:
  1. Führungsspalt zwischen Anker und Deckel
  2. Wicklungsspalt zwischen Spule und Eisenkreis
  3. Bohrungsbereich
  4. Arbeitsluftspalt zwischen Anker und Topf
  5. Restspalt zwischen Topf und Deckel
  • Insbesondere für die Ermittlung der Magnetkraft (z.B. auf den beweglichen Anker) wird im FEMM-Manual eine mehrlagige Vernetzung der Luft um den untersuchten Eisenbereich gefordert. Nur dadurch wird gewährleistet, dass die Feldgradienten hinreichend genau berechnet werden.
  • Vergleichsrechnungen zeigten zwar, dass die dadurch bedingten Abweichungen bei der Magnetkraft-Berechnung kleiner als 1% sind. Trotzdem werden wir in Hinblick auf eine Minimierung numerischer Ungenauigkeiten die Luftspalte mit mehreren Lagen vernetzen.

Vernetzungssteuerung

  • Um den Vernetzungsgrad beeinflussen zu können, definieren wir dafür eine globale Variable nLuft im Parameterabschnitt des Lua-Scripts.
  • Dazu notieren wir einen separaten Abschnitt für numerische Parameter vor den Entwurfsparametern:
-------------------------------------------------------------------------------
-- Numerische Parameter zur Steuerung der Simulationsgenauigkeit             --
-------------------------------------------------------------------------------
   nLuft=3;                     -- Zahl von Elementlagen in kleinen Luftspalten
  • Da eine feinere Vernetzung sehr schnell zu sehr langen Rechenzeiten führt, können wir über den Parameter nLuft sehr einfach einen günstigen Kompromiss zwischen Genauigkeit und Rechenzeit finden.
  • Für jeden Luftspalt existiert ein Parameterwert (z.B. sGleit). So kann man problemlos beim Setzen der Blockproperties die automatische Vernetzung durch die Angabe einer spaltabhängigen Maschengröße ersetzen (z.B. sGleit/nLuft).

Führungsspalt

-- mi_setblockprop ("Luft",1,      0     ,"<None>",0,0,0); ersetzen durch:
   mi_setblockprop ("Luft",0,sGleit/nLuft,"<None>",0,0,0);
Software FEM - Tutorial - Magnetfeld - netz gleitspalt grob.gif

Wickelspalt

-- mi_setblockprop ("Luft",1,       0     ,"<None>",0,0,0); ersetzen durch:
   mi_setblockprop ("Luft",0,sWickel/nLuft,"<None>",0,0,0);
Software FEM - Tutorial - Magnetfeld - netz arbeitsspalt grob.gif

Bohrung

-- mi_setblockprop ("Luft",1,       0      ,"<None>",0,0,0); ersetzen durch:
   mi_setblockprop ("Luft",0,dStift/2/nLuft,"<None>",0,0,0);

Arbeitsluftspalt

-- mi_setblockprop ("Luft",1,     0      ,"<None>",0,0,0); ersetzen durch:
   mi_setblockprop ("Luft",0,sAnker/nLuft,"<None>",0,0,0);

Restspalt

-- mi_setblockprop ("Luft",1,      0      ,"<None>",0,0,0); ersetzen durch:
   mi_setblockprop ("Luft",0,sDeckel/nLuft,"<None>",0,0,0);
Software FEM - Tutorial - Magnetfeld - netz restspalt grob.gif

Feldberechnung und Darstellung

Nachdem die Vernetzung in den Luftspalten wunschgemäß über den Parameter nLuft gesteuert werden kann, können wir unser Script fortschreiben. Dazu ergänzen wir die Anweisungen für die Berechnung und das Öffnen des Ergebnisfensters:

-------------------------------------------------------------------------------
-- Vernetzung und Feld-Berechnung  (nach Speichern des Modells)              --
-------------------------------------------------------------------------------
   :
   mi_analyze(1);     -- Solverfenster 1=minimiert / 0=sichtbar
   mi_loadsolution(); -- öffnet Ergebnisfenster für Postprozess
-------------------------------------------------------------------------------
-- Beginn des Postprozesses                                                  --
-------------------------------------------------------------------------------
   mo_zoom(0,-rKugel/3,rKugel/3,rKugel/3); -- Rechteckausschnitt in der Kugel
   mo_showcontourplot (-1); -- Feldlinien normiert auf Bereich (Preferences)
-- mo_showdensityplot(legend,gscale,upper_B,lower_B,type);
   mo_showdensityplot(   1  ,   0  ,   1   ,   0   ,"bmag");
Software FEM - Tutorial - Magnetfeld - contour plot default.gif
  • Die gebräuchlichste Methode, um ein Gefühl für das berechnete magnetische Feld zu erhalten, ist die Darstellung der "Flusslinien". Diese repräsentieren die Flusswege, auf denen der magnetische Fluss innerhalb der abgebildeten Geometrie fließt. Je dichter diese Flusslinien liegen, desto größer ist die Flussdichte. Ausgehend vom berechneten Vektor-Potential A, sind die Flusslinien einfach Isolinien von A. Das gilt jedoch nur für den planaren Fall. In axial-symmetrischen Problemen sind es die Isolinien von 2·π·r·A.
  • Die Feldlinien-Darstellung könnte man im Lua-Script mit mo_showcontourplot individuell konfigurieren. Wir nutzen im Beispiel mit dem Parameter (-1) die unter Edit - Preferences - Magnetics Output eingestellte Default-Konfiguration. Die Default-Einstellung für die Feldlinien hat hier den Vorteil, dass die Grenzen automatisch auf den aktuellen Min- und Max-Wert des Feldes gesetzt werden:
    Software FEM - Tutorial - Magnetfeld - preferences magnout default.gif
  • Software FEM - Tutorial - Magnetfeld - bh-kurve.gif
    Der Wert der Flussdichte B zeigt, in welchem Maße das Eisenmaterial auf der BH-Kurve ausgesteuert wird. Standardmäßig ist im FEMM-Programm der Density-Plot ausgeschalten.
  • Man könnte die Darstellung von |B| in den Default-Einstellungen für den Density Plot aktivieren. Wir werden aber die farbige Darstellung des B-Feldes über den Script-Befehl mo_showdensityplot steuern. Die Wahl geeigneter Grenz-Werte für die Darstellung ist unproblematisch, da der Wert von B auf Grund der BH-Kennlinie auf ca. 2 T begrenzt ist. Im Script-Beispiel wurde der obere Grenzwert vorläufig auf 1 T gesetzt:
    Software FEM - Tutorial - Magnetfeld - density plot b.gif Software FEM - Tutorial - Magnetfeld - femm-output.gif
  • Man erkennt nach der Berechnung und Ergebnisdarstellung, dass der Raum außerhalb des Magnetkreises weitestgehend feldfrei ist.
  • Von jedem Punkt des Modells erhält man nach Klick mit der linken Maustaste die wesentlichen magnetischen Größen in einem Ausgabefenster aufgelistet. Im Beispiel ist dies der Punkt im Bereich der höchsten Aussteuerung des Eisenmaterials. Die Größen werden jeweils mit ihrem Betrag und den Komponenten in die entsprechende Koordinaten-Richtung dargestellt.