{"id":801,"date":"2026-07-30T12:21:36","date_gmt":"2026-07-30T12:21:36","guid":{"rendered":"https:\/\/matforge.org\/?p=801","raw":"https:\/\/matforge.org\/?p=801"},"modified":"2026-07-30T12:21:36","modified_gmt":"2026-07-30T12:21:36","slug":"solving-diffusion-equations-with-fipy","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/","title":{"rendered":"L\u00f6sen von Diffusionsgleichungen mit FIPY","raw":"L\u00f6sen von Diffusionsgleichungen mit FIPY"},"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\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>Die Diffusion ist eine der intuitivsten partiellen Differentialgleichungen (PDES), die Sie simulieren k\u00f6nnen: Ein scharfer Peak breitet sich aus, ein steiler Schritt gl\u00e4ttet sich in einen sanften \u00dcbergang und Gradienten verschwinden allm\u00e4hlich. Wenn Sie FIPY lernen, ist die Diffusion auch einer der besten Ausgangspunkte, da sie den FIPY-Kernworkflow sauber abbildet: <em>Mesh \u2192 Variable \u2192 Gleichung \u2192 Zeitschleife \u2192 Visualisierung <\/em>.<\/p>\n<p>In diesem Handbuch l\u00f6sen Sie die Diffusionsgleichung in FIPY von Grund auf, f\u00fchren eine vollst\u00e4ndige 1D-Simulation durch, die Sie sicher optimieren k\u00f6nnen, lernen, wie Sie die Ausgabe interpretieren, und dann sehen Sie, wie sich das gleiche Setup auf 2D erstreckt. Das Ziel ist praktisches Vertrauen: Sie sollten in der Lage sein, Aufl\u00f6sung, Zeitschritt, Diffusionsgeschwindigkeit und Randbedingungen zu \u00e4ndern, ohne das Modell zu brechen.<\/p>\n<h2>Was Diffusion bedeutet (ohne die schwere Mathematik)<\/h2>\n<p>Die Diffusion beschreibt, wie sich etwas aufgrund von Konzentrations- (oder Temperatur-) Unterschieden ausbreitet. Die W\u00e4rme breitet sich durch eine Stange aus. Ein Tropfen Farbstoff breitet sich in Wasser aus. Mathematisch schreiben wir oft Diffusion in dieser Form:<\/p>\n<pre><code>\u2202\u03c6\/\u2202t = \u2207\u00b7(D \u2207\u03c6)<\/code><\/pre>\n<p>Hier ist <code>\u03c6<\/code> das Feld, das Ihnen wichtig ist (Temperatur, Konzentration usw.). Der Koeffizient <code>D<\/code> steuert, wie schnell die Diffusion erfolgt. Gr\u00f6\u00dfer <code>D<\/code> bedeutet, dass das Profil schneller gl\u00e4ttet.<\/p>\n<p>Randbedingungen sind wichtig, da PDEs Regeln an den R\u00e4ndern der Dom\u00e4ne ben\u00f6tigen. Bei einem ersten Diffusionslauf sind \u201eNo-Flux\u201c -Grenzen \u00fcblich: Nichts flie\u00dft aus der Dom\u00e4ne. Das macht die Evolution leicht zu interpretieren, da das System nicht durch die Grenzen gezwungen wird.<\/p>\n<h2>Wie FIPY Diffusion darstellt<\/h2>\n<p>FIPY l\u00f6st PDEs mit der Finite Volume-Methode (FVM). Sie k\u00f6nnen sich Ihre Domain als in kleine Zellen aufgeteilt vorstellen. Das unbekannte Feld lebt auf diesen Zellen (typischerweise in den Zellzentren). Die Diffusion wird als Fluss zwischen benachbarten Zellen implementiert: Hohe Werte schieben den Fluss in Richtung niedrige Werte, bis das Profil glatter wird.<\/p>\n<p>Die praktischen FIPY-Bausteine sind:<\/p>\n<ul>\n<li><code>Mesh<\/code> \u2014 Geometrie und Aufl\u00f6sung (1D- oder 2D-Raster)<\/li>\n<li><code>CellVariable<\/code> \u2014 das Feld <code>\u03c6<\/code>, das Sie l\u00f6sen<\/li>\n<li><code>TransientTerm()<\/code> \u2014 die Zeitableitung \u2202\u03c6\/\u2202t<\/li>\n<li><code>DiffusionTerm(coeff=D)<\/code> \u2014 Der Diffusionsoperator<\/li>\n<li>Eine Zeitschleife \u2013 wiederholt mit <code>dt<\/code> l\u00f6sen und Schnappsch\u00fcsse visualisieren<\/li>\n<\/ul>\n<h2>Bevor Sie beginnen: Minimale Umgebungs-Checkliste<\/h2>\n<p>Sie ben\u00f6tigen Python plus FIPY und eine Plotbibliothek. Wenn Sie Notebooks verwenden, funktioniert der gleiche Code. F\u00fchren Sie einfach die Zellen in der richtigen Reihenfolge aus.<\/p>\n<ul>\n<li>Python installiert (eine moderne Version wird empfohlen)<\/li>\n<li>eine virtuelle Umgebung (empfohlen)<\/li>\n<li>FIPY installiert (und seine numerischen Abh\u00e4ngigkeiten)<\/li>\n<li>Matplotlib zum Plotten installiert<\/li>\n<\/ul>\n<h2>Erstes Arbeitsbeispiel: 1D-Diffusion<\/h2>\n<p>Wir modellieren die Diffusion auf einer 1D-Dom\u00e4ne von 0 nach 1 unter Verwendung eines einheitlichen Gitters. Die Anfangsbedingung ist ein Schritt:<br \/> <code>\u03c6 = 1<\/code> in der linken H\u00e4lfte und <code>\u03c6 = 0<\/code> in der rechten H\u00e4lfte. Die Diffusion wird diese Diskontinuit\u00e4t im Laufe der Zeit gl\u00e4tten.<\/p>\n<p>Der folgende Code ist ein vollst\u00e4ndiges Skript, das Sie so ausf\u00fchren k\u00f6nnen, wie es ist.<\/p>\n<pre><code># Solving Diffusion Equations with FiPy: 1D Example\n# Save as: diffusion_1d_fipy.py\n\nfrom fipy import Grid1D, CellVariable, TransientTerm, DiffusionTerm\nimport matplotlib.pyplot as plt\n\n# --- 1) Mesh setup ---\nnx = 200\ndx = 1.0 \/ nx\nmesh = Grid1D(nx=nx, dx=dx)\n\n# --- 2) Variable (field) ---\nphi = CellVariable(name=\"phi\", mesh=mesh, value=0.0)\n\n# Initial condition: step (left half = 1, right half = 0)\nx = mesh.cellCenters[0]\nphi.setValue(1.0, where=(x &lt; 0.5))\n\n# --- 3) Diffusion equation ---\nD = 1.0\neq = TransientTerm() == DiffusionTerm(coeff=D)\n\n# --- 4) Time stepping ---\ndt = 1e-4\nsteps = 2000\n\nsnapshots = []\ntimes = []\ncapture_at = {0, 50, 200, 800, 2000}\n\nfor step in range(steps + 1):\n    if step in capture_at:\n        snapshots.append(phi.value.copy())\n        times.append(step * dt)\n\n    eq.solve(var=phi, dt=dt)\n\n# --- 5) Plot ---\nplt.figure()\nfor y, t in zip(snapshots, times):\n    plt.plot(x.value, y, label=f\"t = {t:.4f}\")\n\nplt.xlabel(\"x\")\nplt.ylabel(\"phi\")\nplt.title(\"1D Diffusion in FiPy\")\nplt.legend()\nplt.show()<\/code><\/pre>\n<h2>Was jeder Block tut (damit Sie ihn sicher \u00e4ndern k\u00f6nnen)<\/h2>\n<h3>Mesh: Ihre Domain und Aufl\u00f6sung<\/h3>\n<p><code>Grid1D(nx=nx, dx=dx)<\/code> Erzeugt eine in <code>nx<\/code>-Zellen aufgeteilte Linie. Kleinere <code>dx<\/code> (gr\u00f6\u00dfer <code>nx<\/code>) gibt mehr Details, kostet aber mehr Berechnung. Ihre Domain-L\u00e4nge betr\u00e4gt ungef\u00e4hr <code>nx * dx<\/code> .<\/p>\n<h3>CellVariable: Das Feld, nach dem Sie l\u00f6sen<\/h3>\n<p><code>phi<\/code> wird in Zellzentren gespeichert. Sie beginnen mit einer Anfangsbedingung mit <code>setValue()<\/code>. Mit der Diffusion ist diese anf\u00e4ngliche Form das, was Sie im Laufe der Zeit entspannen.<\/p>\n<h3>Die Gleichung: Zeit\u00e4nderung entspricht Diffusion<\/h3>\n<p>Diese Zeile definiert die Diffusions-PDE in der Term-Syntax von FIPY:<\/p>\n<pre><code>TransientTerm() == DiffusionTerm(coeff=D)<\/code><\/pre>\n<p><code>D<\/code> Steuert, wie schnell der Schritt gl\u00e4ttet. Wenn Sie <code>D<\/code> erh\u00f6hen, sollten Sie die \u00dcbergangszone schneller erweitern.<\/p>\n<h3>Die Zeitschleife: Vorw\u00e4rts treten<\/h3>\n<p>Jeder Aufruf von <code>eq.solve(var=phi, dt=dt)<\/code> steuert die L\u00f6sung um einen Zeitschritt vor. Wir machen ein paar Schnappsch\u00fcsse, damit Sie die Entwicklung sehen k\u00f6nnen, ohne jeden einzelnen Schritt zu zeichnen.<\/p>\n<h2>So erkennen Sie, ob Ihre Diffusionslaufzeit richtig aussieht<\/h2>\n<p>Bei einer schrittweisen Anfangsbedingung sollte die Diffusion einen glatten \u00dcbergangsbereich erzeugen, der sich allm\u00e4hlich erweitert. Der scharfe Sprung sollte erweichen und die Kurve sollte mit der Zeit weniger steil werden.<\/p>\n<ul>\n<li>Wenn sich das Profil nicht \u00e4ndert: Ihre Schleife l\u00e4uft m\u00f6glicherweise nicht wie erwartet, oder <code>dt<\/code> und <code>steps<\/code> erzeugen zu wenig Gesamtzeit.<\/li>\n<li>Wenn das Profil verrauscht oder &#8222;aufbricht&#8220;: Reduzieren Sie <code>dt<\/code>, erh\u00f6hen Sie die Aufl\u00f6sung oder vereinfachen Sie die Grenzen.<\/li>\n<li>Wenn alles verschoben oder abgeschnitten aussieht: \u00dcberpr\u00fcfen Sie Ihren Ausgangszustand und best\u00e4tigen Sie, dass die X-Achse Ihrer Domain entspricht.<\/li>\n<\/ul>\n<h2>Auswahl von DT und DX: Praktische Tipps f\u00fcr Stabilit\u00e4t und Genauigkeit<\/h2>\n<p>Auch wenn der Code ausgef\u00fchrt wird, beeinflussen Parameterauswahl die Qualit\u00e4t und die Laufzeit. Drei Anpassungen decken die meisten \u201eErstmodell\u201c-Probleme ab:<\/p>\n<ul>\n<li>Reduzieren <code>dt<\/code> Wenn die Entwicklung zwischen den L\u00e4ufen zu sprunghaft, verrauscht oder inkonsistent aussieht. Ein schneller Test besteht darin, <code>dt<\/code>  zu halbieren und <code>steps<\/code>  zu verdoppeln, sodass die gesamte simulierte Zeit \u00e4hnlich bleibt.<\/li>\n<li>ERH\u00d6HEN <code>nx<\/code>, wenn die Kurve gezackt aussieht oder die \u00dcbergangszone schlecht aufgel\u00f6st ist. Mehr Zellen bedeuten normalerweise glattere Profile und bessere Steigungen bei h\u00f6heren Rechenkosten.<\/li>\n<li>Behandeln Sie gr\u00f6\u00dfere <code>D<\/code> als \u201eschnelleres System\u201c. Wenn die Diffusion stark ist, ben\u00f6tigen Sie normalerweise kleinere <code>dt <\/code>  (oder zumindest um zu \u00fcberpr\u00fcfen, ob sich die Ergebnisse nicht \u00e4ndern, wenn Sie die Zeit verfeinern).<\/li>\n<\/ul>\n<p>Eine einfache Gewohnheit, die Verwirrung verhindert: Wenn Sie <code>dt<\/code>  oder <code>nx<\/code>  \u00e4ndern, f\u00fchren Sie zwei L\u00e4ufe erneut aus und vergleichen Sie sie (grob oder verfeinert). Wenn die Kurven im Grunde gleich sind, sind Sie in einem guten Regime zum Lernen und Iteration.<\/p>\n<h2>Sechs schnelle Experimente, die Ihnen die Diffusion schnell lehren<\/h2>\n<ol>\n<li>Diffusionsgeschwindigkeit \u00e4ndern: Versuchen Sie <code>D = 0.1<\/code> und <code>D = 5.0<\/code> und vergleichen Sie, wie schnell sich der Schritt entspannt.<\/li>\n<li>Aufl\u00f6sung erh\u00f6hen: \u00c4ndern Sie <code>nx<\/code> von 200 auf 400 und sehen Sie, wie der \u00dcbergangsbereich aussieht.<\/li>\n<li>Versuchen Sie eine Beule anstelle eines Schritts: Stellen Sie <code>phi = 1<\/code> nur in einem schmalen Bereich ein und beobachten Sie, wie er sich symmetrisch ausbreitet.<\/li>\n<li>Erfassen Sie weitere Schnappsch\u00fcsse: F\u00fcgen Sie <code>capture_at<\/code> weitere Indizes hinzu, um die Entwicklung detaillierter zu sehen.<\/li>\n<li>l\u00e4nger laufen: Erh\u00f6hen Sie <code>steps<\/code> und best\u00e4tigen Sie, dass das Profil mit der Zeit gleichm\u00e4\u00dfiger wird.<\/li>\n<li>Ausgabe speichern: F\u00fcgen Sie <code>plt.savefig(\"diffusion_1d.png\", dpi=200)<\/code> vor <code>plt.show()<\/code> hinzu.<\/li>\n<\/ol>\n<h2>Upgrade auf 2D-Diffusion (Minimalwechsel, Big Payoff)<\/h2>\n<p>Sobald sich 1D wohl anf\u00fchlt, geht es beim Umschalten auf 2D haupts\u00e4chlich darum, das Netz und die Visualisierung zu \u00e4ndern. Die Gleichungsstruktur bleibt gleich. In 2D beginnen Sie normalerweise mit einem &#8222;Spot&#8220; (hoher Wert in einer kleinen Region) und beobachten, wie er sich zu einem glatten Fleck ausbreitet.<\/p>\n<pre><code># 2D Diffusion sketch (core ideas)\nfrom fipy import Grid2D, CellVariable, TransientTerm, DiffusionTerm\nimport matplotlib.pyplot as plt\n\nnx = ny = 100\ndx = dy = 1.0 \/ nx\nmesh = Grid2D(nx=nx, ny=ny, dx=dx, dy=dy)\n\nphi = CellVariable(name=\"phi\", mesh=mesh, value=0.0)\n\nx, y = mesh.cellCenters\nphi.setValue(1.0, where=((x - 0.5)**2 + (y - 0.5)**2 &lt; 0.05**2))\n\nD = 1.0\neq = TransientTerm() == DiffusionTerm(coeff=D)\n\ndt = 1e-4\nfor _ in range(500):\n    eq.solve(var=phi, dt=dt)\n\n# Visualize as an image\nplt.figure()\nplt.imshow(phi.value.reshape((ny, nx)), origin=\"lower\")\nplt.colorbar(label=\"phi\")\nplt.title(\"2D Diffusion in FiPy\")\nplt.show()<\/code><\/pre>\n<p>Zwei praktische Hinweise f\u00fcr 2D: Erstens kann es deutlich langsamer sein als 1D, da die Anzahl der Zellen als <code>nx * ny<\/code>  w\u00e4chst. Zweitens h\u00e4ngen Bildplots von der Umformung ab; Halten Sie Ihre <code>(ny, nx)<\/code> konsistent.<\/p>\n<h2>Fehlerbehebung: H\u00e4ufige Probleme beim ersten Mal<\/h2>\n<h3>Fehler importieren oder fehlende Pakete<\/h3>\n<ul>\n<li>Best\u00e4tigen Sie, dass FIPY in derselben Umgebung installiert ist, in der Sie das Skript ausf\u00fchren.<\/li>\n<li>\u00dcberpr\u00fcfen Sie in Notebooks den Kernel auf den richtigen Interpreter.<\/li>\n<li>\u00dcberpr\u00fcfen Sie, ob Matplotlib sauber importiert.<\/li>\n<\/ul>\n<h3>Die Kurve \u00e4ndert sich nicht<\/h3>\n<ul>\n<li>Erh\u00f6hen Sie die simulierte Gesamtzeit: Erh\u00f6hen Sie <code>steps<\/code> oder <code>dt<\/code> leicht (vorsichtig).<\/li>\n<li>Stellen Sie sicher, dass Schnappsch\u00fcsse sp\u00e4tere Schritte enthalten, nicht nur den Anfang.<\/li>\n<li>Best\u00e4tigen Sie, dass Sie tats\u00e4chlich <code>eq.solve()<\/code> innerhalb der Schleife aufrufen.<\/li>\n<\/ul>\n<h3>Die L\u00f6sung sieht instabil oder laut aus<\/h3>\n<ul>\n<li>Reduzieren Sie <code>dt<\/code> (z. B. von <code>1e-4<\/code> auf <code>5e-5<\/code>).<\/li>\n<li>Erh\u00f6hen Sie die Aufl\u00f6sung (<code>nx<\/code>), um Gradienten besser aufzul\u00f6sen.<\/li>\n<li>Testen Sie ein kleineres <code>D<\/code>, um die Evolutionsgeschwindigkeit beim Lernen zu verringern.<\/li>\n<\/ul>\n<h3>Es ist zu langsam<\/h3>\n<ul>\n<li>Beginnen Sie mit weniger Zellen und erh\u00f6hen Sie dann allm\u00e4hlich, sobald der Arbeitsablauf frei ist.<\/li>\n<li>Erfassen Sie weniger Schnappsch\u00fcsse und zeichnen Sie weniger h\u00e4ufig.<\/li>\n<li>Reduzieren Sie in 2D <code>nx<\/code> und <code>ny<\/code> beim Experimentieren mit dem Setup.<\/li>\n<\/ul>\n<h2>Fazit: Das Diffusionsmuster, das Sie \u00fcberall wiederverwenden werden<\/h2>\n<p>Das L\u00f6sen von Diffusion in FIPY lehrt eine wiederholbare Struktur, die Sie f\u00fcr viele PDE-Modelle verwenden. Wenn Sie sich mit <code>Grid1D\/Grid2D<\/code>, <code>CellVariable<\/code>, <code>TransientTerm<\/code> und <code>DiffusionTerm<\/code> verbinden, k\u00f6nnen Sie denselben Workflow auf Konvektions-Diffusion, Reaktionsdiffusion, Quellen und Senken, Parameter-Sweeps, und Validierungspr\u00fcfungen.<\/p>\n<p>Wenn Sie die schnellste Lernschleife m\u00f6chten, nehmen Sie jeweils eine \u00c4nderung vor &#8211; <code>D<\/code> , <code>nx<\/code>, <code>dt<\/code> oder die Anfangsbedingung &#8211; erneut ausf\u00fchren und erkl\u00e4ren, was sich ge\u00e4ndert hat und warum. Diese Gewohnheit macht die Diffusion von einer Demo in ein Werkzeug, dem Sie vertrauen k\u00f6nnen.<\/p>\n","protected":false,"raw":"<p>Die Diffusion ist eine der intuitivsten partiellen Differentialgleichungen (PDES), die Sie simulieren k\u00f6nnen: Ein scharfer Peak breitet sich aus, ein steiler Schritt gl\u00e4ttet sich in einen sanften \u00dcbergang und Gradienten verschwinden allm\u00e4hlich. Wenn Sie FIPY lernen, ist die Diffusion auch einer der besten Ausgangspunkte, da sie den FIPY-Kernworkflow sauber abbildet: <em>Mesh \u2192 Variable \u2192 Gleichung \u2192 Zeitschleife \u2192 Visualisierung <\/em>.<\/p>\n<p>In diesem Handbuch l\u00f6sen Sie die Diffusionsgleichung in FIPY von Grund auf, f\u00fchren eine vollst\u00e4ndige 1D-Simulation durch, die Sie sicher optimieren k\u00f6nnen, lernen, wie Sie die Ausgabe interpretieren, und dann sehen Sie, wie sich das gleiche Setup auf 2D erstreckt. Das Ziel ist praktisches Vertrauen: Sie sollten in der Lage sein, Aufl\u00f6sung, Zeitschritt, Diffusionsgeschwindigkeit und Randbedingungen zu \u00e4ndern, ohne das Modell zu brechen.<\/p>\n<h2>Was Diffusion bedeutet (ohne die schwere Mathematik)<\/h2>\n<p>Die Diffusion beschreibt, wie sich etwas aufgrund von Konzentrations- (oder Temperatur-) Unterschieden ausbreitet. Die W\u00e4rme breitet sich durch eine Stange aus. Ein Tropfen Farbstoff breitet sich in Wasser aus. Mathematisch schreiben wir oft Diffusion in dieser Form:<\/p>\n<pre><code>\u2202\u03c6\/\u2202t = \u2207\u00b7(D \u2207\u03c6)<\/code><\/pre>\n<p>Hier ist <code>\u03c6<\/code> das Feld, das Ihnen wichtig ist (Temperatur, Konzentration usw.). Der Koeffizient <code>D<\/code> steuert, wie schnell die Diffusion erfolgt. Gr\u00f6\u00dfer <code>D<\/code> bedeutet, dass das Profil schneller gl\u00e4ttet.<\/p>\n<p>Randbedingungen sind wichtig, da PDEs Regeln an den R\u00e4ndern der Dom\u00e4ne ben\u00f6tigen. Bei einem ersten Diffusionslauf sind \u201eNo-Flux\u201c -Grenzen \u00fcblich: Nichts flie\u00dft aus der Dom\u00e4ne. Das macht die Evolution leicht zu interpretieren, da das System nicht durch die Grenzen gezwungen wird.<\/p>\n<h2>Wie FIPY Diffusion darstellt<\/h2>\n<p>FIPY l\u00f6st PDEs mit der Finite Volume-Methode (FVM). Sie k\u00f6nnen sich Ihre Domain als in kleine Zellen aufgeteilt vorstellen. Das unbekannte Feld lebt auf diesen Zellen (typischerweise in den Zellzentren). Die Diffusion wird als Fluss zwischen benachbarten Zellen implementiert: Hohe Werte schieben den Fluss in Richtung niedrige Werte, bis das Profil glatter wird.<\/p>\n<p>Die praktischen FIPY-Bausteine sind:<\/p>\n<ul>\n<li><code>Mesh<\/code> \u2014 Geometrie und Aufl\u00f6sung (1D- oder 2D-Raster)<\/li>\n<li><code>CellVariable<\/code> \u2014 das Feld <code>\u03c6<\/code>, das Sie l\u00f6sen<\/li>\n<li><code>TransientTerm()<\/code> \u2014 die Zeitableitung \u2202\u03c6\/\u2202t<\/li>\n<li><code>DiffusionTerm(coeff=D)<\/code> \u2014 Der Diffusionsoperator<\/li>\n<li>Eine Zeitschleife \u2013 wiederholt mit <code>dt<\/code> l\u00f6sen und Schnappsch\u00fcsse visualisieren<\/li>\n<\/ul>\n<h2>Bevor Sie beginnen: Minimale Umgebungs-Checkliste<\/h2>\n<p>Sie ben\u00f6tigen Python plus FIPY und eine Plotbibliothek. Wenn Sie Notebooks verwenden, funktioniert der gleiche Code. F\u00fchren Sie einfach die Zellen in der richtigen Reihenfolge aus.<\/p>\n<ul>\n<li>Python installiert (eine moderne Version wird empfohlen)<\/li>\n<li>eine virtuelle Umgebung (empfohlen)<\/li>\n<li>FIPY installiert (und seine numerischen Abh\u00e4ngigkeiten)<\/li>\n<li>Matplotlib zum Plotten installiert<\/li>\n<\/ul>\n<h2>Erstes Arbeitsbeispiel: 1D-Diffusion<\/h2>\n<p>Wir modellieren die Diffusion auf einer 1D-Dom\u00e4ne von 0 nach 1 unter Verwendung eines einheitlichen Gitters. Die Anfangsbedingung ist ein Schritt:<br> <code>\u03c6 = 1<\/code> in der linken H\u00e4lfte und <code>\u03c6 = 0<\/code> in der rechten H\u00e4lfte. Die Diffusion wird diese Diskontinuit\u00e4t im Laufe der Zeit gl\u00e4tten.<\/p>\n<p>Der folgende Code ist ein vollst\u00e4ndiges Skript, das Sie so ausf\u00fchren k\u00f6nnen, wie es ist.<\/p>\n<pre><code># Solving Diffusion Equations with FiPy: 1D Example\n# Save as: diffusion_1d_fipy.py\n\nfrom fipy import Grid1D, CellVariable, TransientTerm, DiffusionTerm\nimport matplotlib.pyplot as plt\n\n# --- 1) Mesh setup ---\nnx = 200\ndx = 1.0 \/ nx\nmesh = Grid1D(nx=nx, dx=dx)\n\n# --- 2) Variable (field) ---\nphi = CellVariable(name=\"phi\", mesh=mesh, value=0.0)\n\n# Initial condition: step (left half = 1, right half = 0)\nx = mesh.cellCenters[0]\nphi.setValue(1.0, where=(x &lt; 0.5))\n\n# --- 3) Diffusion equation ---\nD = 1.0\neq = TransientTerm() == DiffusionTerm(coeff=D)\n\n# --- 4) Time stepping ---\ndt = 1e-4\nsteps = 2000\n\nsnapshots = []\ntimes = []\ncapture_at = {0, 50, 200, 800, 2000}\n\nfor step in range(steps + 1):\n    if step in capture_at:\n        snapshots.append(phi.value.copy())\n        times.append(step * dt)\n\n    eq.solve(var=phi, dt=dt)\n\n# --- 5) Plot ---\nplt.figure()\nfor y, t in zip(snapshots, times):\n    plt.plot(x.value, y, label=f\"t = {t:.4f}\")\n\nplt.xlabel(\"x\")\nplt.ylabel(\"phi\")\nplt.title(\"1D Diffusion in FiPy\")\nplt.legend()\nplt.show()<\/code><\/pre>\n<h2>Was jeder Block tut (damit Sie ihn sicher \u00e4ndern k\u00f6nnen)<\/h2>\n<h3>Mesh: Ihre Domain und Aufl\u00f6sung<\/h3>\n<p><code>Grid1D(nx=nx, dx=dx)<\/code> Erzeugt eine in <code>nx<\/code>-Zellen aufgeteilte Linie. Kleinere <code>dx<\/code> (gr\u00f6\u00dfer <code>nx<\/code>) gibt mehr Details, kostet aber mehr Berechnung. Ihre Domain-L\u00e4nge betr\u00e4gt ungef\u00e4hr <code>nx * dx<\/code> .<\/p>\n<h3>CellVariable: Das Feld, nach dem Sie l\u00f6sen<\/h3>\n<p><code>phi<\/code> wird in Zellzentren gespeichert. Sie beginnen mit einer Anfangsbedingung mit <code>setValue()<\/code>. Mit der Diffusion ist diese anf\u00e4ngliche Form das, was Sie im Laufe der Zeit entspannen.<\/p>\n<h3>Die Gleichung: Zeit\u00e4nderung entspricht Diffusion<\/h3>\n<p>Diese Zeile definiert die Diffusions-PDE in der Term-Syntax von FIPY:<\/p>\n<pre><code>TransientTerm() == DiffusionTerm(coeff=D)<\/code><\/pre>\n<p><code>D<\/code> Steuert, wie schnell der Schritt gl\u00e4ttet. Wenn Sie <code>D<\/code> erh\u00f6hen, sollten Sie die \u00dcbergangszone schneller erweitern.<\/p>\n<h3>Die Zeitschleife: Vorw\u00e4rts treten<\/h3>\n<p>Jeder Aufruf von <code>eq.solve(var=phi, dt=dt)<\/code> steuert die L\u00f6sung um einen Zeitschritt vor. Wir machen ein paar Schnappsch\u00fcsse, damit Sie die Entwicklung sehen k\u00f6nnen, ohne jeden einzelnen Schritt zu zeichnen.<\/p>\n<h2>So erkennen Sie, ob Ihre Diffusionslaufzeit richtig aussieht<\/h2>\n<p>Bei einer schrittweisen Anfangsbedingung sollte die Diffusion einen glatten \u00dcbergangsbereich erzeugen, der sich allm\u00e4hlich erweitert. Der scharfe Sprung sollte erweichen und die Kurve sollte mit der Zeit weniger steil werden.<\/p>\n<ul>\n<li>Wenn sich das Profil nicht \u00e4ndert: Ihre Schleife l\u00e4uft m\u00f6glicherweise nicht wie erwartet, oder <code>dt<\/code> und <code>steps<\/code> erzeugen zu wenig Gesamtzeit.<\/li>\n<li>Wenn das Profil verrauscht oder \"aufbricht\": Reduzieren Sie <code>dt<\/code>, erh\u00f6hen Sie die Aufl\u00f6sung oder vereinfachen Sie die Grenzen.<\/li>\n<li>Wenn alles verschoben oder abgeschnitten aussieht: \u00dcberpr\u00fcfen Sie Ihren Ausgangszustand und best\u00e4tigen Sie, dass die X-Achse Ihrer Domain entspricht.<\/li>\n<\/ul>\n<h2>Auswahl von DT und DX: Praktische Tipps f\u00fcr Stabilit\u00e4t und Genauigkeit<\/h2>\n<p>Auch wenn der Code ausgef\u00fchrt wird, beeinflussen Parameterauswahl die Qualit\u00e4t und die Laufzeit. Drei Anpassungen decken die meisten \u201eErstmodell\u201c-Probleme ab:<\/p>\n<ul>\n<li>Reduzieren <code>dt<\/code> Wenn die Entwicklung zwischen den L\u00e4ufen zu sprunghaft, verrauscht oder inkonsistent aussieht. Ein schneller Test besteht darin, <code>dt<\/code>  zu halbieren und <code>steps<\/code>  zu verdoppeln, sodass die gesamte simulierte Zeit \u00e4hnlich bleibt.<\/li>\n<li>ERH\u00d6HEN <code>nx<\/code>, wenn die Kurve gezackt aussieht oder die \u00dcbergangszone schlecht aufgel\u00f6st ist. Mehr Zellen bedeuten normalerweise glattere Profile und bessere Steigungen bei h\u00f6heren Rechenkosten.<\/li>\n<li>Behandeln Sie gr\u00f6\u00dfere <code>D<\/code> als \u201eschnelleres System\u201c. Wenn die Diffusion stark ist, ben\u00f6tigen Sie normalerweise kleinere <code>dt <\/code>  (oder zumindest um zu \u00fcberpr\u00fcfen, ob sich die Ergebnisse nicht \u00e4ndern, wenn Sie die Zeit verfeinern).<\/li>\n<\/ul>\n<p>Eine einfache Gewohnheit, die Verwirrung verhindert: Wenn Sie <code>dt<\/code>  oder <code>nx<\/code>  \u00e4ndern, f\u00fchren Sie zwei L\u00e4ufe erneut aus und vergleichen Sie sie (grob oder verfeinert). Wenn die Kurven im Grunde gleich sind, sind Sie in einem guten Regime zum Lernen und Iteration.<\/p>\n<h2>Sechs schnelle Experimente, die Ihnen die Diffusion schnell lehren<\/h2>\n<ol>\n<li>Diffusionsgeschwindigkeit \u00e4ndern: Versuchen Sie <code>D = 0.1<\/code> und <code>D = 5.0<\/code> und vergleichen Sie, wie schnell sich der Schritt entspannt.<\/li>\n<li>Aufl\u00f6sung erh\u00f6hen: \u00c4ndern Sie <code>nx<\/code> von 200 auf 400 und sehen Sie, wie der \u00dcbergangsbereich aussieht.<\/li>\n<li>Versuchen Sie eine Beule anstelle eines Schritts: Stellen Sie <code>phi = 1<\/code> nur in einem schmalen Bereich ein und beobachten Sie, wie er sich symmetrisch ausbreitet.<\/li>\n<li>Erfassen Sie weitere Schnappsch\u00fcsse: F\u00fcgen Sie <code>capture_at<\/code> weitere Indizes hinzu, um die Entwicklung detaillierter zu sehen.<\/li>\n<li>l\u00e4nger laufen: Erh\u00f6hen Sie <code>steps<\/code> und best\u00e4tigen Sie, dass das Profil mit der Zeit gleichm\u00e4\u00dfiger wird.<\/li>\n<li>Ausgabe speichern: F\u00fcgen Sie <code>plt.savefig(\"diffusion_1d.png\", dpi=200)<\/code> vor <code>plt.show()<\/code> hinzu.<\/li>\n<\/ol>\n<h2>Upgrade auf 2D-Diffusion (Minimalwechsel, Big Payoff)<\/h2>\n<p>Sobald sich 1D wohl anf\u00fchlt, geht es beim Umschalten auf 2D haupts\u00e4chlich darum, das Netz und die Visualisierung zu \u00e4ndern. Die Gleichungsstruktur bleibt gleich. In 2D beginnen Sie normalerweise mit einem \"Spot\" (hoher Wert in einer kleinen Region) und beobachten, wie er sich zu einem glatten Fleck ausbreitet.<\/p>\n<pre><code># 2D Diffusion sketch (core ideas)\nfrom fipy import Grid2D, CellVariable, TransientTerm, DiffusionTerm\nimport matplotlib.pyplot as plt\n\nnx = ny = 100\ndx = dy = 1.0 \/ nx\nmesh = Grid2D(nx=nx, ny=ny, dx=dx, dy=dy)\n\nphi = CellVariable(name=\"phi\", mesh=mesh, value=0.0)\n\nx, y = mesh.cellCenters\nphi.setValue(1.0, where=((x - 0.5)**2 + (y - 0.5)**2 &lt; 0.05**2))\n\nD = 1.0\neq = TransientTerm() == DiffusionTerm(coeff=D)\n\ndt = 1e-4\nfor _ in range(500):\n    eq.solve(var=phi, dt=dt)\n\n# Visualize as an image\nplt.figure()\nplt.imshow(phi.value.reshape((ny, nx)), origin=\"lower\")\nplt.colorbar(label=\"phi\")\nplt.title(\"2D Diffusion in FiPy\")\nplt.show()<\/code><\/pre>\n<p>Zwei praktische Hinweise f\u00fcr 2D: Erstens kann es deutlich langsamer sein als 1D, da die Anzahl der Zellen als <code>nx * ny<\/code>  w\u00e4chst. Zweitens h\u00e4ngen Bildplots von der Umformung ab; Halten Sie Ihre <code>(ny, nx)<\/code> konsistent.<\/p>\n<h2>Fehlerbehebung: H\u00e4ufige Probleme beim ersten Mal<\/h2>\n<h3>Fehler importieren oder fehlende Pakete<\/h3>\n<ul>\n<li>Best\u00e4tigen Sie, dass FIPY in derselben Umgebung installiert ist, in der Sie das Skript ausf\u00fchren.<\/li>\n<li>\u00dcberpr\u00fcfen Sie in Notebooks den Kernel auf den richtigen Interpreter.<\/li>\n<li>\u00dcberpr\u00fcfen Sie, ob Matplotlib sauber importiert.<\/li>\n<\/ul>\n<h3>Die Kurve \u00e4ndert sich nicht<\/h3>\n<ul>\n<li>Erh\u00f6hen Sie die simulierte Gesamtzeit: Erh\u00f6hen Sie <code>steps<\/code> oder <code>dt<\/code> leicht (vorsichtig).<\/li>\n<li>Stellen Sie sicher, dass Schnappsch\u00fcsse sp\u00e4tere Schritte enthalten, nicht nur den Anfang.<\/li>\n<li>Best\u00e4tigen Sie, dass Sie tats\u00e4chlich <code>eq.solve()<\/code> innerhalb der Schleife aufrufen.<\/li>\n<\/ul>\n<h3>Die L\u00f6sung sieht instabil oder laut aus<\/h3>\n<ul>\n<li>Reduzieren Sie <code>dt<\/code> (z. B. von <code>1e-4<\/code> auf <code>5e-5<\/code>).<\/li>\n<li>Erh\u00f6hen Sie die Aufl\u00f6sung (<code>nx<\/code>), um Gradienten besser aufzul\u00f6sen.<\/li>\n<li>Testen Sie ein kleineres <code>D<\/code>, um die Evolutionsgeschwindigkeit beim Lernen zu verringern.<\/li>\n<\/ul>\n<h3>Es ist zu langsam<\/h3>\n<ul>\n<li>Beginnen Sie mit weniger Zellen und erh\u00f6hen Sie dann allm\u00e4hlich, sobald der Arbeitsablauf frei ist.<\/li>\n<li>Erfassen Sie weniger Schnappsch\u00fcsse und zeichnen Sie weniger h\u00e4ufig.<\/li>\n<li>Reduzieren Sie in 2D <code>nx<\/code> und <code>ny<\/code> beim Experimentieren mit dem Setup.<\/li>\n<\/ul>\n<h2>Fazit: Das Diffusionsmuster, das Sie \u00fcberall wiederverwenden werden<\/h2>\n<p>Das L\u00f6sen von Diffusion in FIPY lehrt eine wiederholbare Struktur, die Sie f\u00fcr viele PDE-Modelle verwenden. Wenn Sie sich mit <code>Grid1D\/Grid2D<\/code>, <code>CellVariable<\/code>, <code>TransientTerm<\/code> und <code>DiffusionTerm<\/code> verbinden, k\u00f6nnen Sie denselben Workflow auf Konvektions-Diffusion, Reaktionsdiffusion, Quellen und Senken, Parameter-Sweeps, und Validierungspr\u00fcfungen.<\/p>\n<p>Wenn Sie die schnellste Lernschleife m\u00f6chten, nehmen Sie jeweils eine \u00c4nderung vor - <code>D<\/code> , <code>nx<\/code>, <code>dt<\/code> oder die Anfangsbedingung - erneut ausf\u00fchren und erkl\u00e4ren, was sich ge\u00e4ndert hat und warum. Diese Gewohnheit macht die Diffusion von einer Demo in ein Werkzeug, dem Sie vertrauen k\u00f6nnen.<\/p>\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\"> 6<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>Die Diffusion ist eine der intuitivsten partiellen Differentialgleichungen (PDES), die Sie simulieren k\u00f6nnen: Ein scharfer Peak breitet sich aus, ein steiler Schritt gl\u00e4ttet sich in einen sanften \u00dcbergang und Gradienten verschwinden allm\u00e4hlich. Wenn Sie FIPY lernen, ist die Diffusion auch einer der besten Ausgangspunkte, da sie den FIPY-Kernworkflow sauber abbildet: Mesh \u2192 Variable \u2192 Gleichung [&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:\/\/new.matforge.org\/?p=59","iawp_total_views":0,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-801","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.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>L\u00f6sen von Diffusionsgleichungen mit FIPY: Eine praktische Schritt-f\u00fcr-Schritt-Anleitung<\/title>\n<meta name=\"description\" content=\"Erfahren Sie, wie Sie Diffusionsgleichungen in FIPY anhand eines klaren 1D-Beispiels, Randbedingungen, Tipps zur Zeitschritt, Stabilit\u00e4tspr\u00fcfungen und einem einfachen Weg zu 2D-Simulationen l\u00f6sen.\" \/>\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\/solving-diffusion-equations-with-fipy\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"L\u00f6sen von Diffusionsgleichungen mit FIPY: Eine praktische Schritt-f\u00fcr-Schritt-Anleitung\" \/>\n<meta property=\"og:description\" content=\"Erfahren Sie, wie Sie Diffusionsgleichungen in FIPY anhand eines klaren 1D-Beispiels, Randbedingungen, Tipps zur Zeitschritt, Stabilit\u00e4tspr\u00fcfungen und einem einfachen Weg zu 2D-Simulationen l\u00f6sen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:21:36+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=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/\"},\"author\":{\"name\":\"Tomas Delgado\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"headline\":\"L\u00f6sen von Diffusionsgleichungen mit FIPY\",\"datePublished\":\"2026-07-30T12:21:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/\"},\"wordCount\":1328,\"commentCount\":0,\"articleSection\":[\"FIPY: Dokumentation, Beispiele &amp; Entwicklung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/\",\"name\":\"L\u00f6sen von Diffusionsgleichungen mit FIPY: Eine praktische Schritt-f\u00fcr-Schritt-Anleitung\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:21:36+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"description\":\"Erfahren Sie, wie Sie Diffusionsgleichungen in FIPY anhand eines klaren 1D-Beispiels, Randbedingungen, Tipps zur Zeitschritt, Stabilit\u00e4tspr\u00fcfungen und einem einfachen Weg zu 2D-Simulationen l\u00f6sen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/solving-diffusion-equations-with-fipy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"L\u00f6sen von Diffusionsgleichungen mit FIPY\"}]},{\"@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":"L\u00f6sen von Diffusionsgleichungen mit FIPY: Eine praktische Schritt-f\u00fcr-Schritt-Anleitung","description":"Erfahren Sie, wie Sie Diffusionsgleichungen in FIPY anhand eines klaren 1D-Beispiels, Randbedingungen, Tipps zur Zeitschritt, Stabilit\u00e4tspr\u00fcfungen und einem einfachen Weg zu 2D-Simulationen l\u00f6sen.","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\/solving-diffusion-equations-with-fipy\/","og_locale":"de_DE","og_type":"article","og_title":"L\u00f6sen von Diffusionsgleichungen mit FIPY: Eine praktische Schritt-f\u00fcr-Schritt-Anleitung","og_description":"Erfahren Sie, wie Sie Diffusionsgleichungen in FIPY anhand eines klaren 1D-Beispiels, Randbedingungen, Tipps zur Zeitschritt, Stabilit\u00e4tspr\u00fcfungen und einem einfachen Weg zu 2D-Simulationen l\u00f6sen.","og_url":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:21:36+00:00","author":"Tomas Delgado","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Tomas Delgado","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/"},"author":{"name":"Tomas Delgado","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"headline":"L\u00f6sen von Diffusionsgleichungen mit FIPY","datePublished":"2026-07-30T12:21:36+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/"},"wordCount":1328,"commentCount":0,"articleSection":["FIPY: Dokumentation, Beispiele &amp; Entwicklung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/","url":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/","name":"L\u00f6sen von Diffusionsgleichungen mit FIPY: Eine praktische Schritt-f\u00fcr-Schritt-Anleitung","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:21:36+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"description":"Erfahren Sie, wie Sie Diffusionsgleichungen in FIPY anhand eines klaren 1D-Beispiels, Randbedingungen, Tipps zur Zeitschritt, Stabilit\u00e4tspr\u00fcfungen und einem einfachen Weg zu 2D-Simulationen l\u00f6sen.","breadcrumb":{"@id":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/solving-diffusion-equations-with-fipy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"L\u00f6sen von Diffusionsgleichungen mit FIPY"}]},{"@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\/801","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=801"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/801\/revisions"}],"predecessor-version":[{"id":923,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/801\/revisions\/923"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}