{"id":874,"date":"2026-07-30T12:23:26","date_gmt":"2026-07-30T12:23:26","guid":{"rendered":"https:\/\/matforge.org\/?p=874","raw":"https:\/\/matforge.org\/?p=874"},"modified":"2026-07-30T12:23:26","modified_gmt":"2026-07-30T12:23:26","slug":"how-fipy-handles-meshes-and-grid-structures","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/","title":{"rendered":"Wie FIPY mit Netzen und Gitterstrukturen umgeht","raw":"Wie FIPY mit Netzen und Gitterstrukturen umgeht"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><article>\n<p>FIPY ist ein Python-basiertes Framework zum L\u00f6sen von partiellen Differentialgleichungen mit der Finite-Volumen-Methode. Es wird \u00fcblicherweise f\u00fcr Diffusion, W\u00e4rme\u00fcbertragung, Phasenfeldmodellierung, Elektrochemie, fluidbezogener Transport und andere Probleme verwendet, die durch Konservierungsgleichungen ausgedr\u00fcckt werden k\u00f6nnen.<\/p>\n<p>Jede FIPY-Simulation beginnt mit einem Netz. Das Netz definiert die physikalische Dom\u00e4ne, unterteilt sie in Kontrollvolumina, identifiziert die Grenzen zwischen diesen Volumes und bestimmt, wo numerische Variablen gespeichert werden. Ein sorgf\u00e4ltig ausgew\u00e4hltes Netz kann ein Modell genau und effizient machen. Ein schlechtes Netz kann instabile Berechnungen, unrealistische Steigungen oder unn\u00f6tige Rechenkosten verursachen.<\/p>\n<p>FIPY unterst\u00fctzt einfache kartesische Gitter, ungleichm\u00e4\u00dfige Abst\u00e4nde, periodische Dom\u00e4nen, zylindrische und sph\u00e4rische Koordinaten, dreieckige Strukturen und mit GMSH erstellte Netze. Das Verst\u00e4ndnis dieser Optionen hilft Benutzern, das einfachste Raster auszuw\u00e4hlen, das das physische Problem immer noch korrekt darstellt.<\/p>\n<h2>Was ist ein Netz in FIPY?<\/h2>\n<p>Ein Netz ist eine diskrete Darstellung eines kontinuierlichen physikalischen Bereichs. Anstatt an jedem m\u00f6glichen Punkt eine Differentialgleichung zu l\u00f6sen, teilt FIPY die Dom\u00e4ne in eine endliche Anzahl von Zellen und berechnet ungef\u00e4hre Werte in ihnen.<\/p>\n<p>Jede Zelle wirkt als Kontrollvolumen. Physikalische Gr\u00f6\u00dfen wie Temperatur, Konzentration, Druck oder Phasenfraktion sind \u00fcblicherweise mit Zellzentren verbunden. Der Transport zwischen benachbarten Zellen wird \u00fcber die Gesichter berechnet, die sie trennen.<\/p>\n<p>Das Netz bietet sowohl Geometrie als auch Topologie. Geometrie beschreibt Gr\u00f6\u00dfen, Koordinaten, Bereiche und Volumina. Die Topologie beschreibt, welche Zellen Gesichter teilen und wie die Elemente verbunden sind.<\/p>\n<p>Diese Information erm\u00f6glicht es FIPY, eine Differentialgleichung in ein System von algebraischen Gleichungen umzuwandeln, das ein numerischer Solver verarbeiten kann.<\/p>\n<h2>Zellen, Gesichter und Eckpunkte<\/h2>\n<p>FIPY-Netze bestehen aus drei Hauptstrukturkomponenten: Zellen, Fl\u00e4chen und Scheitelpunkten.<\/p>\n<p>Zellen sind die Kontrollvolumina, die von der Finite-Volumen-Methode verwendet werden. Eine eindimensionale Zelle ist ein Liniensegment. Eine zweidimensionale Zelle kann ein Rechteck oder ein Dreieck sein. Eine dreidimensionale Zelle kann ein Kasten oder ein anderes polyedrisches Volumen sein.<\/p>\n<p>Gesichter bilden die Grenzen von Zellen. Eine Innenseite trennt zwei benachbarte Zellen. An der \u00e4u\u00dferen Begrenzung der gesamten Dom\u00e4ne liegt eine Au\u00dfenfl\u00e4che.<\/p>\n<p>Ecken definieren die geometrischen Punkte, aus denen Fl\u00e4chen und Zellen konstruiert werden. Die meisten Benutzer manipulieren die Eckpunkte nicht direkt, wenn sie mit regul\u00e4ren Gittern arbeiten, sondern werden beim Importieren oder Erstellen unregelm\u00e4\u00dfiger Geometrie wichtig.<\/p>\n<p>Die Beziehungen zwischen diesen Komponenten bestimmen, wie sich Werte und Fl\u00fcsse durch die Simulation bewegen.<\/p>\n<h2>Warum Netzstruktur bei der Finite-Volumen-Methode wichtig ist<\/h2>\n<p>Die Finite-Volumen-Methode integriert eine ma\u00dfgebliche Gleichung \u00fcber jede Zelle. Es wird dann berechnet, wie viel von einer physikalischen Gr\u00f6\u00dfe durch die umgebenden Gesichter gelangt oder verl\u00e4sst.<\/p>\n<p>F\u00fcr ein Diffusionsproblem sch\u00e4tzt FIPY Gradienten zwischen benachbarten Zellwerten und berechnet den diffusiven Fluss \u00fcber jede Fl\u00e4che. F\u00fcr ein Konvektionsproblem h\u00e4ngen die Richtung und Gr\u00f6\u00dfe des Transports von fl\u00e4chenzentrierten Geschwindigkeiten und normalen Vektoren ab.<\/p>\n<p>Die Zellgr\u00f6\u00dfe beeinflusst die Aufl\u00f6sung. Gesichtsbereich beeinflusst die Menge des Flusses. Das Zellvolumen beeinflusst die Akkumulation und die Quellbegriffe. Der Abstand zwischen benachbarten Zellzentren beeinflusst die Gradientenn\u00e4herung.<\/p>\n<p>Dadurch ist das Netz nicht nur ein visueller Container. Seine Geometrie tritt direkt in die numerischen Gleichungen ein.<\/p>\n<h2>Strukturierte und unstrukturierte Netze<\/h2>\n<p>Ein strukturiertes Netz ordnet Zellen in einem vorhersehbaren Muster an. Rechteckige Gitter sind das h\u00e4ufigste Beispiel. Zellen bilden Zeilen, Spalten und Schichten, und ihre Nachbarn k\u00f6nnen systematisch identifiziert werden.<\/p>\n<p>Strukturierte Gitter sind einfach zu erstellen und in der Regel effizient zu verarbeiten. Sie eignen sich f\u00fcr rechteckige Dom\u00e4nen, Schichtsysteme, Kan\u00e4le und Probleme mit einfachen Grenzen.<\/p>\n<p>Ein unstrukturiertes Netz folgt nicht einer regelm\u00e4\u00dfigen Reihen-und-S\u00e4ulen-Anordnung. Es kann Dreiecke, Tetraeder oder unregelm\u00e4\u00dfige Polygone enthalten. Unstrukturierte Netze k\u00f6nnen gebogene Grenzen, L\u00f6cher, schmale Merkmale und komplexe technische Geometrien genauer anpassen.<\/p>\n<p>Die Flexibilit\u00e4t eines unstrukturierten Netzes ist mit zus\u00e4tzlichen Kosten verbunden. Die Erzeugung von Netzen, Qualit\u00e4tskontrollen, Grenzauswahl und numerische Verarbeitung wird komplizierter.<\/p>\n<h2>Erstellen eines eindimensionalen Rasters<\/h2>\n<p>Das einfachste FIPY-Mesh ist <code>Grid1D<\/code> . Es unterteilt eine Linie in eine bestimmte Anzahl von Zellen.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(nx=100, dx=0.01)<\/code><\/pre>\n<p>Der Parameter <code>nx<\/code> definiert die Anzahl der Zellen. Der Parameter <code>dx<\/code> definiert die Breite jeder Zelle. In diesem Beispiel betr\u00e4gt die Gesamtl\u00e4nge der Dom\u00e4ne eine Einheit.<\/p>\n<p>Eindimensionale Gitter sind n\u00fctzlich f\u00fcr die geschichtete Diffusion, die W\u00e4rme\u00fcbertragung durch eine Wand, Konzentrations\u00e4nderungen entlang eines Kanals und Systeme mit starker Symmetrie. Ein 1D-Modell ist oft viel schneller als eine 2D- oder 3D-Simulation und kann ausreichend sein, wenn Variationen in andere Richtungen ignoriert werden k\u00f6nnen.<\/p>\n<h2>Erstellen eines zweidimensionalen Rasters<\/h2>\n<p>Mit <code>Grid2D<\/code> kann eine rechteckige zweidimensionale Dom\u00e4ne erstellt werden.<\/p>\n<pre><code>from fipy import Grid2D\n\nmesh = Grid2D(\n    nx=50,\n    ny=30,\n    dx=0.02,\n    dy=0.02\n)<\/code><\/pre>\n<p>Das Netz enth\u00e4lt 50 Zellen entlang der x-Achse und 30 Zellen entlang der Y-Achse. Jede Zelle ist 0,02 Einheiten breit und 0,02 Einheiten hoch.<\/p>\n<p>Diese Struktur eignet sich f\u00fcr planare W\u00e4rme\u00fcbertragung, Materialmikrostrukturen, Diffusion \u00fcber Oberfl\u00e4chen, elektrostatische Probleme und viele Phasenfeldbeispiele.<\/p>\n<p>Ein rechteckiges Gitter ist normalerweise der beste Ausgangspunkt, wenn die physikalische Dom\u00e4ne einfach ist. Es ist einfach zu visualisieren, zu verfeinern und auf die Netzunabh\u00e4ngigkeit zu testen.<\/p>\n<h2>Erstellen eines dreidimensionalen Rasters<\/h2>\n<p>FIPY stellt <code>Grid3D<\/code> f\u00fcr volumetrische Dom\u00e4nen bereit.<\/p>\n<pre><code>from fipy import Grid3D\n\nmesh = Grid3D(\n    nx=40,\n    ny=30,\n    nz=20,\n    dx=0.01,\n    dy=0.01,\n    dz=0.01\n)<\/code><\/pre>\n<p>Dreidimensionale Simulationen k\u00f6nnen die vollst\u00e4ndige r\u00e4umliche Geometrie darstellen, erfordern jedoch viel mehr Speicher und Verarbeitungszeit. Die Verdoppelung der Zellenzahl in jede Richtung kann die Gesamtzahl der Zellen um den Faktor acht erh\u00f6hen.<\/p>\n<p>Vor der Verwendung eines 3D-Gitters ist es sinnvoll zu pr\u00fcfen, ob Symmetrie oder Ma\u00dfreduktion ein ad\u00e4quates Ergebnis liefern kann. Ein zylindrisches oder eindimensionales Radialmodell kann manchmal eine viel teurere 3D-Simulation ersetzen.<\/p>\n<h2>Einheitlicher und ungleichm\u00e4\u00dfiger Abstand<\/h2>\n<p>Ein einheitliches Gitter verwendet Zellen gleicher Gr\u00f6\u00dfe entlang einer bestimmten Achse. Dies ist praktisch, wenn sich die L\u00f6sung im gesamten Bereich allm\u00e4hlich \u00e4ndert.<\/p>\n<p>Einige Probleme enthalten scharfe Gradienten in der N\u00e4he einer Grenze, Schnittstelle oder Quelle. \u00dcberall ein feines Gitter zu verwenden, kann verschwenderisch sein. FIPY kann durch Empfangen einer Sequenz von Zellbreiten einen ungleichm\u00e4\u00dfigen Abstand erzeugen.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(\n    dx=(0.01, 0.01, 0.02, 0.04, 0.08)\n)<\/code><\/pre>\n<p>Die Zellen werden immer breiter. Kleinere Zellen k\u00f6nnen in der N\u00e4he einer wichtigen Grenze platziert werden, w\u00e4hrend gr\u00f6\u00dfere Zellen Bereiche abdecken, in denen sich die L\u00f6sung langsam \u00e4ndert.<\/p>\n<p>Ungleichm\u00e4\u00dfige Gitter reduzieren die Rechenkosten, aber abrupte \u00c4nderungen der Zellgr\u00f6\u00dfe k\u00f6nnen die numerische Qualit\u00e4t verringern. Zelldimensionen sollten sich normalerweise allm\u00e4hlich \u00e4ndern, anstatt zwischen extrem unterschiedlichen Werten zu springen.<\/p>\n<h2>Zugriff auf Zellzentren<\/h2>\n<p>FIPY stellt Zellkoordinaten durch <code>mesh.cellCenters<\/code> frei. Diese Koordinaten werden h\u00e4ufig verwendet, um Anfangsbedingungen, Quellen, r\u00e4umliche Koeffizienten und interessierende Regionen zu definieren.<\/p>\n<pre><code>x, y = mesh.cellCenters<\/code><\/pre>\n<p>Ein Benutzer kann einen kreisf\u00f6rmigen Anfangsbereich erstellen, indem er eine logische Bedingung auf die Koordinaten anwendet:<\/p>\n<pre><code>initial_region = (\n    (x - 0.5) ** 2 + (y - 0.5) ** 2\n) &lt; 0.1 ** 2<\/code><\/pre>\n<p>Die resultierende Boolesche Maske identifiziert Zellen, deren Zentren in den Kreis fallen.<\/p>\n<p>Cell-Center-Koordinaten sind besonders n\u00fctzlich, da die meisten FIPY-L\u00f6sungsvariablen als <code>CellVariable<\/code> -Objekte gespeichert werden.<\/p>\n<h2>Zellvariablen und Netzzuordnung<\/h2>\n<p>A <code>CellVariable<\/code> speichert einen Wert f\u00fcr jede Zelle im Netz.<\/p>\n<pre><code>from fipy import CellVariable\n\ntemperature = CellVariable(\n    name=\"temperature\",\n    mesh=mesh,\n    value=300.0\n)<\/code><\/pre>\n<p>Die Variable erh\u00e4lt automatisch die gleiche Anzahl von Werten wie das Netz Zellen. Es erh\u00e4lt auch Zugriff auf netzbasierte Operationen wie Gradienten, Gesichtsinterpolation und Einschr\u00e4nkungen.<\/p>\n<p>Werte k\u00f6nnen nur in ausgew\u00e4hlten Zellen ge\u00e4ndert werden:<\/p>\n<pre><code>temperature.setValue(\n    500.0,\n    where=initial_region\n)<\/code><\/pre>\n<p>Diese Beziehung zwischen Variablen und Netzen erm\u00f6glicht FIPY, geometrieabh\u00e4ngige Vorg\u00e4nge zu verwalten, ohne dass Benutzer jede Matrix manuell zusammenstellen m\u00fcssen.<\/p>\n<h2>Gesichtszentren und Gesichtsvariablen<\/h2>\n<p>Gesichter sind wichtig, weil Fl\u00fcsse durch sie hindurchgehen. Ihre Koordinaten sind \u00fcber <code>mesh.faceCenters<\/code> verf\u00fcgbar.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters<\/code><\/pre>\n<p>Gesichtskoordinaten k\u00f6nnen verwendet werden, um Grenzen zu identifizieren oder eine Bedingung nur auf einen Teil einer Kante anzuwenden.<\/p>\n<p>FIPY unterst\u00fctzt auch Objekte <code>FaceVariable<\/code>. Diese sind n\u00fctzlich f\u00fcr Mengen, die sich nat\u00fcrlich auf Fl\u00e4chen befinden, wie Str\u00f6mungsgeschwindigkeit oder extern angegebener Fluss.<\/p>\n<p>Eine zellzentrierte Variable kann h\u00e4ufig durch Eigenschaften wie <code>faceValue<\/code>  zu Fl\u00e4chen interpoliert werden. Der Verlauf an den Fl\u00e4chen kann \u00fcber <code>faceGrad<\/code> abgerufen werden.<\/p>\n<p>Es ist wichtig, den richtigen Speicherort f\u00fcr eine Variable zu w\u00e4hlen. Temperaturen und Konzentrationen sind h\u00e4ufig zellzentriert, w\u00e4hrend Flussmittel und Transportgeschwindigkeiten h\u00e4ufig frontzentriert sind.<\/p>\n<h2>Zellvolumina, Gesichtsbereiche und Normale<\/h2>\n<p>FIPY berechnet geometrische Eigenschaften automatisch. Zellvolumina sind \u00fcber <code>mesh.cellVolumes<\/code> verf\u00fcgbar. In 2D repr\u00e4sentieren diese Werte Zellbereiche unter den dimensionalen Annahmen des Modells.<\/p>\n<p>Gesichtsbereiche beeinflussen die Gesamtmenge an Material, W\u00e4rme oder Impuls durch eine Grenze. Gesichtsnormalen identifizieren die Richtung senkrecht zu jeder Fl\u00e4che.<\/p>\n<p>Die Ausrichtung einer Normalen ist bei der Berechnung der Fl\u00fcsse nach au\u00dfen und nach innen wichtig. Ein positiver Fluss in einer Richtung kann einen negativen Fluss relativ zu einer benachbarten Zelle darstellen.<\/p>\n<p>Diese Eigenschaften erm\u00f6glichen es FIPY, die Erhaltungsgesetze konsistent \u00fcber verschiedene Gitterformen und Koordinatensysteme anzuwenden.<\/p>\n<h2>Au\u00dfen- und Innenseiten<\/h2>\n<p>Fipy trennt Gesichter in Au\u00dfen- und Innengruppen. Au\u00dfenfl\u00e4chen bilden die \u00e4u\u00dfere Begrenzung der Dom\u00e4ne. Innenfl\u00e4chen verbinden benachbarte Zellen.<\/p>\n<p>Die entsprechenden Masken sind verf\u00fcgbar als:<\/p>\n<pre><code>mesh.exteriorFaces\nmesh.interiorFaces<\/code><\/pre>\n<p>Au\u00dfenfl\u00e4chen werden h\u00e4ufig f\u00fcr Randbedingungen verwendet. Innenfl\u00e4chen nehmen am gew\u00f6hnlichen Transport zwischen Zellen teil.<\/p>\n<p>Regelm\u00e4\u00dfige kartesische Gitter bieten auch praktische Richtungsmasken wie <code>facesLeft<\/code>, <code>facesRight<\/code>, <code>facesTop<\/code> und <code>facesBottom<\/code>.<\/p>\n<pre><code>temperature.constrain(\n    350.0,\n    where=mesh.facesLeft\n)\n\ntemperature.constrain(\n    300.0,\n    where=mesh.facesRight\n)<\/code><\/pre>\n<p>Dies wendet feste Werte an den linken und rechten Grenzen an.<\/p>\n<h2>Benutzerdefinierte Begrenzungsmasken erstellen<\/h2>\n<p>Eine physische Verfassung kann nur f\u00fcr einen Teil einer Grenze gelten. Benutzerdefinierte Masken k\u00f6nnen Standard-Gesichtss\u00e4tze mit Koordinatenbedingungen kombinieren.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters\n\nheated_section = (\n    mesh.facesTop\n    &amp; (x_face &gt; 0.4)\n    &amp; (x_face &lt; 0.6)\n)\n\ntemperature.constrain(\n    400.0,\n    where=heated_section\n)<\/code><\/pre>\n<p>Dieses Beispiel beschr\u00e4nkt nur den zentralen Teil der oberen Grenze.<\/p>\n<p>Benutzerdefinierte Masken k\u00f6nnen auch kreisf\u00f6rmige Grenzen, Schnittstellen, Einl\u00e4sse, Ausg\u00e4nge oder Fl\u00e4chen in der N\u00e4he einer bestimmten Koordinate ausw\u00e4hlen. Es ist wichtig, Masken aus Gesichtskoordinaten zu erstellen, wenn fl\u00e4chenbasierte Randbedingungen angewendet werden. Eine Zellmaske und eine Gesichtsmaske haben unterschiedliche L\u00e4ngen und Zwecke.<\/p>\n<h2>Periodische Gitterstrukturen<\/h2>\n<p>Periodische Netze verbinden gegen\u00fcberliegende Seiten einer Dom\u00e4ne. Ein Wert, der eine Seite verl\u00e4sst, tritt effektiv durch die andere wieder ein.<\/p>\n<p>FIPY bietet periodische Gitterklassen f\u00fcr ein, zwei und drei Dimensionen. Einige Varianten wenden die Periodizit\u00e4t nur entlang ausgew\u00e4hlter Achsen an.<\/p>\n<p>Periodische Gitter sind n\u00fctzlich f\u00fcr wiederholte Mikrostrukturen, Kristallmuster, repr\u00e4sentative Materialvolumina, wellen\u00e4hnliche Systeme und Phasenfeldsimulationen, bei denen k\u00fcnstliche \u00e4u\u00dfere Grenzen die L\u00f6sung verzerren w\u00fcrden.<\/p>\n<p>Benutzer sollten sich daran erinnern, dass sich eine periodische Richtung nicht wie eine gew\u00f6hnliche Au\u00dfengrenze verh\u00e4lt. Das Anwenden von widerspr\u00fcchlichen Randbeschr\u00e4nkungen auf die verbundenen Fl\u00e4chen kann ein falsches Modell erzeugen.<\/p>\n<h2>Zylindrische und sph\u00e4rische Gitter<\/h2>\n<p>Kartesische Gitter sind nicht immer die effizienteste Wahl. FIPY bietet zylindrische und sph\u00e4rische Netzklassen f\u00fcr Systeme mit radialer Symmetrie.<\/p>\n<p>Ein zylindrisches Gitter kann W\u00e4rme\u00fcbertragung durch eine Rohrwand, radiale Diffusion oder einen achsensymmetrischen Reaktor darstellen. Zellvolumina und Fl\u00e4chenbereiche \u00e4ndern sich mit Radius, und FIPY ber\u00fccksichtigt diese Geometrie automatisch.<\/p>\n<p>Ein sph\u00e4risches eindimensionales Gitter kann die Diffusion in ein Partikel, eine W\u00e4rme\u00fcbertragung innerhalb einer Kugel oder einen radialen chemischen Transport modellieren.<\/p>\n<p>Diese koordinatenspezifischen Netze k\u00f6nnen teure mehrdimensionale Berechnungen ersetzen, wenn die L\u00f6sung symmetrisch ist. Sie sollten jedoch nicht verwendet werden, wenn wichtige Winkelvariationen vorhanden sind.<\/p>\n<h2>Dreieckige und verzerrte Maschen<\/h2>\n<p>FIPY umfasst dreieckige Strukturen wie <code>Tri2D<\/code> . Dreieckige Zellen k\u00f6nnen eine unterschiedliche Diskretisierung eines zweidimensionalen Bereichs bereitstellen und k\u00f6nnen zum Testen des numerischen Verhaltens n\u00fctzlich sein.<\/p>\n<p>Verzerrte Gitter bewegen die Eckpunkte absichtlich von einer orthogonalen Anordnung weg. Sie k\u00f6nnen demonstrieren, wie ein Solver auf nicht-orthogonale Geometrie reagiert.<\/p>\n<p>Starke Schiefe kann die Genauigkeit der Gradienten verringern und den numerischen Fehler erh\u00f6hen. Ein Netz mit vielen Zellen von schlechter Qualit\u00e4t kann schlechter abschneiden als ein gr\u00f6beres, aber gut geformtes Gitter.<\/p>\n<p>Die Netzqualit\u00e4t sollte daher getrennt von der Netzaufl\u00f6sung bewertet werden. Das Hinzuf\u00fcgen von verzerrten Zellen verbessert nicht unbedingt die L\u00f6sung.<\/p>\n<h2>Modellierung komplexer Geometrie mit GMSH<\/h2>\n<p>Regelm\u00e4\u00dfige Gitter sind begrenzt, wenn die Dom\u00e4ne Kurven, L\u00f6cher, unregelm\u00e4\u00dfige Grenzen oder detaillierte dreidimensionale Merkmale enth\u00e4lt. FIPY kann GMSH verwenden, um komplexere Netze zu generieren oder zu importieren.<\/p>\n<p>Aus den GMSH-Befehlen kann ein grundlegendes zweidimensionales Netz erstellt werden:<\/p>\n<pre><code>from fipy import Gmsh2D\n\nmesh = Gmsh2D(\"\"\"\n    cellSize = 0.05;\n\n    Point(1) = {0, 0, 0, cellSize};\n    Point(2) = {1, 0, 0, cellSize};\n    Point(3) = {1, 1, 0, cellSize};\n    Point(4) = {0, 1, 0, cellSize};\n\n    Line(1) = {1, 2};\n    Line(2) = {2, 3};\n    Line(3) = {3, 4};\n    Line(4) = {4, 1};\n\n    Curve Loop(1) = {1, 2, 3, 4};\n    Plane Surface(1) = {1};\n\"\"\")<\/code><\/pre>\n<p>GMSH kann auch Geometrie aus einer <code>.geo<\/code>-Datei laden oder eine generierte <code>.msh<\/code>-Datei importieren. Wenn Sie komplexe Geometrien in einer separaten Datei aufbewahren, ist das Python-Modell h\u00e4ufiger pflegeleicht.<\/p>\n<h2>Lokale Verfeinerung<\/h2>\n<p>Komplexe Probleme ben\u00f6tigen oft nur in ausgew\u00e4hlten Bereichen kleine Zellen. Die lokale Verfeinerung kann die Aufl\u00f6sung nahe Schnittstellen, Ecken, Grenzen, Quellen, engen Kan\u00e4len oder steilen Gradienten verbessern.<\/p>\n<p>GMSH bietet flexible Steuerelemente zum Einstellen lokaler Elementgr\u00f6\u00dfen. Eine feine Region kann um ein wichtiges Merkmal herum angeordnet werden, w\u00e4hrend der Rest der Dom\u00e4ne gr\u00f6\u00dfere Zellen verwendet.<\/p>\n<p>Dieser Ansatz ist in der Regel effizienter als die Verfeinerung des gesamten Gitters. \u00dcberg\u00e4nge zwischen feinen und groben Regionen sollten jedoch allm\u00e4hlich erfolgen. Pl\u00f6tzliche Gr\u00f6\u00dfen\u00e4nderungen k\u00f6nnen die numerische Qualit\u00e4t beeintr\u00e4chtigen oder schlecht geformte Zellen erzeugen.<\/p>\n<h2>Netzkonvergenztest<\/h2>\n<p>Ein Simulationsergebnis sollte nicht stark von einer beliebigen Maschengr\u00f6\u00dfe abh\u00e4ngen. Die Netzkonvergenzpr\u00fcfung pr\u00fcft, ob die L\u00f6sung stabil wird, wenn das Gitter verfeinert wird.<\/p>\n<p>Ein praktischer Test verwendet mindestens zwei oder drei Aufl\u00f6sungen. Der Benutzer vergleicht eine wichtige Gr\u00f6\u00dfe wie Maximaltemperatur, Durchschnittskonzentration, Schnittstellenposition oder Gesamtfluss.<\/p>\n<p>Wenn sich das Ergebnis nach der Verfeinerung erheblich \u00e4ndert, war das urspr\u00fcngliche Netz wahrscheinlich zu grob. Wenn die Differenz klein wird, kann eine weitere Verfeinerung ihre Rechenkosten nicht rechtfertigen.<\/p>\n<p>Die Konvergenz sollte auf den f\u00fcr die Studie wichtigen Output getestet werden. Ein Netz kann einen Durchschnittswert genau vorhersagen, w\u00e4hrend es dennoch kein lokales Maximum erfassen kann.<\/p>\n<h2>Netze in parallelen Simulationen<\/h2>\n<p>Gro\u00dfe FIPY-Simulationen k\u00f6nnen ein Netz \u00fcber mehrere Prozesse verteilen. Jeder Prozess arbeitet mit einem Teil der Dom\u00e4ne und tauscht Informationen mit benachbarten Teilen aus.<\/p>\n<p>Parallele Netze k\u00f6nnen lokale Zellen, \u00dcberlappungszellen und global identifizierte Werte enthalten. Die Gr\u00f6\u00dfe eines lokalen Numpy-Arrays kann daher von der Gesamtzahl der Zellen im vollst\u00e4ndigen Netz abweichen.<\/p>\n<p>Benutzer sollten vorsichtig sein, wenn sie Arrays direkt indizieren oder Werte w\u00e4hrend der parallelen Ausf\u00fchrung exportieren. Code, der davon ausgeht, dass jeder Prozess das vollst\u00e4ndige Netz besitzt, kann im seriellen Modus gearbeitet werden, schl\u00e4gt jedoch im parallelen Modus fehl.<\/p>\n<p>Die parallele Ausf\u00fchrung kann die Laufzeit bei gro\u00dfen Problemen verk\u00fcrzen, aber der Kommunikationsaufwand kann den Nutzen f\u00fcr kleine Netze einschr\u00e4nken.<\/p>\n<h2>Inspizieren und visualisieren eines Netzes<\/h2>\n<p>Ein Netz sollte vor dem L\u00f6sen einer komplexen Gleichung \u00fcberpr\u00fcft werden. Benutzer k\u00f6nnen Zellzahlen, Koordinatenbereiche, Volumina, Au\u00dfenmasken und Begrenzungsauswahlen \u00fcberpr\u00fcfen.<\/p>\n<p>FIPY-Viewer k\u00f6nnen eine Variable auf dem Netz anzeigen:<\/p>\n<pre><code>from fipy import Viewer\n\nviewer = Viewer(vars=temperature)\nviewer.plot()<\/code><\/pre>\n<p>Die Visualisierung kann falsche Dom\u00e4nendimensionen, unerwartete Zellenabst\u00e4nde, fehlende Regionen oder schlecht ausgew\u00e4hlte Grenzmasken aufdecken.<\/p>\n<p>Bei GMSH-basierter Geometrie ist es sinnvoll, das generierte Netz in einem dedizierten Visualisierungstool zu \u00fcberpr\u00fcfen, bevor eine lange Simulation beginnt.<\/p>\n<h2>H\u00e4ufige Anf\u00e4ngerfehler<\/h2>\n<p>Ein h\u00e4ufiger Fehler ist die Verwirrung der Zellzahl mit der physischen Gr\u00f6\u00dfe. Ein Gitter mit 100 Zellen hat keine L\u00e4nge von 100, es sei denn, jede Zelle ist eine Einheit breit.<\/p>\n<p>Ein weiterer Fehler ist das Anwenden einer Grenzbedingung mit einer Zellmaske anstelle einer Gesichtsmaske. Randbedingungen wirken im Allgemeinen auf Au\u00dfenfl\u00e4chen.<\/p>\n<p>Benutzer k\u00f6nnen auch ein zu grobes Raster ausw\u00e4hlen, um einen Farbverlauf zu erfassen, oder f\u00fcr ein einfaches Problem unn\u00f6tig gut.<\/p>\n<p>Andere h\u00e4ufige Probleme sind falsche Koordinatenannahmen, abrupter ungleichm\u00e4\u00dfiger Abstand, schlechte GMSH-Elementqualit\u00e4t, widerspr\u00fcchliche periodische Bedingungen und \u00dcberspringen von Konvergenztests.<\/p>\n<h2>Auswahl des richtigen FIPY-Mesh<\/h2>\n<table class=\"custom-table\">\n<tbody>\n<tr>\n<th>Maschentyp<\/th>\n<th>Beste Verwendung<\/th>\n<th>Hauptbegrenzung<\/th>\n<\/tr>\n<tr>\n<td><code>Grid1D<\/code><\/td>\n<td>Schicht- und einseitiger Transport<\/td>\n<td>Kann seitliche Variation nicht darstellen<\/td>\n<\/tr>\n<tr>\n<td><code>Grid2D<\/code><\/td>\n<td>Rechteckige planare Dom\u00e4nen<\/td>\n<td>beschr\u00e4nkt auf einfache Grenzen<\/td>\n<\/tr>\n<tr>\n<td><code>Grid3D<\/code><\/td>\n<td>Volle volumetrische Modelle<\/td>\n<td>Hohe Rechenkosten<\/td>\n<\/tr>\n<tr>\n<td>Ungleichm\u00e4\u00dfiges Gitter<\/td>\n<td>Lokalisierte Gradienten und Schnittstellen<\/td>\n<td>erfordert sorgf\u00e4ltige Abstands\u00fcberg\u00e4nge<\/td>\n<\/tr>\n<tr>\n<td>Periodisches Gitter<\/td>\n<td>Wiederholte Strukturen und Einheitszellen<\/td>\n<td>Gegenseitige Grenzen sind verbunden<\/td>\n<\/tr>\n<tr>\n<td>zylindrisches oder sph\u00e4risches Gitter<\/td>\n<td>Radialsymmetrische Systeme<\/td>\n<td>ung\u00fcltig, wenn Winkelvariationen wichtig sind<\/td>\n<\/tr>\n<tr>\n<td>GMSH-Mesh<\/td>\n<td>Gebogene und unregelm\u00e4\u00dfige Geometrie<\/td>\n<td>Komplexere Generierung und Qualit\u00e4tskontrolle<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Ein praktischer Arbeitsablauf f\u00fcr die Netzauswahl<\/h2>\n<p>Beginnen Sie mit der Identifizierung der physischen Form der Dom\u00e4ne und der Dimensionen, in denen die L\u00f6sung variieren kann. \u00dcberpr\u00fcfen Sie, ob Symmetrie ein 3D-Problem auf 2D oder 1D reduzieren kann.<\/p>\n<p>W\u00e4hlen Sie die einfachste geeignete Netzklasse. Sch\u00e4tzen Sie, wo starke Gradienten oder Grenzfl\u00e4chen auftreten k\u00f6nnen, und passen Sie die Zellgr\u00f6\u00dfe entsprechend an.<\/p>\n<p>\u00dcberpr\u00fcfen Sie Zellzentren, Dom\u00e4nendimensionen, Volumen und Grenzmasken. Visualisieren Sie das Netz und wenden Sie eine einfache Testvariable an, bevor Sie die vollst\u00e4ndige Gleichung l\u00f6sen.<\/p>\n<p>F\u00fchren Sie die Simulation mit mehr als einer Aufl\u00f6sung aus und vergleichen Sie die Hauptergebnisse. Gehen Sie zu GMSH, lokaler Verfeinerung oder Parallelverarbeitung nur, wenn das Basisgitter die geometrischen oder numerischen Anforderungen nicht erf\u00fcllen kann.<\/p>\n<h2>Schlussfolgerung<\/h2>\n<p>FIPY-Meshes definieren die Geometrie, Konnektivit\u00e4t, Zellvolumen, Fl\u00e4chen und Koordinaten, die von der Finite Volume-Methode verwendet werden. Sie liefern die Struktur, auf der Variablen, Gleichungen, Fl\u00fcsse und Randbedingungen wirken.<\/p>\n<p>Regelm\u00e4\u00dfige Klassen wie <code>Grid1D<\/code>, <code>Grid2D<\/code> und <code>Grid3D<\/code> decken viele gemeinsame Probleme ab. Ungleichm\u00e4\u00dfige, periodische, zylindrische, sph\u00e4rische, dreieckige und GMSH-basierte Netze unterst\u00fctzen spezialisiertere Dom\u00e4nen.<\/p>\n<p>Das detaillierteste Netz ist nicht automatisch das beste. Ein gutes Mesh erfasst das erforderliche physische Verhalten und h\u00e4lt die Rechenkosten \u00fcberschaubar. Korrekte Grenzmasken, angemessene Zellqualit\u00e4t, geeignete Koordinatensysteme und Konvergenztests sind alle unerl\u00e4sslich.<\/p>\n<p>Durch die Auswahl des einfachsten ausreichenden Rasters und der Verfeinerung nur bei Bedarf k\u00f6nnen FIPY-Benutzer Simulationen erstellen, die leichter zu verstehen, schneller zu l\u00f6sen und zuverl\u00e4ssiger sind.<\/p>\n<\/article>\n","protected":false,"raw":"<article>\n<p>FIPY ist ein Python-basiertes Framework zum L\u00f6sen von partiellen Differentialgleichungen mit der Finite-Volumen-Methode. Es wird \u00fcblicherweise f\u00fcr Diffusion, W\u00e4rme\u00fcbertragung, Phasenfeldmodellierung, Elektrochemie, fluidbezogener Transport und andere Probleme verwendet, die durch Konservierungsgleichungen ausgedr\u00fcckt werden k\u00f6nnen.<\/p>\n<p>Jede FIPY-Simulation beginnt mit einem Netz. Das Netz definiert die physikalische Dom\u00e4ne, unterteilt sie in Kontrollvolumina, identifiziert die Grenzen zwischen diesen Volumes und bestimmt, wo numerische Variablen gespeichert werden. Ein sorgf\u00e4ltig ausgew\u00e4hltes Netz kann ein Modell genau und effizient machen. Ein schlechtes Netz kann instabile Berechnungen, unrealistische Steigungen oder unn\u00f6tige Rechenkosten verursachen.<\/p>\n<p>FIPY unterst\u00fctzt einfache kartesische Gitter, ungleichm\u00e4\u00dfige Abst\u00e4nde, periodische Dom\u00e4nen, zylindrische und sph\u00e4rische Koordinaten, dreieckige Strukturen und mit GMSH erstellte Netze. Das Verst\u00e4ndnis dieser Optionen hilft Benutzern, das einfachste Raster auszuw\u00e4hlen, das das physische Problem immer noch korrekt darstellt.<\/p>\n<h2>Was ist ein Netz in FIPY?<\/h2>\n<p>Ein Netz ist eine diskrete Darstellung eines kontinuierlichen physikalischen Bereichs. Anstatt an jedem m\u00f6glichen Punkt eine Differentialgleichung zu l\u00f6sen, teilt FIPY die Dom\u00e4ne in eine endliche Anzahl von Zellen und berechnet ungef\u00e4hre Werte in ihnen.<\/p>\n<p>Jede Zelle wirkt als Kontrollvolumen. Physikalische Gr\u00f6\u00dfen wie Temperatur, Konzentration, Druck oder Phasenfraktion sind \u00fcblicherweise mit Zellzentren verbunden. Der Transport zwischen benachbarten Zellen wird \u00fcber die Gesichter berechnet, die sie trennen.<\/p>\n<p>Das Netz bietet sowohl Geometrie als auch Topologie. Geometrie beschreibt Gr\u00f6\u00dfen, Koordinaten, Bereiche und Volumina. Die Topologie beschreibt, welche Zellen Gesichter teilen und wie die Elemente verbunden sind.<\/p>\n<p>Diese Information erm\u00f6glicht es FIPY, eine Differentialgleichung in ein System von algebraischen Gleichungen umzuwandeln, das ein numerischer Solver verarbeiten kann.<\/p>\n<h2>Zellen, Gesichter und Eckpunkte<\/h2>\n<p>FIPY-Netze bestehen aus drei Hauptstrukturkomponenten: Zellen, Fl\u00e4chen und Scheitelpunkten.<\/p>\n<p>Zellen sind die Kontrollvolumina, die von der Finite-Volumen-Methode verwendet werden. Eine eindimensionale Zelle ist ein Liniensegment. Eine zweidimensionale Zelle kann ein Rechteck oder ein Dreieck sein. Eine dreidimensionale Zelle kann ein Kasten oder ein anderes polyedrisches Volumen sein.<\/p>\n<p>Gesichter bilden die Grenzen von Zellen. Eine Innenseite trennt zwei benachbarte Zellen. An der \u00e4u\u00dferen Begrenzung der gesamten Dom\u00e4ne liegt eine Au\u00dfenfl\u00e4che.<\/p>\n<p>Ecken definieren die geometrischen Punkte, aus denen Fl\u00e4chen und Zellen konstruiert werden. Die meisten Benutzer manipulieren die Eckpunkte nicht direkt, wenn sie mit regul\u00e4ren Gittern arbeiten, sondern werden beim Importieren oder Erstellen unregelm\u00e4\u00dfiger Geometrie wichtig.<\/p>\n<p>Die Beziehungen zwischen diesen Komponenten bestimmen, wie sich Werte und Fl\u00fcsse durch die Simulation bewegen.<\/p>\n<h2>Warum Netzstruktur bei der Finite-Volumen-Methode wichtig ist<\/h2>\n<p>Die Finite-Volumen-Methode integriert eine ma\u00dfgebliche Gleichung \u00fcber jede Zelle. Es wird dann berechnet, wie viel von einer physikalischen Gr\u00f6\u00dfe durch die umgebenden Gesichter gelangt oder verl\u00e4sst.<\/p>\n<p>F\u00fcr ein Diffusionsproblem sch\u00e4tzt FIPY Gradienten zwischen benachbarten Zellwerten und berechnet den diffusiven Fluss \u00fcber jede Fl\u00e4che. F\u00fcr ein Konvektionsproblem h\u00e4ngen die Richtung und Gr\u00f6\u00dfe des Transports von fl\u00e4chenzentrierten Geschwindigkeiten und normalen Vektoren ab.<\/p>\n<p>Die Zellgr\u00f6\u00dfe beeinflusst die Aufl\u00f6sung. Gesichtsbereich beeinflusst die Menge des Flusses. Das Zellvolumen beeinflusst die Akkumulation und die Quellbegriffe. Der Abstand zwischen benachbarten Zellzentren beeinflusst die Gradientenn\u00e4herung.<\/p>\n<p>Dadurch ist das Netz nicht nur ein visueller Container. Seine Geometrie tritt direkt in die numerischen Gleichungen ein.<\/p>\n<h2>Strukturierte und unstrukturierte Netze<\/h2>\n<p>Ein strukturiertes Netz ordnet Zellen in einem vorhersehbaren Muster an. Rechteckige Gitter sind das h\u00e4ufigste Beispiel. Zellen bilden Zeilen, Spalten und Schichten, und ihre Nachbarn k\u00f6nnen systematisch identifiziert werden.<\/p>\n<p>Strukturierte Gitter sind einfach zu erstellen und in der Regel effizient zu verarbeiten. Sie eignen sich f\u00fcr rechteckige Dom\u00e4nen, Schichtsysteme, Kan\u00e4le und Probleme mit einfachen Grenzen.<\/p>\n<p>Ein unstrukturiertes Netz folgt nicht einer regelm\u00e4\u00dfigen Reihen-und-S\u00e4ulen-Anordnung. Es kann Dreiecke, Tetraeder oder unregelm\u00e4\u00dfige Polygone enthalten. Unstrukturierte Netze k\u00f6nnen gebogene Grenzen, L\u00f6cher, schmale Merkmale und komplexe technische Geometrien genauer anpassen.<\/p>\n<p>Die Flexibilit\u00e4t eines unstrukturierten Netzes ist mit zus\u00e4tzlichen Kosten verbunden. Die Erzeugung von Netzen, Qualit\u00e4tskontrollen, Grenzauswahl und numerische Verarbeitung wird komplizierter.<\/p>\n<h2>Erstellen eines eindimensionalen Rasters<\/h2>\n<p>Das einfachste FIPY-Mesh ist <code>Grid1D<\/code> . Es unterteilt eine Linie in eine bestimmte Anzahl von Zellen.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(nx=100, dx=0.01)<\/code><\/pre>\n<p>Der Parameter <code>nx<\/code> definiert die Anzahl der Zellen. Der Parameter <code>dx<\/code> definiert die Breite jeder Zelle. In diesem Beispiel betr\u00e4gt die Gesamtl\u00e4nge der Dom\u00e4ne eine Einheit.<\/p>\n<p>Eindimensionale Gitter sind n\u00fctzlich f\u00fcr die geschichtete Diffusion, die W\u00e4rme\u00fcbertragung durch eine Wand, Konzentrations\u00e4nderungen entlang eines Kanals und Systeme mit starker Symmetrie. Ein 1D-Modell ist oft viel schneller als eine 2D- oder 3D-Simulation und kann ausreichend sein, wenn Variationen in andere Richtungen ignoriert werden k\u00f6nnen.<\/p>\n<h2>Erstellen eines zweidimensionalen Rasters<\/h2>\n<p>Mit <code>Grid2D<\/code> kann eine rechteckige zweidimensionale Dom\u00e4ne erstellt werden.<\/p>\n<pre><code>from fipy import Grid2D\n\nmesh = Grid2D(\n    nx=50,\n    ny=30,\n    dx=0.02,\n    dy=0.02\n)<\/code><\/pre>\n<p>Das Netz enth\u00e4lt 50 Zellen entlang der x-Achse und 30 Zellen entlang der Y-Achse. Jede Zelle ist 0,02 Einheiten breit und 0,02 Einheiten hoch.<\/p>\n<p>Diese Struktur eignet sich f\u00fcr planare W\u00e4rme\u00fcbertragung, Materialmikrostrukturen, Diffusion \u00fcber Oberfl\u00e4chen, elektrostatische Probleme und viele Phasenfeldbeispiele.<\/p>\n<p>Ein rechteckiges Gitter ist normalerweise der beste Ausgangspunkt, wenn die physikalische Dom\u00e4ne einfach ist. Es ist einfach zu visualisieren, zu verfeinern und auf die Netzunabh\u00e4ngigkeit zu testen.<\/p>\n<h2>Erstellen eines dreidimensionalen Rasters<\/h2>\n<p>FIPY stellt <code>Grid3D<\/code> f\u00fcr volumetrische Dom\u00e4nen bereit.<\/p>\n<pre><code>from fipy import Grid3D\n\nmesh = Grid3D(\n    nx=40,\n    ny=30,\n    nz=20,\n    dx=0.01,\n    dy=0.01,\n    dz=0.01\n)<\/code><\/pre>\n<p>Dreidimensionale Simulationen k\u00f6nnen die vollst\u00e4ndige r\u00e4umliche Geometrie darstellen, erfordern jedoch viel mehr Speicher und Verarbeitungszeit. Die Verdoppelung der Zellenzahl in jede Richtung kann die Gesamtzahl der Zellen um den Faktor acht erh\u00f6hen.<\/p>\n<p>Vor der Verwendung eines 3D-Gitters ist es sinnvoll zu pr\u00fcfen, ob Symmetrie oder Ma\u00dfreduktion ein ad\u00e4quates Ergebnis liefern kann. Ein zylindrisches oder eindimensionales Radialmodell kann manchmal eine viel teurere 3D-Simulation ersetzen.<\/p>\n<h2>Einheitlicher und ungleichm\u00e4\u00dfiger Abstand<\/h2>\n<p>Ein einheitliches Gitter verwendet Zellen gleicher Gr\u00f6\u00dfe entlang einer bestimmten Achse. Dies ist praktisch, wenn sich die L\u00f6sung im gesamten Bereich allm\u00e4hlich \u00e4ndert.<\/p>\n<p>Einige Probleme enthalten scharfe Gradienten in der N\u00e4he einer Grenze, Schnittstelle oder Quelle. \u00dcberall ein feines Gitter zu verwenden, kann verschwenderisch sein. FIPY kann durch Empfangen einer Sequenz von Zellbreiten einen ungleichm\u00e4\u00dfigen Abstand erzeugen.<\/p>\n<pre><code>from fipy import Grid1D\n\nmesh = Grid1D(\n    dx=(0.01, 0.01, 0.02, 0.04, 0.08)\n)<\/code><\/pre>\n<p>Die Zellen werden immer breiter. Kleinere Zellen k\u00f6nnen in der N\u00e4he einer wichtigen Grenze platziert werden, w\u00e4hrend gr\u00f6\u00dfere Zellen Bereiche abdecken, in denen sich die L\u00f6sung langsam \u00e4ndert.<\/p>\n<p>Ungleichm\u00e4\u00dfige Gitter reduzieren die Rechenkosten, aber abrupte \u00c4nderungen der Zellgr\u00f6\u00dfe k\u00f6nnen die numerische Qualit\u00e4t verringern. Zelldimensionen sollten sich normalerweise allm\u00e4hlich \u00e4ndern, anstatt zwischen extrem unterschiedlichen Werten zu springen.<\/p>\n<h2>Zugriff auf Zellzentren<\/h2>\n<p>FIPY stellt Zellkoordinaten durch <code>mesh.cellCenters<\/code> frei. Diese Koordinaten werden h\u00e4ufig verwendet, um Anfangsbedingungen, Quellen, r\u00e4umliche Koeffizienten und interessierende Regionen zu definieren.<\/p>\n<pre><code>x, y = mesh.cellCenters<\/code><\/pre>\n<p>Ein Benutzer kann einen kreisf\u00f6rmigen Anfangsbereich erstellen, indem er eine logische Bedingung auf die Koordinaten anwendet:<\/p>\n<pre><code>initial_region = (\n    (x - 0.5) ** 2 + (y - 0.5) ** 2\n) &lt; 0.1 ** 2<\/code><\/pre>\n<p>Die resultierende Boolesche Maske identifiziert Zellen, deren Zentren in den Kreis fallen.<\/p>\n<p>Cell-Center-Koordinaten sind besonders n\u00fctzlich, da die meisten FIPY-L\u00f6sungsvariablen als <code>CellVariable<\/code> -Objekte gespeichert werden.<\/p>\n<h2>Zellvariablen und Netzzuordnung<\/h2>\n<p>A <code>CellVariable<\/code> speichert einen Wert f\u00fcr jede Zelle im Netz.<\/p>\n<pre><code>from fipy import CellVariable\n\ntemperature = CellVariable(\n    name=\"temperature\",\n    mesh=mesh,\n    value=300.0\n)<\/code><\/pre>\n<p>Die Variable erh\u00e4lt automatisch die gleiche Anzahl von Werten wie das Netz Zellen. Es erh\u00e4lt auch Zugriff auf netzbasierte Operationen wie Gradienten, Gesichtsinterpolation und Einschr\u00e4nkungen.<\/p>\n<p>Werte k\u00f6nnen nur in ausgew\u00e4hlten Zellen ge\u00e4ndert werden:<\/p>\n<pre><code>temperature.setValue(\n    500.0,\n    where=initial_region\n)<\/code><\/pre>\n<p>Diese Beziehung zwischen Variablen und Netzen erm\u00f6glicht FIPY, geometrieabh\u00e4ngige Vorg\u00e4nge zu verwalten, ohne dass Benutzer jede Matrix manuell zusammenstellen m\u00fcssen.<\/p>\n<h2>Gesichtszentren und Gesichtsvariablen<\/h2>\n<p>Gesichter sind wichtig, weil Fl\u00fcsse durch sie hindurchgehen. Ihre Koordinaten sind \u00fcber <code>mesh.faceCenters<\/code> verf\u00fcgbar.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters<\/code><\/pre>\n<p>Gesichtskoordinaten k\u00f6nnen verwendet werden, um Grenzen zu identifizieren oder eine Bedingung nur auf einen Teil einer Kante anzuwenden.<\/p>\n<p>FIPY unterst\u00fctzt auch Objekte <code>FaceVariable<\/code>. Diese sind n\u00fctzlich f\u00fcr Mengen, die sich nat\u00fcrlich auf Fl\u00e4chen befinden, wie Str\u00f6mungsgeschwindigkeit oder extern angegebener Fluss.<\/p>\n<p>Eine zellzentrierte Variable kann h\u00e4ufig durch Eigenschaften wie <code>faceValue<\/code>  zu Fl\u00e4chen interpoliert werden. Der Verlauf an den Fl\u00e4chen kann \u00fcber <code>faceGrad<\/code> abgerufen werden.<\/p>\n<p>Es ist wichtig, den richtigen Speicherort f\u00fcr eine Variable zu w\u00e4hlen. Temperaturen und Konzentrationen sind h\u00e4ufig zellzentriert, w\u00e4hrend Flussmittel und Transportgeschwindigkeiten h\u00e4ufig frontzentriert sind.<\/p>\n<h2>Zellvolumina, Gesichtsbereiche und Normale<\/h2>\n<p>FIPY berechnet geometrische Eigenschaften automatisch. Zellvolumina sind \u00fcber <code>mesh.cellVolumes<\/code> verf\u00fcgbar. In 2D repr\u00e4sentieren diese Werte Zellbereiche unter den dimensionalen Annahmen des Modells.<\/p>\n<p>Gesichtsbereiche beeinflussen die Gesamtmenge an Material, W\u00e4rme oder Impuls durch eine Grenze. Gesichtsnormalen identifizieren die Richtung senkrecht zu jeder Fl\u00e4che.<\/p>\n<p>Die Ausrichtung einer Normalen ist bei der Berechnung der Fl\u00fcsse nach au\u00dfen und nach innen wichtig. Ein positiver Fluss in einer Richtung kann einen negativen Fluss relativ zu einer benachbarten Zelle darstellen.<\/p>\n<p>Diese Eigenschaften erm\u00f6glichen es FIPY, die Erhaltungsgesetze konsistent \u00fcber verschiedene Gitterformen und Koordinatensysteme anzuwenden.<\/p>\n<h2>Au\u00dfen- und Innenseiten<\/h2>\n<p>Fipy trennt Gesichter in Au\u00dfen- und Innengruppen. Au\u00dfenfl\u00e4chen bilden die \u00e4u\u00dfere Begrenzung der Dom\u00e4ne. Innenfl\u00e4chen verbinden benachbarte Zellen.<\/p>\n<p>Die entsprechenden Masken sind verf\u00fcgbar als:<\/p>\n<pre><code>mesh.exteriorFaces\nmesh.interiorFaces<\/code><\/pre>\n<p>Au\u00dfenfl\u00e4chen werden h\u00e4ufig f\u00fcr Randbedingungen verwendet. Innenfl\u00e4chen nehmen am gew\u00f6hnlichen Transport zwischen Zellen teil.<\/p>\n<p>Regelm\u00e4\u00dfige kartesische Gitter bieten auch praktische Richtungsmasken wie <code>facesLeft<\/code>, <code>facesRight<\/code>, <code>facesTop<\/code> und <code>facesBottom<\/code>.<\/p>\n<pre><code>temperature.constrain(\n    350.0,\n    where=mesh.facesLeft\n)\n\ntemperature.constrain(\n    300.0,\n    where=mesh.facesRight\n)<\/code><\/pre>\n<p>Dies wendet feste Werte an den linken und rechten Grenzen an.<\/p>\n<h2>Benutzerdefinierte Begrenzungsmasken erstellen<\/h2>\n<p>Eine physische Verfassung kann nur f\u00fcr einen Teil einer Grenze gelten. Benutzerdefinierte Masken k\u00f6nnen Standard-Gesichtss\u00e4tze mit Koordinatenbedingungen kombinieren.<\/p>\n<pre><code>x_face, y_face = mesh.faceCenters\n\nheated_section = (\n    mesh.facesTop\n    &amp; (x_face &gt; 0.4)\n    &amp; (x_face &lt; 0.6)\n)\n\ntemperature.constrain(\n    400.0,\n    where=heated_section\n)<\/code><\/pre>\n<p>Dieses Beispiel beschr\u00e4nkt nur den zentralen Teil der oberen Grenze.<\/p>\n<p>Benutzerdefinierte Masken k\u00f6nnen auch kreisf\u00f6rmige Grenzen, Schnittstellen, Einl\u00e4sse, Ausg\u00e4nge oder Fl\u00e4chen in der N\u00e4he einer bestimmten Koordinate ausw\u00e4hlen. Es ist wichtig, Masken aus Gesichtskoordinaten zu erstellen, wenn fl\u00e4chenbasierte Randbedingungen angewendet werden. Eine Zellmaske und eine Gesichtsmaske haben unterschiedliche L\u00e4ngen und Zwecke.<\/p>\n<h2>Periodische Gitterstrukturen<\/h2>\n<p>Periodische Netze verbinden gegen\u00fcberliegende Seiten einer Dom\u00e4ne. Ein Wert, der eine Seite verl\u00e4sst, tritt effektiv durch die andere wieder ein.<\/p>\n<p>FIPY bietet periodische Gitterklassen f\u00fcr ein, zwei und drei Dimensionen. Einige Varianten wenden die Periodizit\u00e4t nur entlang ausgew\u00e4hlter Achsen an.<\/p>\n<p>Periodische Gitter sind n\u00fctzlich f\u00fcr wiederholte Mikrostrukturen, Kristallmuster, repr\u00e4sentative Materialvolumina, wellen\u00e4hnliche Systeme und Phasenfeldsimulationen, bei denen k\u00fcnstliche \u00e4u\u00dfere Grenzen die L\u00f6sung verzerren w\u00fcrden.<\/p>\n<p>Benutzer sollten sich daran erinnern, dass sich eine periodische Richtung nicht wie eine gew\u00f6hnliche Au\u00dfengrenze verh\u00e4lt. Das Anwenden von widerspr\u00fcchlichen Randbeschr\u00e4nkungen auf die verbundenen Fl\u00e4chen kann ein falsches Modell erzeugen.<\/p>\n<h2>Zylindrische und sph\u00e4rische Gitter<\/h2>\n<p>Kartesische Gitter sind nicht immer die effizienteste Wahl. FIPY bietet zylindrische und sph\u00e4rische Netzklassen f\u00fcr Systeme mit radialer Symmetrie.<\/p>\n<p>Ein zylindrisches Gitter kann W\u00e4rme\u00fcbertragung durch eine Rohrwand, radiale Diffusion oder einen achsensymmetrischen Reaktor darstellen. Zellvolumina und Fl\u00e4chenbereiche \u00e4ndern sich mit Radius, und FIPY ber\u00fccksichtigt diese Geometrie automatisch.<\/p>\n<p>Ein sph\u00e4risches eindimensionales Gitter kann die Diffusion in ein Partikel, eine W\u00e4rme\u00fcbertragung innerhalb einer Kugel oder einen radialen chemischen Transport modellieren.<\/p>\n<p>Diese koordinatenspezifischen Netze k\u00f6nnen teure mehrdimensionale Berechnungen ersetzen, wenn die L\u00f6sung symmetrisch ist. Sie sollten jedoch nicht verwendet werden, wenn wichtige Winkelvariationen vorhanden sind.<\/p>\n<h2>Dreieckige und verzerrte Maschen<\/h2>\n<p>FIPY umfasst dreieckige Strukturen wie <code>Tri2D<\/code> . Dreieckige Zellen k\u00f6nnen eine unterschiedliche Diskretisierung eines zweidimensionalen Bereichs bereitstellen und k\u00f6nnen zum Testen des numerischen Verhaltens n\u00fctzlich sein.<\/p>\n<p>Verzerrte Gitter bewegen die Eckpunkte absichtlich von einer orthogonalen Anordnung weg. Sie k\u00f6nnen demonstrieren, wie ein Solver auf nicht-orthogonale Geometrie reagiert.<\/p>\n<p>Starke Schiefe kann die Genauigkeit der Gradienten verringern und den numerischen Fehler erh\u00f6hen. Ein Netz mit vielen Zellen von schlechter Qualit\u00e4t kann schlechter abschneiden als ein gr\u00f6beres, aber gut geformtes Gitter.<\/p>\n<p>Die Netzqualit\u00e4t sollte daher getrennt von der Netzaufl\u00f6sung bewertet werden. Das Hinzuf\u00fcgen von verzerrten Zellen verbessert nicht unbedingt die L\u00f6sung.<\/p>\n<h2>Modellierung komplexer Geometrie mit GMSH<\/h2>\n<p>Regelm\u00e4\u00dfige Gitter sind begrenzt, wenn die Dom\u00e4ne Kurven, L\u00f6cher, unregelm\u00e4\u00dfige Grenzen oder detaillierte dreidimensionale Merkmale enth\u00e4lt. FIPY kann GMSH verwenden, um komplexere Netze zu generieren oder zu importieren.<\/p>\n<p>Aus den GMSH-Befehlen kann ein grundlegendes zweidimensionales Netz erstellt werden:<\/p>\n<pre><code>from fipy import Gmsh2D\n\nmesh = Gmsh2D(\"\"\"\n    cellSize = 0.05;\n\n    Point(1) = {0, 0, 0, cellSize};\n    Point(2) = {1, 0, 0, cellSize};\n    Point(3) = {1, 1, 0, cellSize};\n    Point(4) = {0, 1, 0, cellSize};\n\n    Line(1) = {1, 2};\n    Line(2) = {2, 3};\n    Line(3) = {3, 4};\n    Line(4) = {4, 1};\n\n    Curve Loop(1) = {1, 2, 3, 4};\n    Plane Surface(1) = {1};\n\"\"\")<\/code><\/pre>\n<p>GMSH kann auch Geometrie aus einer <code>.geo<\/code>-Datei laden oder eine generierte <code>.msh<\/code>-Datei importieren. Wenn Sie komplexe Geometrien in einer separaten Datei aufbewahren, ist das Python-Modell h\u00e4ufiger pflegeleicht.<\/p>\n<h2>Lokale Verfeinerung<\/h2>\n<p>Komplexe Probleme ben\u00f6tigen oft nur in ausgew\u00e4hlten Bereichen kleine Zellen. Die lokale Verfeinerung kann die Aufl\u00f6sung nahe Schnittstellen, Ecken, Grenzen, Quellen, engen Kan\u00e4len oder steilen Gradienten verbessern.<\/p>\n<p>GMSH bietet flexible Steuerelemente zum Einstellen lokaler Elementgr\u00f6\u00dfen. Eine feine Region kann um ein wichtiges Merkmal herum angeordnet werden, w\u00e4hrend der Rest der Dom\u00e4ne gr\u00f6\u00dfere Zellen verwendet.<\/p>\n<p>Dieser Ansatz ist in der Regel effizienter als die Verfeinerung des gesamten Gitters. \u00dcberg\u00e4nge zwischen feinen und groben Regionen sollten jedoch allm\u00e4hlich erfolgen. Pl\u00f6tzliche Gr\u00f6\u00dfen\u00e4nderungen k\u00f6nnen die numerische Qualit\u00e4t beeintr\u00e4chtigen oder schlecht geformte Zellen erzeugen.<\/p>\n<h2>Netzkonvergenztest<\/h2>\n<p>Ein Simulationsergebnis sollte nicht stark von einer beliebigen Maschengr\u00f6\u00dfe abh\u00e4ngen. Die Netzkonvergenzpr\u00fcfung pr\u00fcft, ob die L\u00f6sung stabil wird, wenn das Gitter verfeinert wird.<\/p>\n<p>Ein praktischer Test verwendet mindestens zwei oder drei Aufl\u00f6sungen. Der Benutzer vergleicht eine wichtige Gr\u00f6\u00dfe wie Maximaltemperatur, Durchschnittskonzentration, Schnittstellenposition oder Gesamtfluss.<\/p>\n<p>Wenn sich das Ergebnis nach der Verfeinerung erheblich \u00e4ndert, war das urspr\u00fcngliche Netz wahrscheinlich zu grob. Wenn die Differenz klein wird, kann eine weitere Verfeinerung ihre Rechenkosten nicht rechtfertigen.<\/p>\n<p>Die Konvergenz sollte auf den f\u00fcr die Studie wichtigen Output getestet werden. Ein Netz kann einen Durchschnittswert genau vorhersagen, w\u00e4hrend es dennoch kein lokales Maximum erfassen kann.<\/p>\n<h2>Netze in parallelen Simulationen<\/h2>\n<p>Gro\u00dfe FIPY-Simulationen k\u00f6nnen ein Netz \u00fcber mehrere Prozesse verteilen. Jeder Prozess arbeitet mit einem Teil der Dom\u00e4ne und tauscht Informationen mit benachbarten Teilen aus.<\/p>\n<p>Parallele Netze k\u00f6nnen lokale Zellen, \u00dcberlappungszellen und global identifizierte Werte enthalten. Die Gr\u00f6\u00dfe eines lokalen Numpy-Arrays kann daher von der Gesamtzahl der Zellen im vollst\u00e4ndigen Netz abweichen.<\/p>\n<p>Benutzer sollten vorsichtig sein, wenn sie Arrays direkt indizieren oder Werte w\u00e4hrend der parallelen Ausf\u00fchrung exportieren. Code, der davon ausgeht, dass jeder Prozess das vollst\u00e4ndige Netz besitzt, kann im seriellen Modus gearbeitet werden, schl\u00e4gt jedoch im parallelen Modus fehl.<\/p>\n<p>Die parallele Ausf\u00fchrung kann die Laufzeit bei gro\u00dfen Problemen verk\u00fcrzen, aber der Kommunikationsaufwand kann den Nutzen f\u00fcr kleine Netze einschr\u00e4nken.<\/p>\n<h2>Inspizieren und visualisieren eines Netzes<\/h2>\n<p>Ein Netz sollte vor dem L\u00f6sen einer komplexen Gleichung \u00fcberpr\u00fcft werden. Benutzer k\u00f6nnen Zellzahlen, Koordinatenbereiche, Volumina, Au\u00dfenmasken und Begrenzungsauswahlen \u00fcberpr\u00fcfen.<\/p>\n<p>FIPY-Viewer k\u00f6nnen eine Variable auf dem Netz anzeigen:<\/p>\n<pre><code>from fipy import Viewer\n\nviewer = Viewer(vars=temperature)\nviewer.plot()<\/code><\/pre>\n<p>Die Visualisierung kann falsche Dom\u00e4nendimensionen, unerwartete Zellenabst\u00e4nde, fehlende Regionen oder schlecht ausgew\u00e4hlte Grenzmasken aufdecken.<\/p>\n<p>Bei GMSH-basierter Geometrie ist es sinnvoll, das generierte Netz in einem dedizierten Visualisierungstool zu \u00fcberpr\u00fcfen, bevor eine lange Simulation beginnt.<\/p>\n<h2>H\u00e4ufige Anf\u00e4ngerfehler<\/h2>\n<p>Ein h\u00e4ufiger Fehler ist die Verwirrung der Zellzahl mit der physischen Gr\u00f6\u00dfe. Ein Gitter mit 100 Zellen hat keine L\u00e4nge von 100, es sei denn, jede Zelle ist eine Einheit breit.<\/p>\n<p>Ein weiterer Fehler ist das Anwenden einer Grenzbedingung mit einer Zellmaske anstelle einer Gesichtsmaske. Randbedingungen wirken im Allgemeinen auf Au\u00dfenfl\u00e4chen.<\/p>\n<p>Benutzer k\u00f6nnen auch ein zu grobes Raster ausw\u00e4hlen, um einen Farbverlauf zu erfassen, oder f\u00fcr ein einfaches Problem unn\u00f6tig gut.<\/p>\n<p>Andere h\u00e4ufige Probleme sind falsche Koordinatenannahmen, abrupter ungleichm\u00e4\u00dfiger Abstand, schlechte GMSH-Elementqualit\u00e4t, widerspr\u00fcchliche periodische Bedingungen und \u00dcberspringen von Konvergenztests.<\/p>\n<h2>Auswahl des richtigen FIPY-Mesh<\/h2>\n<table class=\"custom-table\">\n<tbody><tr>\n<th>Maschentyp<\/th>\n<th>Beste Verwendung<\/th>\n<th>Hauptbegrenzung<\/th>\n<\/tr>\n<tr>\n<td><code>Grid1D<\/code><\/td>\n<td>Schicht- und einseitiger Transport<\/td>\n<td>Kann seitliche Variation nicht darstellen<\/td>\n<\/tr>\n<tr>\n<td><code>Grid2D<\/code><\/td>\n<td>Rechteckige planare Dom\u00e4nen<\/td>\n<td>beschr\u00e4nkt auf einfache Grenzen<\/td>\n<\/tr>\n<tr>\n<td><code>Grid3D<\/code><\/td>\n<td>Volle volumetrische Modelle<\/td>\n<td>Hohe Rechenkosten<\/td>\n<\/tr>\n<tr>\n<td>Ungleichm\u00e4\u00dfiges Gitter<\/td>\n<td>Lokalisierte Gradienten und Schnittstellen<\/td>\n<td>erfordert sorgf\u00e4ltige Abstands\u00fcberg\u00e4nge<\/td>\n<\/tr>\n<tr>\n<td>Periodisches Gitter<\/td>\n<td>Wiederholte Strukturen und Einheitszellen<\/td>\n<td>Gegenseitige Grenzen sind verbunden<\/td>\n<\/tr>\n<tr>\n<td>zylindrisches oder sph\u00e4risches Gitter<\/td>\n<td>Radialsymmetrische Systeme<\/td>\n<td>ung\u00fcltig, wenn Winkelvariationen wichtig sind<\/td>\n<\/tr>\n<tr>\n<td>GMSH-Mesh<\/td>\n<td>Gebogene und unregelm\u00e4\u00dfige Geometrie<\/td>\n<td>Komplexere Generierung und Qualit\u00e4tskontrolle<\/td>\n<\/tr>\n<\/tbody><\/table>\n<h2>Ein praktischer Arbeitsablauf f\u00fcr die Netzauswahl<\/h2>\n<p>Beginnen Sie mit der Identifizierung der physischen Form der Dom\u00e4ne und der Dimensionen, in denen die L\u00f6sung variieren kann. \u00dcberpr\u00fcfen Sie, ob Symmetrie ein 3D-Problem auf 2D oder 1D reduzieren kann.<\/p>\n<p>W\u00e4hlen Sie die einfachste geeignete Netzklasse. Sch\u00e4tzen Sie, wo starke Gradienten oder Grenzfl\u00e4chen auftreten k\u00f6nnen, und passen Sie die Zellgr\u00f6\u00dfe entsprechend an.<\/p>\n<p>\u00dcberpr\u00fcfen Sie Zellzentren, Dom\u00e4nendimensionen, Volumen und Grenzmasken. Visualisieren Sie das Netz und wenden Sie eine einfache Testvariable an, bevor Sie die vollst\u00e4ndige Gleichung l\u00f6sen.<\/p>\n<p>F\u00fchren Sie die Simulation mit mehr als einer Aufl\u00f6sung aus und vergleichen Sie die Hauptergebnisse. Gehen Sie zu GMSH, lokaler Verfeinerung oder Parallelverarbeitung nur, wenn das Basisgitter die geometrischen oder numerischen Anforderungen nicht erf\u00fcllen kann.<\/p>\n<h2>Schlussfolgerung<\/h2>\n<p>FIPY-Meshes definieren die Geometrie, Konnektivit\u00e4t, Zellvolumen, Fl\u00e4chen und Koordinaten, die von der Finite Volume-Methode verwendet werden. Sie liefern die Struktur, auf der Variablen, Gleichungen, Fl\u00fcsse und Randbedingungen wirken.<\/p>\n<p>Regelm\u00e4\u00dfige Klassen wie <code>Grid1D<\/code>, <code>Grid2D<\/code> und <code>Grid3D<\/code> decken viele gemeinsame Probleme ab. Ungleichm\u00e4\u00dfige, periodische, zylindrische, sph\u00e4rische, dreieckige und GMSH-basierte Netze unterst\u00fctzen spezialisiertere Dom\u00e4nen.<\/p>\n<p>Das detaillierteste Netz ist nicht automatisch das beste. Ein gutes Mesh erfasst das erforderliche physische Verhalten und h\u00e4lt die Rechenkosten \u00fcberschaubar. Korrekte Grenzmasken, angemessene Zellqualit\u00e4t, geeignete Koordinatensysteme und Konvergenztests sind alle unerl\u00e4sslich.<\/p>\n<p>Durch die Auswahl des einfachsten ausreichenden Rasters und der Verfeinerung nur bei Bedarf k\u00f6nnen FIPY-Benutzer Simulationen erstellen, die leichter zu verstehen, schneller zu l\u00f6sen und zuverl\u00e4ssiger sind.<\/p>\n<\/article>\n"},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Reading Time: <\/span> <span class=\"rt-time\"> 10<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>FIPY ist ein Python-basiertes Framework zum L\u00f6sen von partiellen Differentialgleichungen mit der Finite-Volumen-Methode. Es wird \u00fcblicherweise f\u00fcr Diffusion, W\u00e4rme\u00fcbertragung, Phasenfeldmodellierung, Elektrochemie, fluidbezogener Transport und andere Probleme verwendet, die durch Konservierungsgleichungen ausgedr\u00fcckt werden k\u00f6nnen. Jede FIPY-Simulation beginnt mit einem Netz. Das Netz definiert die physikalische Dom\u00e4ne, unterteilt sie in Kontrollvolumina, identifiziert die Grenzen zwischen diesen Volumes [&hellip;]<\/p>\n","protected":false,"raw":""},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_locale":"de_DE","_original_post":"https:\/\/matforge.org\/?p=471","iawp_total_views":1,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-874","post","type-post","status-publish","format-standard","hentry","category-fipy-documentation-examples-development","de-DE"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Wie FIPY mit Netzen und Gitterstrukturen umgeht<\/title>\n<meta name=\"description\" content=\"Erfahren Sie, wie FIPY strukturierte, ungleichm\u00e4\u00dfige, periodische, zylindrische und GMSH-basierte Netze f\u00fcr die PDE-Modellierung erstellt, verwaltet und verfeinert.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wie FIPY mit Netzen und Gitterstrukturen umgeht\" \/>\n<meta property=\"og:description\" content=\"Erfahren Sie, wie FIPY strukturierte, ungleichm\u00e4\u00dfige, periodische, zylindrische und GMSH-basierte Netze f\u00fcr die PDE-Modellierung erstellt, verwaltet und verfeinert.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:23:26+00:00\" \/>\n<meta name=\"author\" content=\"Tomas Delgado\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tomas Delgado\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/\"},\"author\":{\"name\":\"Tomas Delgado\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"headline\":\"Wie FIPY mit Netzen und Gitterstrukturen umgeht\",\"datePublished\":\"2026-07-30T12:23:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/\"},\"wordCount\":2840,\"commentCount\":0,\"articleSection\":[\"FIPY: Dokumentation, Beispiele &amp; Entwicklung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/\",\"name\":\"Wie FIPY mit Netzen und Gitterstrukturen umgeht\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:23:26+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"description\":\"Erfahren Sie, wie FIPY strukturierte, ungleichm\u00e4\u00dfige, periodische, zylindrische und GMSH-basierte Netze f\u00fcr die PDE-Modellierung erstellt, verwaltet und verfeinert.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/how-fipy-handles-meshes-and-grid-structures\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wie FIPY mit Netzen und Gitterstrukturen umgeht\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\",\"url\":\"https:\\\/\\\/matforge.org\\\/\",\"name\":\"matforge.org\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/matforge.org\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\",\"name\":\"Tomas Delgado\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g\",\"caption\":\"Tomas Delgado\"},\"sameAs\":[\"http:\\\/\\\/matforge.org\"],\"url\":\"https:\\\/\\\/matforge.org\\\/author\\\/tomas-delgado\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Wie FIPY mit Netzen und Gitterstrukturen umgeht","description":"Erfahren Sie, wie FIPY strukturierte, ungleichm\u00e4\u00dfige, periodische, zylindrische und GMSH-basierte Netze f\u00fcr die PDE-Modellierung erstellt, verwaltet und verfeinert.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/","og_locale":"de_DE","og_type":"article","og_title":"Wie FIPY mit Netzen und Gitterstrukturen umgeht","og_description":"Erfahren Sie, wie FIPY strukturierte, ungleichm\u00e4\u00dfige, periodische, zylindrische und GMSH-basierte Netze f\u00fcr die PDE-Modellierung erstellt, verwaltet und verfeinert.","og_url":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:23:26+00:00","author":"Tomas Delgado","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Tomas Delgado","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/"},"author":{"name":"Tomas Delgado","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"headline":"Wie FIPY mit Netzen und Gitterstrukturen umgeht","datePublished":"2026-07-30T12:23:26+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/"},"wordCount":2840,"commentCount":0,"articleSection":["FIPY: Dokumentation, Beispiele &amp; Entwicklung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/","url":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/","name":"Wie FIPY mit Netzen und Gitterstrukturen umgeht","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:23:26+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"description":"Erfahren Sie, wie FIPY strukturierte, ungleichm\u00e4\u00dfige, periodische, zylindrische und GMSH-basierte Netze f\u00fcr die PDE-Modellierung erstellt, verwaltet und verfeinert.","breadcrumb":{"@id":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/how-fipy-handles-meshes-and-grid-structures\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Wie FIPY mit Netzen und Gitterstrukturen umgeht"}]},{"@type":"WebSite","@id":"https:\/\/matforge.org\/#website","url":"https:\/\/matforge.org\/","name":"matforge.org","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/matforge.org\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Person","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061","name":"Tomas Delgado","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/202f82c9f4f4534a3ba77bf8a8fbef09cf8489f52bdf819082f21390da4e7c9a?s=96&d=mm&r=g","caption":"Tomas Delgado"},"sameAs":["http:\/\/matforge.org"],"url":"https:\/\/matforge.org\/author\/tomas-delgado\/"}]}},"_links":{"self":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/comments?post=874"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/874\/revisions"}],"predecessor-version":[{"id":1034,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/874\/revisions\/1034"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}