{"id":839,"date":"2026-07-30T12:22:27","date_gmt":"2026-07-30T12:22:27","guid":{"rendered":"https:\/\/matforge.org\/?p=839","raw":"https:\/\/matforge.org\/?p=839"},"modified":"2026-07-30T12:22:27","modified_gmt":"2026-07-30T12:22:27","slug":"extending-fipy-with-custom-modules","status":"publish","type":"post","link":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/","title":{"rendered":"Erweitern von FIPY mit benutzerdefinierten Modulen","raw":"Erweitern von FIPY mit benutzerdefinierten Modulen"},"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\"> 7<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span><p>FIPY ist am n\u00fctzlichsten, wenn Sie die Behandlung als Sammlung von isolierten Beispielscripts nicht mehr ausf\u00fchren und es als flexibles Framework f\u00fcr die Erstellung eigener PDE-Workflows verwenden. Diese Verschiebung ist wichtig, da reale Simulationsprojekte selten lange einfach bleiben. Ein Modell, das als eine Gleichung auf einem Netz beginnt, w\u00e4chst h\u00e4ufig zu einem System mit wiederverwendbaren Materialeigenschaften, nichtlinearen Quellbegriffen, gekoppelten Feldern, szenariospezifischen Parametern und wiederholten Nachbearbeitungsschritten. Wenn Sie an diesem Punkt alles in einem expandierenden Skript aufbewahren, ist der Code in der Regel schwieriger zu debuggen, schwerer zu vertrauen und viel schwerer wiederzuverwenden.<\/p>\n<p>Hier werden benutzerdefinierte Module wertvoll. In FIPY bedeutet die Erweiterung des Frameworks nicht immer das Umschreiben von Interna oder das Erstellen tiefer Klassenhierarchien. Sehr oft ist die effektivste Erweiterung ein sauberes Python-Modul, das einen Teil des numerischen Modells organisiert: Mesh-Erstellung, Variablen-Setup, Koeffizientenlogik, Gleichungsassembly, Quellenhandhabung, Solver-Steuerung oder Ausgaberoutinen. Ziel ist es nicht, das Projekt um seiner selbst willen abstrakter zu machen. Ziel ist es, das mathematische Modell leichter zu lesen, zu testen, zu modifizieren und \u00fcber mehrere F\u00e4lle hinweg auszuf\u00fchren.<\/p>\n<p>Eine gute FIPY-Erweiterungsstrategie beginnt mit einer praktischen Frage: Was genau muss wiederverwendbar werden? Manchmal ist die Antwort ein benutzerdefinierter Quellen-Builder. Manchmal handelt es sich um eine gekoppelte Gleichungsfabrik. Manchmal ist es einfach eine Paketstruktur, die Physik von Startskripten trennt. Sobald dies klar ist, wird FIPY viel einfacher zu skalieren, ohne die Klarheit zu verlieren.<\/p>\n<h2>Beginnen Sie mit der Identifizierung des richtigen Erweiterungspunkts<\/h2>\n<p>Der gr\u00f6\u00dfte Fehler, den Menschen beim Erweitern von FIPY machen, ist die Annahme, dass jedes wiederholte Muster eine benutzerdefinierte Low-Level-Klasse erfordert. In der Praxis k\u00f6nnen viele Probleme mit einem viel leichteren Ansatz gel\u00f6st werden. Wenn Sie das gleiche Setup f\u00fcr ein Netz, Anfangsbedingungen, Grenzbeschr\u00e4nkungen oder Koeffizienten neu schreiben, ben\u00f6tigen Sie m\u00f6glicherweise nur ein Hilfsmodul. Wenn Ihre Hauptschwierigkeit darin besteht, die gleiche Familie von Gleichungen unter verschiedenen Parameterauswahlen zu erstellen, ben\u00f6tigen Sie wahrscheinlich einen Gleichungs-Builder. Wenn Ihr Modell in mehreren F\u00e4llen nichtlineares Quellverhalten enth\u00e4lt, kann ein Quell-Term-Helfer der richtige Erweiterungspunkt sein.<\/p>\n<p>Diese Unterscheidung ist wichtig, da unterschiedliche Erweiterungen unterschiedliche Wartungskosten tragen. Ein kleines Modul von Hilfsfunktionen ist in der Regel stabil, leicht zu testen und f\u00fcr Mitarbeiter leicht zu verstehen. Eine tiefere strukturelle Modifikation kann in fortgeschrittenen F\u00e4llen angebracht sein, erh\u00f6ht jedoch auch die Wahrscheinlichkeit, wichtige Physik hinter Abstraktionen zu verbergen, die schwerer zu inspizieren sind. Im wissenschaftlichen Rechnen ist Lesbarkeit Teil der Zuverl\u00e4ssigkeit. Wenn ein anderer Forscher nicht schnell sehen kann, wie ein Begriff konstruiert wird, ist Ihre Architektur m\u00f6glicherweise zu schlau f\u00fcr sich selbst.<\/p>\n<p>Der beste erste Schritt ist also nicht zu fragen: &#8222;Wie kann ich mehr von FIPY unterklassieren?&#8220; sondern \u201eWelcher Teil meines numerischen Workflows wiederholt sich oft genug, um ein eigenes Modul zu verdienen?\u201c Diese Frage f\u00fchrt normalerweise zu einem saubereren und wartbareren Design.<\/p>\n<h2>Verstehen Sie die Kern-FIPY-Objekte, bevor Sie sie modularisieren<\/h2>\n<p>Jede wiederverwendbare Erweiterung funktioniert besser, wenn sie die Kernstruktur von FIPY ber\u00fccksichtigt. Die meisten Projekte drehen sich um einige Schl\u00fcsselobjekte: das Netz, die Variablen, die Begriffe, die zusammengesetzten Gleichungen und die L\u00f6sungs- oder Sweep-Schleife. Benutzerdefinierte Module sollten die Verwaltung dieser Objekte erleichtern und nicht schwerer zu finden sein. Beispielsweise kann ein Mesh-Modul ein Standardraster oder eine Geometriefamilie mit parametrierten Abmessungen zur\u00fcckgeben. Ein Variablenmodul kann Initialisierung, Aktualisierungen mit altem Wert und Standardfeldzust\u00e4nde verarbeiten. Ein Physikmodul kann Diffusionskoeffizienten, materielle Antworten oder Quellenausdr\u00fccke definieren. Ein Gleichungsmodul kann diese Teile dann zu einem PDE oder einem gekoppelten System zusammenf\u00fcgen.<\/p>\n<p>Diese Struktur hilft auch, da FIPY sorgf\u00e4ltig zwischen verschiedenen Arten von Felddaten unterscheidet. In vielen Workflows leben abh\u00e4ngige Mengen in Zellen, w\u00e4hrend andere Operationen nat\u00fcrlich auf Gesichtern ausgedr\u00fcckt werden. Wenn ein benutzerdefiniertes Modul diese Unterscheidung nachl\u00e4ssig verwischt, kann der Code immer noch ausgef\u00fchrt werden, das Ergebnis kann jedoch numerisch verwirrend werden. Dies gilt insbesondere dann, wenn nichtlineare Ausdr\u00fccke, Gradienten oder Gesichtskoeffizienten beteiligt sind. Eine gute Erweiterungsschicht sollte daher die mathematische Bedeutung der zugrunde liegenden Objekte beibehalten, anstatt sie hinter vagen Helfernamen zu verbergen.<\/p>\n<p>Mit anderen Worten, ein benutzerdefiniertes Modul sollte die Wiederholung verringern, ohne das Verst\u00e4ndnis des Benutzers zu beeintr\u00e4chtigen, wo die diskretisierte Physik tats\u00e4chlich lebt.<\/p>\n<h2>Verwenden Sie zuerst Utility-Module, keine tiefe Vererbung<\/h2>\n<p>Bei vielen FIPY-Projekten besteht die sicherste und produktivste M\u00f6glichkeit, das Framework zu erweitern, das Erstellen einfacher Python-Module um Standard-FIPY-Objekte. Dieser Ansatz ist f\u00fcr die meisten Benutzer viel praktischer als eine tiefe Vererbung. Es h\u00e4lt Ihren Code nahe an dokumentierten FIPY-Mustern, erleichtert Upgrades und verringert das Risiko, fragile Verhaltensweisen einzuf\u00fchren, die nur eine Person im Team versteht.<\/p>\n<p>Eine Utility-basierte Erweiterungsstrategie kann ein Modul f\u00fcr die Geometrie- und Netzgenerierung, ein weiteres f\u00fcr das Laden von Parametern, ein weiteres f\u00fcr Materialeigenschaften und ein anderes f\u00fcr die PDE-Konstruktion umfassen. Anstatt all dies in einem Skript zu f\u00fcllen, lassen Sie jede Datei eine Verantwortungsebene besitzen. Ihr Laufskript wird dann zu einer klaren Orchestrierungsschicht: Erstellen Sie Mesh, initialisieren Sie Variablen, erstellen Sie Gleichungen, l\u00f6sen Sie Zeitschritte und exportieren Sie die Ergebnisse.<\/p>\n<p>Dieser Stil hat einen weiteren Vorteil: Er spiegelt die Art und Weise wider, wie Menschen \u00fcber wissenschaftliche Modelle denken. Die Forscher trennen die Problemdom\u00e4ne in der Regel in Konzepte wie Geometrie, Felder, konstitutives Verhalten, numerische Formulierung und Versuchsaufbau. Wenn Ihre Projektstruktur dieser Logik folgt, wird der Code nat\u00fcrlicher, um zu \u00fcberpr\u00fcfen und zu erweitern. Das ist oft wertvoller als jeder clevere objektorientierte Design-Trick.<\/p>\n<h2>Bauen Sie wiederverwendbare Gleichungs-Builder auf<\/h2>\n<p>Eine der st\u00e4rksten Verwendungszwecke von benutzerdefinierten Modulen in FIPY ist die Verpackung der Gleichung in wiederverwendbare Builder. Dies ist besonders hilfreich, wenn Ihr Projekt mehrere Varianten desselben ma\u00dfgeblichen Modells enth\u00e4lt. Anstatt die PDE in jedem Skript umzuschreiben, definieren Sie eine Funktion oder Klasse, die die erforderlichen Variablen und Koeffizienten \u00fcbernimmt und eine l\u00f6sungsfertige Gleichung zur\u00fcckgibt. Dies verbessert sofort die Konsistenz \u00fcber die L\u00e4ufe und verringert die Wahrscheinlichkeit, einen Begriff in einer Datei leise zu \u00e4ndern, w\u00e4hrend Sie vergessen, einen anderen zu aktualisieren.<\/p>\n<p>Ein einfacher Gleichungs-Builder kann eine Variable, einen Diffusionskoeffizienten, einen transienten Koeffizienten und einen Quellenausdruck akzeptieren. Ein fortgeschrittenerer kann das Verhalten \u00e4ndern, je nachdem, ob die Konvektion aktiv ist, ob die Quelle explizit oder halbimplizit ist oder ob der aktuelle Lauf station\u00e4r oder zeitabh\u00e4ngig ist. In der Multiphysik-Arbeit kann ein Builder mehrere Gleichungen gleichzeitig zur\u00fcckgeben und ein gekoppeltes System an einem Ort zusammenstellen, anstatt diese Beziehungen auf ein Notebook oder mehrere Skripte zu verteilen.<\/p>\n<p>Dieses Design wird noch wichtiger, wenn mehrere Personen am selben Modell arbeiten. Wenn eine Person Koeffizienten verfeinert, w\u00e4hrend eine andere Zeitschritte oder Solvereinstellungen abstimmt, hilft ein gemeinsamer Gleichungs-Builder dabei, den mathematischen Kern stabil und sichtbar zu halten. Der Punkt ist nicht nur Bequemlichkeit. Es ist numerische Disziplin.<\/p>\n<h2>Machen Sie die Quell-Term-Logik modular<\/h2>\n<p>Benutzerdefiniertes Quellenhandling ist einer der h\u00e4ufigsten Gr\u00fcnde, warum Menschen FIPY erweitern m\u00fcssen. In vielen PDE-Modellen lebt der Quellbegriff, wo die problemspezifischste Physik lebt. Es kann nichtlineares Reaktionsverhalten, Phasenkopplung, Erzwingen von Funktionen, Temperaturabh\u00e4ngigkeit oder szenariospezifische Injektionen und Senken umfassen. Wenn diese Logik direkt in das Run-Skript eingebettet bleibt, wird es schnell schwierig zu testen und noch schwerer zu verwenden.<\/p>\n<p>Ein viel besserer Ansatz besteht darin, die Quellenkonstruktion in einem eigenen Modul zu isolieren. Dieses Modul kann eine kleine Gruppe von klar benannten Buildern, wie z. Das ist wichtig, da FIPY von der Linearisierung des Teils einer Quelle profitieren kann, der von der zu l\u00f6senden Variable abh\u00e4ngt. Wenn es gut gemacht wird, verbessert dies h\u00e4ufig die Konvergenz und h\u00e4lt das Modell numerisch stabiler.<\/p>\n<p>Dies ist auch der Punkt, an dem Disziplin mit mathematischen Ausdr\u00fccken wichtig wird. In FIPY-Workflows sollten Quellausdr\u00fccke, die auf FIPY-Variablen wirken, im Allgemeinen `fipy.tools.numerix` verwenden, anstatt anzunehmen, dass sich \u00e4quivalente numpy- oder scipy-Aufrufe genauso verhalten. Ein Quellmodul ist daher ein guter Ort, um diese Praxis zu zentralisieren. Auf diese Weise machen Sie sowohl die Physik als auch die Implementierungsregeln im gesamten Projekt konsistenter.<\/p>\n<h2>Umgang mit Zell- und Gesichtslogik sorgf\u00e4ltig<\/h2>\n<p>Einige der frustrierendsten Fehler in benutzerdefinierten FIPY-Projekten sind das Verbergen des Unterschieds zwischen zellbasierten und gesichtsbasierten Gr\u00f6\u00dfen. Es ist verlockend, einen generischen Helfercode zu erstellen, der \u201enur einen Koeffizienten zur\u00fcckgibt\u201c, ohne dass seine Position in der Diskretisierung vollst\u00e4ndig klar ist. Diese Abk\u00fcrzung mag elegant aussehen, macht das Modell jedoch sp\u00e4ter oft schwieriger, insbesondere wenn es sich um Gradienten, Anisotropie, nichtlineare Koeffizienten oder Gesichtsinterpolationen handelt.<\/p>\n<p>Benutzerdefinierte Module sollten daher explizit dar\u00fcber sein, was sie zur\u00fcckgeben. Wenn ein Koeffizient auf die Fl\u00e4chen geh\u00f6rt, sollten der Name der Funktion und die Dokumentation dies sagen. Wenn ein Helfer eine Zellgr\u00f6\u00dfe in eine Gesichtsdarstellung umwandelt, sollte diese Transformation sichtbar und beabsichtigt sein. Dies ist nicht nur eine Frage des Stils. Bei Arbeiten mit endlichen Volumen beeinflussen die Position und Interpretation eines Feldes sowohl die Richtigkeit als auch die Lesbarkeit des numerischen Modells.<\/p>\n<p>Die gleiche Vorsicht gilt, wenn Sie sich auf bequeme automatische Konvertierungen verlassen. Manchmal sind diese Annehmlichkeiten n\u00fctzlich, aber sie sollten in einem wiederverwendbaren Modul nicht unsichtbar werden. Guter wissenschaftlicher Kodex beg\u00fcnstigt die Explizitheit, wenn die mathematische Bedeutung wichtig ist.<\/p>\n<h2>Modulare gekoppelte Modelle bevor sie chaotisch werden<\/h2>\n<p>Wenn FIPY-Modelle fortgeschrittener werden, sind gekoppelte Gleichungen h\u00e4ufig der Ort, an dem die Projektstruktur entweder erfolgreich ist oder zusammenbricht. Ein gekoppeltes System kann lesbar bleiben, wenn jede physikalische Beziehung kontrolliert definiert wird, aber es wird sehr schnell unordentlich, wenn Teile mehrerer Gleichungen an verschiedenen Stellen im Code zusammengesetzt werden. Aus diesem Grund profitieren gekoppelte Modelle so sehr von benutzerdefinierten Modulen.<\/p>\n<p>Ein sauberes Design kann jedes Submodell in seiner eigenen Datei platzieren: eines f\u00fcr den Transport, eines f\u00fcr die Reaktion, eines f\u00fcr Energie, eines f\u00fcr das Phasenverhalten und eines f\u00fcr gemeinsame Koeffizienten. Ein zentraler gekoppelter Builder importiert dann diese Teile und montiert das System in einer konsistenten Reihenfolge. Dies reduziert das Risiko einer falschen Verdrahtung von Variablen und erleichtert die Erweiterung des Projekts, wenn ein drittes oder viertes Feld sp\u00e4ter hinzugef\u00fcgt wird.<\/p>\n<p>Es hilft auch bei einer der praktischsten Realit\u00e4ten der gekoppelten Arbeit: Experimentieren. M\u00f6glicherweise m\u00fcssen Sie eine monolithische L\u00f6sung mit einer lockereren N\u00e4herung vergleichen, einen konstitutiven Begriff gegen einen anderen austauschen oder ein Modell neu strukturieren, um Einschr\u00e4nkungen bei der Interaktion bestimmter Begriffe zu vermeiden. Ein modularer Aufbau erleichtert diese \u00c4nderungen, da die Kopplungslogik zentralisiert und nicht in einem wiederholten Verfahrenscode vergraben ist.<\/p>\n<h2>Organisieren Sie das Projekt wie ein Simulationspaket, kein Demo-Skript<\/h2>\n<p>Wenn Ihre FIPY-Arbeit \u00fcber einmalige Experimente hinausgeht, ist die Gesamtpaketstruktur fast genauso wichtig wie die PDE-Begriffe. Ein einfaches und effektives Layout enth\u00e4lt h\u00e4ufig separate Positionen f\u00fcr Netze, Variablen, Physiklogik, Gleichungserstellung, Ausf\u00fchren von Skripten, Nachbearbeitung und Tests. Dies muss nicht aufw\u00e4ndig sein, aber es sollte deutlich werden, wo jede Art von Logik hingeh\u00f6rt.<\/p>\n<p>Diese Organisation \u00e4ndert die Rolle des Skripts der obersten Ebene. Anstatt eine riesige Datei zu sein, die alles definiert, wird sie zu einem kontrollierten Einstiegspunkt f\u00fcr einen Simulationsfall. Es importiert ein Mesh, l\u00e4dt Parameter, initialisiert Variablen, erstellt Gleichungen, setzt die L\u00f6sung voran und schreibt Ausgaben. Dies ist viel einfacher zu \u00fcberpr\u00fcfen, mit verschiedenen Einstellungen erneut auszuf\u00fchren und sp\u00e4ter viel einfacher in Batchstudien oder Parameter-Sweeps zu konvertieren.<\/p>\n<p>Ein gut strukturiertes FIPY-Projekt erleichtert auch die Dokumentation. Jedes Modul kann eine Verantwortung erkl\u00e4ren, anstatt die Leser zu zwingen, in einer einzigen langen Datei voller gemischter Bedenken zu navigieren. In der Forschung ist das ein praktischer Vorteil, kein kosmetischer.<\/p>\n<h2>Testen Sie benutzerdefinierte Module in Schichten<\/h2>\n<p>Sobald der FIPY-Code in Module aufgeteilt ist, wird das Testen weitaus \u00fcberschaubarer. Das ist wichtig, da numerische Projekte auf andere Weise als gew\u00f6hnlicher Anwendungscode ausfallen. Ein Modul kann korrekt importieren und trotzdem die falsche Physik codieren. Ein Quell-Builder kann fehlerfrei ausgef\u00fchrt werden und dennoch instabiles Verhalten bei der Verfeinerung erzeugen. Eine gekoppelte Gleichung kann sich erfolgreich zusammensetzen, aber einen Term auf der falschen Variable setzen.<\/p>\n<p>Der beste Ansatz ist mehrschichtiges Testen. Kleine Hilfsfunktionen sollten nach M\u00f6glichkeit lokale Tests haben. Gleichungs-Builder sollten auf kleine Benchmark-Probleme \u00fcberpr\u00fcft werden, bevor sie in gr\u00f6\u00dferen L\u00e4ufen vertrauen. Vollst\u00e4ndige Simulations-Workflows sollten auch Tests im Regressionsstil haben, selbst wenn diese Tests einfach sind, z.<\/p>\n<p>Dieser Teststil entspricht der Logik eines guten wissenschaftlichen Rechnens. Sie m\u00f6chten nicht nur Code, der ausgef\u00fchrt wird. Sie m\u00f6chten Code, dessen Verhalten interpretierbar bleibt, wenn sich das Modell weiterentwickelt. Benutzerdefinierte Module erleichtern dies, da sie Verantwortlichkeiten isolieren. Tests geben diesen Verantwortlichkeiten einen stabilen Vertrag.<\/p>\n<h2>Schlussfolgerung<\/h2>\n<p>Beim Erweitern von FIPY mit benutzerdefinierten Modulen geht es weniger darum, das Framework komplizierter zu machen als vielmehr darum, Ihre eigene PDE-Arbeit gesteuerter zu gestalten. Die besten Erweiterungen sind in der Regel diejenigen, die das Modell verdeutlichen: Utility-Module, die Wiederholungen reduzieren, Gleichungs-Builder, die Formulierungen zentralisieren, Source-Term-Helfer, die die nichtlineare Physik explizit halten, und Paketstrukturen, die die Problemdefinition von der Ausf\u00fchrung trennen. Wenn die Modelle gr\u00f6\u00dfer werden, ist diese Modularit\u00e4t nicht mehr optional und wird zu einer der wichtigsten Sicherheitsvorkehrungen gegen numerische Verwirrung.<\/p>\n<p>Die praktische Regel ist einfach. Fange flach an. Modularisieren, was wiederholt wird. Halten Sie die Physik sichtbar. F\u00fcgen Sie eine tiefere Abstraktion nur hinzu, wenn die Wiederverwendung oder Stabilit\u00e4t deutlich verbessert wird. Wenn Sie diesem Muster folgen, werden benutzerdefinierte FIPY-Module mehr als ein Programmierkomfort. Sie werden Teil dessen, wie Sie ein Simulationsprojekt lesbar, testbar und im Laufe der Zeit erweiterbar machen.<\/p>\n","protected":false,"raw":"<p>FIPY ist am n\u00fctzlichsten, wenn Sie die Behandlung als Sammlung von isolierten Beispielscripts nicht mehr ausf\u00fchren und es als flexibles Framework f\u00fcr die Erstellung eigener PDE-Workflows verwenden. Diese Verschiebung ist wichtig, da reale Simulationsprojekte selten lange einfach bleiben. Ein Modell, das als eine Gleichung auf einem Netz beginnt, w\u00e4chst h\u00e4ufig zu einem System mit wiederverwendbaren Materialeigenschaften, nichtlinearen Quellbegriffen, gekoppelten Feldern, szenariospezifischen Parametern und wiederholten Nachbearbeitungsschritten. Wenn Sie an diesem Punkt alles in einem expandierenden Skript aufbewahren, ist der Code in der Regel schwieriger zu debuggen, schwerer zu vertrauen und viel schwerer wiederzuverwenden.<\/p>\n<p>Hier werden benutzerdefinierte Module wertvoll. In FIPY bedeutet die Erweiterung des Frameworks nicht immer das Umschreiben von Interna oder das Erstellen tiefer Klassenhierarchien. Sehr oft ist die effektivste Erweiterung ein sauberes Python-Modul, das einen Teil des numerischen Modells organisiert: Mesh-Erstellung, Variablen-Setup, Koeffizientenlogik, Gleichungsassembly, Quellenhandhabung, Solver-Steuerung oder Ausgaberoutinen. Ziel ist es nicht, das Projekt um seiner selbst willen abstrakter zu machen. Ziel ist es, das mathematische Modell leichter zu lesen, zu testen, zu modifizieren und \u00fcber mehrere F\u00e4lle hinweg auszuf\u00fchren.<\/p>\n<p>Eine gute FIPY-Erweiterungsstrategie beginnt mit einer praktischen Frage: Was genau muss wiederverwendbar werden? Manchmal ist die Antwort ein benutzerdefinierter Quellen-Builder. Manchmal handelt es sich um eine gekoppelte Gleichungsfabrik. Manchmal ist es einfach eine Paketstruktur, die Physik von Startskripten trennt. Sobald dies klar ist, wird FIPY viel einfacher zu skalieren, ohne die Klarheit zu verlieren.<\/p>\n<h2>Beginnen Sie mit der Identifizierung des richtigen Erweiterungspunkts<\/h2>\n<p>Der gr\u00f6\u00dfte Fehler, den Menschen beim Erweitern von FIPY machen, ist die Annahme, dass jedes wiederholte Muster eine benutzerdefinierte Low-Level-Klasse erfordert. In der Praxis k\u00f6nnen viele Probleme mit einem viel leichteren Ansatz gel\u00f6st werden. Wenn Sie das gleiche Setup f\u00fcr ein Netz, Anfangsbedingungen, Grenzbeschr\u00e4nkungen oder Koeffizienten neu schreiben, ben\u00f6tigen Sie m\u00f6glicherweise nur ein Hilfsmodul. Wenn Ihre Hauptschwierigkeit darin besteht, die gleiche Familie von Gleichungen unter verschiedenen Parameterauswahlen zu erstellen, ben\u00f6tigen Sie wahrscheinlich einen Gleichungs-Builder. Wenn Ihr Modell in mehreren F\u00e4llen nichtlineares Quellverhalten enth\u00e4lt, kann ein Quell-Term-Helfer der richtige Erweiterungspunkt sein.<\/p>\n<p>Diese Unterscheidung ist wichtig, da unterschiedliche Erweiterungen unterschiedliche Wartungskosten tragen. Ein kleines Modul von Hilfsfunktionen ist in der Regel stabil, leicht zu testen und f\u00fcr Mitarbeiter leicht zu verstehen. Eine tiefere strukturelle Modifikation kann in fortgeschrittenen F\u00e4llen angebracht sein, erh\u00f6ht jedoch auch die Wahrscheinlichkeit, wichtige Physik hinter Abstraktionen zu verbergen, die schwerer zu inspizieren sind. Im wissenschaftlichen Rechnen ist Lesbarkeit Teil der Zuverl\u00e4ssigkeit. Wenn ein anderer Forscher nicht schnell sehen kann, wie ein Begriff konstruiert wird, ist Ihre Architektur m\u00f6glicherweise zu schlau f\u00fcr sich selbst.<\/p>\n<p>Der beste erste Schritt ist also nicht zu fragen: \"Wie kann ich mehr von FIPY unterklassieren?\" sondern \u201eWelcher Teil meines numerischen Workflows wiederholt sich oft genug, um ein eigenes Modul zu verdienen?\u201c Diese Frage f\u00fchrt normalerweise zu einem saubereren und wartbareren Design.<\/p>\n<h2>Verstehen Sie die Kern-FIPY-Objekte, bevor Sie sie modularisieren<\/h2>\n<p>Jede wiederverwendbare Erweiterung funktioniert besser, wenn sie die Kernstruktur von FIPY ber\u00fccksichtigt. Die meisten Projekte drehen sich um einige Schl\u00fcsselobjekte: das Netz, die Variablen, die Begriffe, die zusammengesetzten Gleichungen und die L\u00f6sungs- oder Sweep-Schleife. Benutzerdefinierte Module sollten die Verwaltung dieser Objekte erleichtern und nicht schwerer zu finden sein. Beispielsweise kann ein Mesh-Modul ein Standardraster oder eine Geometriefamilie mit parametrierten Abmessungen zur\u00fcckgeben. Ein Variablenmodul kann Initialisierung, Aktualisierungen mit altem Wert und Standardfeldzust\u00e4nde verarbeiten. Ein Physikmodul kann Diffusionskoeffizienten, materielle Antworten oder Quellenausdr\u00fccke definieren. Ein Gleichungsmodul kann diese Teile dann zu einem PDE oder einem gekoppelten System zusammenf\u00fcgen.<\/p>\n<p>Diese Struktur hilft auch, da FIPY sorgf\u00e4ltig zwischen verschiedenen Arten von Felddaten unterscheidet. In vielen Workflows leben abh\u00e4ngige Mengen in Zellen, w\u00e4hrend andere Operationen nat\u00fcrlich auf Gesichtern ausgedr\u00fcckt werden. Wenn ein benutzerdefiniertes Modul diese Unterscheidung nachl\u00e4ssig verwischt, kann der Code immer noch ausgef\u00fchrt werden, das Ergebnis kann jedoch numerisch verwirrend werden. Dies gilt insbesondere dann, wenn nichtlineare Ausdr\u00fccke, Gradienten oder Gesichtskoeffizienten beteiligt sind. Eine gute Erweiterungsschicht sollte daher die mathematische Bedeutung der zugrunde liegenden Objekte beibehalten, anstatt sie hinter vagen Helfernamen zu verbergen.<\/p>\n<p>Mit anderen Worten, ein benutzerdefiniertes Modul sollte die Wiederholung verringern, ohne das Verst\u00e4ndnis des Benutzers zu beeintr\u00e4chtigen, wo die diskretisierte Physik tats\u00e4chlich lebt.<\/p>\n<h2>Verwenden Sie zuerst Utility-Module, keine tiefe Vererbung<\/h2>\n<p>Bei vielen FIPY-Projekten besteht die sicherste und produktivste M\u00f6glichkeit, das Framework zu erweitern, das Erstellen einfacher Python-Module um Standard-FIPY-Objekte. Dieser Ansatz ist f\u00fcr die meisten Benutzer viel praktischer als eine tiefe Vererbung. Es h\u00e4lt Ihren Code nahe an dokumentierten FIPY-Mustern, erleichtert Upgrades und verringert das Risiko, fragile Verhaltensweisen einzuf\u00fchren, die nur eine Person im Team versteht.<\/p>\n<p>Eine Utility-basierte Erweiterungsstrategie kann ein Modul f\u00fcr die Geometrie- und Netzgenerierung, ein weiteres f\u00fcr das Laden von Parametern, ein weiteres f\u00fcr Materialeigenschaften und ein anderes f\u00fcr die PDE-Konstruktion umfassen. Anstatt all dies in einem Skript zu f\u00fcllen, lassen Sie jede Datei eine Verantwortungsebene besitzen. Ihr Laufskript wird dann zu einer klaren Orchestrierungsschicht: Erstellen Sie Mesh, initialisieren Sie Variablen, erstellen Sie Gleichungen, l\u00f6sen Sie Zeitschritte und exportieren Sie die Ergebnisse.<\/p>\n<p>Dieser Stil hat einen weiteren Vorteil: Er spiegelt die Art und Weise wider, wie Menschen \u00fcber wissenschaftliche Modelle denken. Die Forscher trennen die Problemdom\u00e4ne in der Regel in Konzepte wie Geometrie, Felder, konstitutives Verhalten, numerische Formulierung und Versuchsaufbau. Wenn Ihre Projektstruktur dieser Logik folgt, wird der Code nat\u00fcrlicher, um zu \u00fcberpr\u00fcfen und zu erweitern. Das ist oft wertvoller als jeder clevere objektorientierte Design-Trick.<\/p>\n<h2>Bauen Sie wiederverwendbare Gleichungs-Builder auf<\/h2>\n<p>Eine der st\u00e4rksten Verwendungszwecke von benutzerdefinierten Modulen in FIPY ist die Verpackung der Gleichung in wiederverwendbare Builder. Dies ist besonders hilfreich, wenn Ihr Projekt mehrere Varianten desselben ma\u00dfgeblichen Modells enth\u00e4lt. Anstatt die PDE in jedem Skript umzuschreiben, definieren Sie eine Funktion oder Klasse, die die erforderlichen Variablen und Koeffizienten \u00fcbernimmt und eine l\u00f6sungsfertige Gleichung zur\u00fcckgibt. Dies verbessert sofort die Konsistenz \u00fcber die L\u00e4ufe und verringert die Wahrscheinlichkeit, einen Begriff in einer Datei leise zu \u00e4ndern, w\u00e4hrend Sie vergessen, einen anderen zu aktualisieren.<\/p>\n<p>Ein einfacher Gleichungs-Builder kann eine Variable, einen Diffusionskoeffizienten, einen transienten Koeffizienten und einen Quellenausdruck akzeptieren. Ein fortgeschrittenerer kann das Verhalten \u00e4ndern, je nachdem, ob die Konvektion aktiv ist, ob die Quelle explizit oder halbimplizit ist oder ob der aktuelle Lauf station\u00e4r oder zeitabh\u00e4ngig ist. In der Multiphysik-Arbeit kann ein Builder mehrere Gleichungen gleichzeitig zur\u00fcckgeben und ein gekoppeltes System an einem Ort zusammenstellen, anstatt diese Beziehungen auf ein Notebook oder mehrere Skripte zu verteilen.<\/p>\n<p>Dieses Design wird noch wichtiger, wenn mehrere Personen am selben Modell arbeiten. Wenn eine Person Koeffizienten verfeinert, w\u00e4hrend eine andere Zeitschritte oder Solvereinstellungen abstimmt, hilft ein gemeinsamer Gleichungs-Builder dabei, den mathematischen Kern stabil und sichtbar zu halten. Der Punkt ist nicht nur Bequemlichkeit. Es ist numerische Disziplin.<\/p>\n<h2>Machen Sie die Quell-Term-Logik modular<\/h2>\n<p>Benutzerdefiniertes Quellenhandling ist einer der h\u00e4ufigsten Gr\u00fcnde, warum Menschen FIPY erweitern m\u00fcssen. In vielen PDE-Modellen lebt der Quellbegriff, wo die problemspezifischste Physik lebt. Es kann nichtlineares Reaktionsverhalten, Phasenkopplung, Erzwingen von Funktionen, Temperaturabh\u00e4ngigkeit oder szenariospezifische Injektionen und Senken umfassen. Wenn diese Logik direkt in das Run-Skript eingebettet bleibt, wird es schnell schwierig zu testen und noch schwerer zu verwenden.<\/p>\n<p>Ein viel besserer Ansatz besteht darin, die Quellenkonstruktion in einem eigenen Modul zu isolieren. Dieses Modul kann eine kleine Gruppe von klar benannten Buildern, wie z. Das ist wichtig, da FIPY von der Linearisierung des Teils einer Quelle profitieren kann, der von der zu l\u00f6senden Variable abh\u00e4ngt. Wenn es gut gemacht wird, verbessert dies h\u00e4ufig die Konvergenz und h\u00e4lt das Modell numerisch stabiler.<\/p>\n<p>Dies ist auch der Punkt, an dem Disziplin mit mathematischen Ausdr\u00fccken wichtig wird. In FIPY-Workflows sollten Quellausdr\u00fccke, die auf FIPY-Variablen wirken, im Allgemeinen `fipy.tools.numerix` verwenden, anstatt anzunehmen, dass sich \u00e4quivalente numpy- oder scipy-Aufrufe genauso verhalten. Ein Quellmodul ist daher ein guter Ort, um diese Praxis zu zentralisieren. Auf diese Weise machen Sie sowohl die Physik als auch die Implementierungsregeln im gesamten Projekt konsistenter.<\/p>\n<h2>Umgang mit Zell- und Gesichtslogik sorgf\u00e4ltig<\/h2>\n<p>Einige der frustrierendsten Fehler in benutzerdefinierten FIPY-Projekten sind das Verbergen des Unterschieds zwischen zellbasierten und gesichtsbasierten Gr\u00f6\u00dfen. Es ist verlockend, einen generischen Helfercode zu erstellen, der \u201enur einen Koeffizienten zur\u00fcckgibt\u201c, ohne dass seine Position in der Diskretisierung vollst\u00e4ndig klar ist. Diese Abk\u00fcrzung mag elegant aussehen, macht das Modell jedoch sp\u00e4ter oft schwieriger, insbesondere wenn es sich um Gradienten, Anisotropie, nichtlineare Koeffizienten oder Gesichtsinterpolationen handelt.<\/p>\n<p>Benutzerdefinierte Module sollten daher explizit dar\u00fcber sein, was sie zur\u00fcckgeben. Wenn ein Koeffizient auf die Fl\u00e4chen geh\u00f6rt, sollten der Name der Funktion und die Dokumentation dies sagen. Wenn ein Helfer eine Zellgr\u00f6\u00dfe in eine Gesichtsdarstellung umwandelt, sollte diese Transformation sichtbar und beabsichtigt sein. Dies ist nicht nur eine Frage des Stils. Bei Arbeiten mit endlichen Volumen beeinflussen die Position und Interpretation eines Feldes sowohl die Richtigkeit als auch die Lesbarkeit des numerischen Modells.<\/p>\n<p>Die gleiche Vorsicht gilt, wenn Sie sich auf bequeme automatische Konvertierungen verlassen. Manchmal sind diese Annehmlichkeiten n\u00fctzlich, aber sie sollten in einem wiederverwendbaren Modul nicht unsichtbar werden. Guter wissenschaftlicher Kodex beg\u00fcnstigt die Explizitheit, wenn die mathematische Bedeutung wichtig ist.<\/p>\n<h2>Modulare gekoppelte Modelle bevor sie chaotisch werden<\/h2>\n<p>Wenn FIPY-Modelle fortgeschrittener werden, sind gekoppelte Gleichungen h\u00e4ufig der Ort, an dem die Projektstruktur entweder erfolgreich ist oder zusammenbricht. Ein gekoppeltes System kann lesbar bleiben, wenn jede physikalische Beziehung kontrolliert definiert wird, aber es wird sehr schnell unordentlich, wenn Teile mehrerer Gleichungen an verschiedenen Stellen im Code zusammengesetzt werden. Aus diesem Grund profitieren gekoppelte Modelle so sehr von benutzerdefinierten Modulen.<\/p>\n<p>Ein sauberes Design kann jedes Submodell in seiner eigenen Datei platzieren: eines f\u00fcr den Transport, eines f\u00fcr die Reaktion, eines f\u00fcr Energie, eines f\u00fcr das Phasenverhalten und eines f\u00fcr gemeinsame Koeffizienten. Ein zentraler gekoppelter Builder importiert dann diese Teile und montiert das System in einer konsistenten Reihenfolge. Dies reduziert das Risiko einer falschen Verdrahtung von Variablen und erleichtert die Erweiterung des Projekts, wenn ein drittes oder viertes Feld sp\u00e4ter hinzugef\u00fcgt wird.<\/p>\n<p>Es hilft auch bei einer der praktischsten Realit\u00e4ten der gekoppelten Arbeit: Experimentieren. M\u00f6glicherweise m\u00fcssen Sie eine monolithische L\u00f6sung mit einer lockereren N\u00e4herung vergleichen, einen konstitutiven Begriff gegen einen anderen austauschen oder ein Modell neu strukturieren, um Einschr\u00e4nkungen bei der Interaktion bestimmter Begriffe zu vermeiden. Ein modularer Aufbau erleichtert diese \u00c4nderungen, da die Kopplungslogik zentralisiert und nicht in einem wiederholten Verfahrenscode vergraben ist.<\/p>\n<h2>Organisieren Sie das Projekt wie ein Simulationspaket, kein Demo-Skript<\/h2>\n<p>Wenn Ihre FIPY-Arbeit \u00fcber einmalige Experimente hinausgeht, ist die Gesamtpaketstruktur fast genauso wichtig wie die PDE-Begriffe. Ein einfaches und effektives Layout enth\u00e4lt h\u00e4ufig separate Positionen f\u00fcr Netze, Variablen, Physiklogik, Gleichungserstellung, Ausf\u00fchren von Skripten, Nachbearbeitung und Tests. Dies muss nicht aufw\u00e4ndig sein, aber es sollte deutlich werden, wo jede Art von Logik hingeh\u00f6rt.<\/p>\n<p>Diese Organisation \u00e4ndert die Rolle des Skripts der obersten Ebene. Anstatt eine riesige Datei zu sein, die alles definiert, wird sie zu einem kontrollierten Einstiegspunkt f\u00fcr einen Simulationsfall. Es importiert ein Mesh, l\u00e4dt Parameter, initialisiert Variablen, erstellt Gleichungen, setzt die L\u00f6sung voran und schreibt Ausgaben. Dies ist viel einfacher zu \u00fcberpr\u00fcfen, mit verschiedenen Einstellungen erneut auszuf\u00fchren und sp\u00e4ter viel einfacher in Batchstudien oder Parameter-Sweeps zu konvertieren.<\/p>\n<p>Ein gut strukturiertes FIPY-Projekt erleichtert auch die Dokumentation. Jedes Modul kann eine Verantwortung erkl\u00e4ren, anstatt die Leser zu zwingen, in einer einzigen langen Datei voller gemischter Bedenken zu navigieren. In der Forschung ist das ein praktischer Vorteil, kein kosmetischer.<\/p>\n<h2>Testen Sie benutzerdefinierte Module in Schichten<\/h2>\n<p>Sobald der FIPY-Code in Module aufgeteilt ist, wird das Testen weitaus \u00fcberschaubarer. Das ist wichtig, da numerische Projekte auf andere Weise als gew\u00f6hnlicher Anwendungscode ausfallen. Ein Modul kann korrekt importieren und trotzdem die falsche Physik codieren. Ein Quell-Builder kann fehlerfrei ausgef\u00fchrt werden und dennoch instabiles Verhalten bei der Verfeinerung erzeugen. Eine gekoppelte Gleichung kann sich erfolgreich zusammensetzen, aber einen Term auf der falschen Variable setzen.<\/p>\n<p>Der beste Ansatz ist mehrschichtiges Testen. Kleine Hilfsfunktionen sollten nach M\u00f6glichkeit lokale Tests haben. Gleichungs-Builder sollten auf kleine Benchmark-Probleme \u00fcberpr\u00fcft werden, bevor sie in gr\u00f6\u00dferen L\u00e4ufen vertrauen. Vollst\u00e4ndige Simulations-Workflows sollten auch Tests im Regressionsstil haben, selbst wenn diese Tests einfach sind, z.<\/p>\n<p>Dieser Teststil entspricht der Logik eines guten wissenschaftlichen Rechnens. Sie m\u00f6chten nicht nur Code, der ausgef\u00fchrt wird. Sie m\u00f6chten Code, dessen Verhalten interpretierbar bleibt, wenn sich das Modell weiterentwickelt. Benutzerdefinierte Module erleichtern dies, da sie Verantwortlichkeiten isolieren. Tests geben diesen Verantwortlichkeiten einen stabilen Vertrag.<\/p>\n<h2>Schlussfolgerung<\/h2>\n<p>Beim Erweitern von FIPY mit benutzerdefinierten Modulen geht es weniger darum, das Framework komplizierter zu machen als vielmehr darum, Ihre eigene PDE-Arbeit gesteuerter zu gestalten. Die besten Erweiterungen sind in der Regel diejenigen, die das Modell verdeutlichen: Utility-Module, die Wiederholungen reduzieren, Gleichungs-Builder, die Formulierungen zentralisieren, Source-Term-Helfer, die die nichtlineare Physik explizit halten, und Paketstrukturen, die die Problemdefinition von der Ausf\u00fchrung trennen. Wenn die Modelle gr\u00f6\u00dfer werden, ist diese Modularit\u00e4t nicht mehr optional und wird zu einer der wichtigsten Sicherheitsvorkehrungen gegen numerische Verwirrung.<\/p>\n<p>Die praktische Regel ist einfach. Fange flach an. Modularisieren, was wiederholt wird. Halten Sie die Physik sichtbar. F\u00fcgen Sie eine tiefere Abstraktion nur hinzu, wenn die Wiederverwendung oder Stabilit\u00e4t deutlich verbessert wird. Wenn Sie diesem Muster folgen, werden benutzerdefinierte FIPY-Module mehr als ein Programmierkomfort. Sie werden Teil dessen, wie Sie ein Simulationsprojekt lesbar, testbar und im Laufe der Zeit erweiterbar machen.<\/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\"> 7<\/span> <span class=\"rt-label rt-postfix\">minutes<\/span><\/span>FIPY ist am n\u00fctzlichsten, wenn Sie die Behandlung als Sammlung von isolierten Beispielscripts nicht mehr ausf\u00fchren und es als flexibles Framework f\u00fcr die Erstellung eigener PDE-Workflows verwenden. Diese Verschiebung ist wichtig, da reale Simulationsprojekte selten lange einfach bleiben. Ein Modell, das als eine Gleichung auf einem Netz beginnt, w\u00e4chst h\u00e4ufig zu einem System mit wiederverwendbaren [&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=293","iawp_total_views":0,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-839","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>Erweitern von FIPY mit benutzerdefinierten Modulen: Ein praktischer Leitfaden f\u00fcr fortgeschrittene PDE-Workflows<\/title>\n<meta name=\"description\" content=\"Erfahren Sie, wie Sie FIPY mit benutzerdefinierten Modulen erweitern, indem Sie wiederverwendbare PDE-Codes organisieren, Quellbegriffe handhaben, gekoppelte Modelle erstellen und fortschrittliche FIPY-Workflows testen.\" \/>\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\/extending-fipy-with-custom-modules\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Erweitern von FIPY mit benutzerdefinierten Modulen: Ein praktischer Leitfaden f\u00fcr fortgeschrittene PDE-Workflows\" \/>\n<meta property=\"og:description\" content=\"Erfahren Sie, wie Sie FIPY mit benutzerdefinierten Modulen erweitern, indem Sie wiederverwendbare PDE-Codes organisieren, Quellbegriffe handhaben, gekoppelte Modelle erstellen und fortschrittliche FIPY-Workflows testen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/\" \/>\n<meta property=\"og:site_name\" content=\"matforge.org\" \/>\n<meta property=\"article:published_time\" content=\"2026-07-30T12:22:27+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=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/\"},\"author\":{\"name\":\"Tomas Delgado\",\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"headline\":\"Erweitern von FIPY mit benutzerdefinierten Modulen\",\"datePublished\":\"2026-07-30T12:22:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/\"},\"wordCount\":2238,\"commentCount\":0,\"articleSection\":[\"FIPY: Dokumentation, Beispiele &amp; Entwicklung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/\",\"url\":\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/\",\"name\":\"Erweitern von FIPY mit benutzerdefinierten Modulen: Ein praktischer Leitfaden f\u00fcr fortgeschrittene PDE-Workflows\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#website\"},\"datePublished\":\"2026-07-30T12:22:27+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/#\\\/schema\\\/person\\\/518cdd1f18dd092f4ed738d68e540061\"},\"description\":\"Erfahren Sie, wie Sie FIPY mit benutzerdefinierten Modulen erweitern, indem Sie wiederverwendbare PDE-Codes organisieren, Quellbegriffe handhaben, gekoppelte Modelle erstellen und fortschrittliche FIPY-Workflows testen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/matforge.org\\\/de\\\/extending-fipy-with-custom-modules\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/matforge.org\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Erweitern von FIPY mit benutzerdefinierten Modulen\"}]},{\"@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":"Erweitern von FIPY mit benutzerdefinierten Modulen: Ein praktischer Leitfaden f\u00fcr fortgeschrittene PDE-Workflows","description":"Erfahren Sie, wie Sie FIPY mit benutzerdefinierten Modulen erweitern, indem Sie wiederverwendbare PDE-Codes organisieren, Quellbegriffe handhaben, gekoppelte Modelle erstellen und fortschrittliche FIPY-Workflows testen.","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\/extending-fipy-with-custom-modules\/","og_locale":"de_DE","og_type":"article","og_title":"Erweitern von FIPY mit benutzerdefinierten Modulen: Ein praktischer Leitfaden f\u00fcr fortgeschrittene PDE-Workflows","og_description":"Erfahren Sie, wie Sie FIPY mit benutzerdefinierten Modulen erweitern, indem Sie wiederverwendbare PDE-Codes organisieren, Quellbegriffe handhaben, gekoppelte Modelle erstellen und fortschrittliche FIPY-Workflows testen.","og_url":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/","og_site_name":"matforge.org","article_published_time":"2026-07-30T12:22:27+00:00","author":"Tomas Delgado","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Tomas Delgado","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/#article","isPartOf":{"@id":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/"},"author":{"name":"Tomas Delgado","@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"headline":"Erweitern von FIPY mit benutzerdefinierten Modulen","datePublished":"2026-07-30T12:22:27+00:00","mainEntityOfPage":{"@id":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/"},"wordCount":2238,"commentCount":0,"articleSection":["FIPY: Dokumentation, Beispiele &amp; Entwicklung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/","url":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/","name":"Erweitern von FIPY mit benutzerdefinierten Modulen: Ein praktischer Leitfaden f\u00fcr fortgeschrittene PDE-Workflows","isPartOf":{"@id":"https:\/\/matforge.org\/#website"},"datePublished":"2026-07-30T12:22:27+00:00","author":{"@id":"https:\/\/matforge.org\/#\/schema\/person\/518cdd1f18dd092f4ed738d68e540061"},"description":"Erfahren Sie, wie Sie FIPY mit benutzerdefinierten Modulen erweitern, indem Sie wiederverwendbare PDE-Codes organisieren, Quellbegriffe handhaben, gekoppelte Modelle erstellen und fortschrittliche FIPY-Workflows testen.","breadcrumb":{"@id":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/matforge.org\/de\/extending-fipy-with-custom-modules\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/matforge.org\/de\/"},{"@type":"ListItem","position":2,"name":"Erweitern von FIPY mit benutzerdefinierten Modulen"}]},{"@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\/839","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=839"}],"version-history":[{"count":1,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/839\/revisions"}],"predecessor-version":[{"id":969,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/posts\/839\/revisions\/969"}],"wp:attachment":[{"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/media?parent=839"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/categories?post=839"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/matforge.org\/wp-json\/wp\/v2\/tags?post=839"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}