Reading Time: 10 minutes

FIPY verfügt nicht über eine integrierte adaptive Netzverfeinerung (AMR). Aktuelle Ansätze umfassen externe Netzgenerierung mit GMSH (ineffizient für dynamische Probleme), die Integration in dedizierte AMR-Bibliotheken wie libmesh (architektonisch herausfordernd) oder das Wechseln zu alternativen Phasenfeldcodes, die AMR nativ unterstützen (Moose, Prisms-PF). AMR bietet signifikante Beschleunigungen (oft 2–10 ×) für Phasenfeldprobleme mit lokalisierten Schnittstellen, führt jedoch zu einer algorithmischen Komplexität und lohnt sich möglicherweise nicht, wenn überall eine hohe Auflösung erforderlich ist. Wenn Ihre FIPY-Simulation aufgrund einheitlicher Netze mit dem Speicher oder der Leistung zu kämpfen hat, optimieren Sie zuerst Ihr statisches Netz, erwägen Sie eine gröbere globale Auflösung mit engeren Lösern und verfolgen Sie AMR nur, wenn Ihr Problem einen klaren, kleinen Bereich von Interesse hat (z. Netzmanagement-Infrastruktur.

Einleitung: Das Mesh-Auflösungs-Dilemma

Phasenfeldsimulationen beinhalten häufig komplexe, sich entwickelnde Phänomene – Dendritenwachstum bei der Erstarrung, Phasentrennung in Legierungen oder Elektroden-Elektrolyt-Grenzflächen in Batterien. Diese Simulationen erfordern typischerweise nahe Grenzflächen mit hoher räumlicher Auflösung, bei denen Gradienten steil sind, während gröbere Netze weit entfernt von diesen Regionen ausreichen. Ein einheitliches Netz, das in Ordnung ist, um die Schnittstelle überall aufzulösen, verschwendet Rechenressourcen an uninteressanten Bereichen, was zu übermäßiger Speichernutzung und langsameren Laufzeiten führt.

Adaptive Mesh Refinement (AMR) löst dies durch dynamisches Anpassen der Netzauflösung während einer Simulation, indem die Zellen verfeinert werden, wobei sich die Lösung schnell ändert und vergröbert, wo sie glatt ist. Bei Phasenfeldproblemen, bei denen die Schnittstelle einen winzigen Bruchteil der Domäne einnimmt, kann AMR die Zellzahlen um eine Größenordnung oder mehr reduzieren und größere Simulationen oder eine schnellere Abwicklung auf Desktop-Workstations ermöglichen.

Wenn Sie jedoch FIPY verwenden, werden Sie schnell eine harte Wahrheit entdecken: Fipy unterstützt AMR nicht nativ . Dies war in der Dokumentation nicht immer klar, so dass viele Benutzer Zeit in die Sackgassen investieren, bevor sie zu demselben Schluss kommen, den die FIPY-Kernentwickler erreicht haben: Das architektonische Missverhältnis zwischen dem Finite Volume-Framework von FIPY und den traditionellen AMR-Bibliotheken ist beträchtlich.

Dieser Leitfaden schneidet durch die Unsicherheit. Wir werden untersuchen, was AMR für Ihre FIPY-Simulationen bedeuten könnte, überprüfen den aktuellen Stand der AMR-Unterstützung, bewerten praktische Problemumgehungen und stellen einen Entscheidungsrahmen bereit, der Ihnen bei der Auswahl des richtigen Weges hilft.

Was ist Adaptive Mesh Refinement (AMR)?

Bevor wir uns mit den FIPY-Spezifika befassen, sollten wir ein klares mentales Modell erstellen, wie AMR funktioniert und warum es wertvoll ist.

Die Kernidee

In einem statischen Netz wählen Sie eine einzelne Auflösung (Zellengröße), die den anspruchsvollsten Teil Ihrer Domain überall befriedigen muss. Wenn Sie einen Abstand von 10 nm benötigen, um eine Dendritenspitze aufzulösen, aber die Domäne einen Durchmesser von 1 mm hat, würde ein einheitliches Netz 100.000 Zellen in jeder Dimension erfordern – eindeutig nicht möglich.

AMR beginnt mit einem groben Basisnetz und führt feinere Patches nur bei Bedarf ein. Zu den Verfeinerungskriterien gehören typischerweise:

  • Gradientenschwelle: Verfeinern Sie, wo |∇φ| Überschreitet einen Wert (bei Parameter der Phasenfeldreihenfolge)
  • Fehlerschätzer: Verwenden Sie lösungsbasierte oder restliche Fehlerindikatoren
  • Feature-Tracking: Folgen Sie bekannten Schnittstellen oder Strukturen

Das Netz passt sich periodisch an (alle n Zeitschritte oder wenn bestimmte Kriterien ausgelöst werden) und erfordern:

  1. Zellsplitting / Coarsening Algorithmen
  2. Dateninterpolation, um Lösungsfelder von alten zu neuen Netzen zu übertragen
  3. Load-Balancing für parallele Simulationen
  4. Durchsetzung durch die Konservierung über Grenzen hinweg

AMR vs. Statisches Netz: Ein quantitativer Vergleich

Eine Studie aus dem Jahr 2021 in Computer & Mathematics with Applications analysierte die AMR-Leistung für verschiedene PDE-Probleme und stellte fest, dass AMR den Speicherverbrauch um 60–80% und die Wanduhrzeit um 40–70% im Vergleich zu einheitlichen Gittern reduzierte, die selbst nach AMR-Overhead auf die gleiche Genauigkeitsschwelle veredelt wurden.

In derselben Studie wurde jedoch festgestellt, dass AMR bei Problemen, bei denen fast überall eine hohe Auflösung erforderlich ist (z. B. spinodale Zersetzung im Frühstadium mit gleichmäßigen Zusammensetzungsschwankungen), nur minimalen Nutzen bot und aufgrund des Management-Overheads manchmal unterdurchschnittlich abfiel.

Der Zustand von AMR in FIPY: Aktuelle Realität

Offizielle Position des FIPY-Teams

Die maßgeblichste Quelle für FIPY AMR ist die GitHub-Ausgabe Nr. 618, die im Februar 2019 eröffnet wurde. Die Diskussion enthüllt die Haltung des Projekts:

Guyer (Fipy Maintainer): „Wir haben gelegentlich versucht, aber nichts fruchtbares. Verwenden von GMSH, um das Netz zu regenerieren und dann die Daten neu zu interpolieren, ist hoffnungslos ineffizient (ich habe es für quasi-statisch getan Probleme) richtig, FIPY sollte in libmesh oder ein anderes dediziertes adaptives Mesher integriert werden; ich möchte das, aber bisher sind die grundlegenden Architekturen von FIPY und die Mesher, die ich mir angesehen habe, einfach zu unähnlich. „

Dies ist kein „vielleicht eines Tages“ -Es ist eine Anerkennung dafür, dass Fipys Design und die Anforderungen an effizientes AMR grundlegend falsch ausgerichtet sind. Die FIPY-Architektur, die auf einer unkomplizierten Diskretisierung des endlichen Volumens mit strukturierten oder unstrukturierten Netzen basiert, die als feste Gitter im Speicher dargestellt werden, berücksichtigt nicht die dynamischen Topologieänderungen, die AMR ohne wesentliche Umstrukturierung erfordert.

Warum Integration schwierig ist

Die Mesh-Abstraktion von FIPY (Grid2D, Grid3D, Gmsh2D, Gmsh3D usw.) setzt eine statische Topologie voraus. Zellen, Gesichter und ihre Konnektivität werden beim Simulationsstart hergestellt und bestehen durchgehend weiter. AMR erfordert:

  • Dynamische Konnektivität: Wenn sich eine Zelle trennt, werden neue Zellen angezeigt, Nachbarn ändern sich und Face-to-Cell-Beziehungen werden neu definiert.
  • Datenmigration: Lösungsvariablen müssen von alten Zellen in neue interpoliert werden, um die Erhaltungseigenschaften zu erhalten.
  • Solver Recomputation: Die spärliche Matrixstruktur ändert sich, wenn sich die Anzahl der Zellen ändert, was eine Neuzuweisung von Matrix und einen Neuaufbau der Vorkonditionierer erfordert.
  • Parallel-Umverteilung: In MPI-Simulationen erzeugen verfeinerte Zellen ein Lastungleichgewicht; Prozessoren müssen Geisterregionen austauschen.

Keine davon wird im aktuellen Framework von FIPY unterstützt. Der Versuch, sie zu implementieren, würde im Wesentlichen bedeuten, große Teile von FIPY selbst neu zu schreiben.

Praktische Ansätze (und ihre Kompromisse)

Was sind Ihre Optionen angesichts des Mangels an nativer Unterstützung, wenn Sie mit FIPY ein AMR-ähnliches Verhalten benötigen? Hier sind die Pfade, die Benutzer erkundet haben, von den meisten bis zur am wenigsten praktischen.

1. Verwenden Sie einen alternativen Phasenfeldcode mit AMR

Verdikt: Empfohlen, wenn AMR unerlässlich ist und Sie ein neues Projekt starten.

Mehrere Open-Source-Phasenfeldcodes unterstützen AMR nativ:

  • Moose (Multiphysics objektorientierte Simulationsumgebung): Verwendet libMesh für die adaptive Vernetzung, unterstützt parallele AMR mit Lastausgleich und enthält Phasenfeldmodule.
  • Prismen-PF: Bietet skalierbare AMR für Phasenfeldprobleme mit ausgeklügelten Verfeinerungskriterien.
  • OpenPhase: Unterstützt zellbasierte AMR für die Entwicklung der Mikrostruktur.

Diese Codes sind produktionsbereit, gut dokumentiert und haben aktive Communities. Der Kompromiss ist eine steilere Lernkurve, wenn Sie bereits in die Python-API und in das Ökosystem von Fipy investiert sind.

Wann wählen Sie dies : Sie starten ein neues Simulationsprojekt, bei dem AMR eine schwierige Anforderung ist (große Domäne, lokalisierte Schnittstelle, begrenzte Compute-Ressourcen), und Sie können es sich leisten, ein neues Framework zu lernen.

Internal Link: Eine Übersicht über Phasenfeldmodellierungskonzepte finden Sie in unserem Leitfaden Phasenfeldmodelle in der Materialwissenschaften.

2. Berechnen Sie mehrere statische Netze und wechseln Sie zwischen ihnen

Verdikation: Halbpraktisch für Probleme mit vorhersehbaren Verfeinerungsmustern.

Wenn Ihre Simulation eine bekannte Flugbahn hat (z. B. einen Dendriten, der in eine Richtung wächst), können Sie eine Reihe von Netzen mit Verfeinerungszonen erstellen, die manuell mithilfe von GMSH platziert werden. In vordefinierten Zeitschritten würden Sie:

  1. Stoppen Sie die Simulation
  2. Felder vom alten Netz zum neuen Netz interpolieren
  3. Starten Sie mit dem neuen Netz neu

Herausforderungen:

  • FIPY hat keine integrierte Netzumschaltung. Sie müssen zellzentrierte Felder exportieren, ein neues Objekt Mesh erstellen, manuell interpolieren und Solver neu initialisieren.
  • Die Interpolation muss die Konservierung erhalten – eine einfache lineare Interpolation reicht für flusskonservative Finite-Volumen-Methoden nicht aus.
  • Der Prozess ist manuell und fehleranfällig; Nicht geeignet für dynamische Anpassung basierend auf Lösungsgradienten.

Wann wählen Sie dies : Ihr Verfeinerungsmuster ist räumlich vorhersehbar (z. B. eine sich bewegende Front, die sich in einem bekannten Begrenzungsbereich befindet), und Sie können gelegentliche Stopps und manuelle Eingriffe tolerieren.

Pitfall-Warnung: Eine schlechte Interpolation an grob feinen Schnittstellen kann Genauigkeitsverluste erster Ordnung oder nicht-physische Schwingungen einführen.

3. Externe AMR-Bibliotheksintegration (libmesh, paramesh)

Verdikt: Forschungsebene; Nicht produktionsreif.

Der FIPY-Betreuer erwähnte LibMesh als potenzielles Integrationsziel. LibMesh bietet ein Finite-Element-/Finite-Volumen-Framework mit AMR, das von Moose und anderen verwendet wird. Die Integration von FIPY in libMesh würde jedoch Folgendes erfordern:

  • Umschreiben der Diskretisierung von FIPY zur Verwendung des Netz- und Montagesystems von libMesh
  • Portierung der vorhandenen Gleichungs- und Solver-Infrastruktur von FIPY
  • Grundlegende Unterschiede angehen: FIPY ist endliches Volumen, libmesh ist in erster Linie finites Element

Ähnliche Herausforderungen bestehen bei Paramesh (einer blockstrukturierten AMR-Bibliothek in Fortran). Die architektonische Nichtübereinstimmung bedeutet, dass die Integration keine Frage des „Einsteckens“ von AMR ist – es ist ein großer technischer Aufwand.

Wann sollte dies berücksichtigt werden: Sie sind ein Entwickler, der mit AMR-Unterstützung einen Beitrag zum Fipy Core leisten oder eine langfristige Gabelung beibehalten möchte. Nicht für Endbenutzer empfohlen.

4. Akzeptieren Sie die Einschränkung: Optimieren Sie Ihr statisches Netz

Bericht: Die pragmatische Standardeinstellung für die meisten FIPY-Benutzer.

Fragen Sie vor AMR: Kann ich mit einem gut gestalteten statischen Netz akzeptable Leistung erzielen? Oft lautet die Antwort ja, wenn Sie:

  • Verwendete Netze: Nahe Schnittstellen manuell mit glatten Übergängen verfeinern (kein großes Seitenverhältnis-Springs)
  • Lokale Netzdichtefunktionen einsetzen: Definieren Sie in GMSH-Felder die Netzgrößenfelder, die die Zellen bei Bedarf konzentrieren
  • Löser-Optionen von FIPY: Verwenden Sie effiziente Vorkonditionierer (z. B. ScipyKrylov mit ilu Vorkonditionierung)
  • Reduzieren Sie unnötige Verfeinerung: Viele Benutzer verfeinern „nur um sicher zu sein“. Konvergenzstudien zeigen oft, dass gröbere Netze für qualitative Ergebnisse ausreichen.

Beispielsweise benötigt eine Phasenfeld-Dendritensimulation möglicherweise nur feine Zellen innerhalb weniger Grenzflächen der Festflüssigkeitsfront. Ein statisches Netz mit manueller Einstufung kann dies mit 10–20% der Zellen eines einheitlichen feinen Netzes erfassen, wenn auch ohne Anpassungsfähigkeit, um eine sich bewegende Front zu verfolgen. Wenn sich die Front relativ zur Rechenzeit langsam bewegt, können Sie akzeptieren, dass einige Regionen im Verlauf der Simulation untergelöst werden, oder beginnen Sie einfach mit einem Netz, das so fein ist, dass die gesamte erwartete Flugbahn abgedeckt wird.

Wann wählen Sie dies: Ihre Simulationsdomäne ist nicht riesig, Ihre Schnittstellenregion ist ein überschaubarer Bruchteil der Domain oder Sie können eine gewisse Ineffizienz für Code-Einfachheit tolerieren.

5. Implementieren Sie eine benutzerdefinierte AMR-Schicht

Beurteilung: Nur fortgeschrittene Benutzer; hohes Risiko.

Theoretisch könnten Sie AMR auf FIPY bauen, indem Sie:

  1. Beibehalten einer Zuordnung von FIPY-Zellindizes zu einer hierarchischen Netzstruktur
  2. Regelmäßiges Erstellen eines neuen Grid2D/Grid3D mit raffinierten Zellen
  3. Interpolierende Lösungsvariablen mit den Methoden cellVariable von FIPY
  4. Wiederaufbau des linearen Systems

Dieser Ansatz sieht sich schweren Hindernissen gegenüber:

  • Die Objekte Mesh von FIPY sind nicht für die Modifikation der Mittensimulation ausgelegt
  • CellVariable Datenstrukturen sind eng mit der ursprünglichen Netzindizierung gekoppelt
  • Wiederaufbau des Gleichungssystems (TransientTerm, DiffusionTerm usw.) Mittensimulation ist komplex
  • Keine Erhaltungsgarantien über Verfeinerungsschritte

Einige Forscher haben Varianten davon versucht, aber es gibt keine funktionierende Open-Source-Implementierung.

Wann sollte dies berücksichtigt werden : Sie haben spezifische Forschungsanforderungen, die FIPY, AMR vorschreiben, und Sie sind bereit, Monate in Entwicklung und Validierung zu investieren. Nicht für Routineeinsatz empfohlen.

Entscheidungsrahmen: Sollten Sie AMR mit FIPY verfolgen?

Verwenden Sie dieses Flussdiagramm, um Ihren Pfad zu bestimmen:

Do you need AMR? (Is your problem large + interface-localized?)
│
├─ No → Optimize static mesh (Section 4)
│
└─ Yes → Can you switch to a phase-field code with AMR?
│
├─ Yes → Use MOOSE/PRISMS-PF/OpenPhase
│
└─ No → Are you willing to build custom AMR infrastructure?
│
├─ Yes → Research-level implementation (Section 5)
│
└─ No → Accept that FiPy cannot do AMR;
either live with static mesh inefficiency
or change your problem scope.

Schlüsselfragen zu beantworten

  1. Wie Prozentsatz Ihrer Domain benötigt eine feine Auflösung?
    – < 20%: AMR könnte 3–10 × beschleunigen, wenn verfügbar
    – > 50%: AMR-Nutzen nimmt ab; Statisches Netz kann einfacher und schneller sein
  2. Bewegt sich Ihre Schnittstelle während der Simulation erheblich?
    – Ja: AMR-Tracking wird wertvoll; Andernfalls muss das statisch abgestufte Netz die gesamte mögliche Flugbahn abdecken
    – Nein: Ein einzelnes statisches Graded-Mesh reicht aus
  3. Haben Sie Entwickler-Ressourcen, um AMR-Unterstützung zu bauen?
    – Ja: Sie könnten zu FIPY beitragen oder eine Gabel beibehalten (hohe langfristige Kosten)
    – Nein: Wählen Sie einen alternativen Code oder ein statisches Netz
  4. Ist parallele Skalierbarkeit kritisch?
    – AMR stellt Herausforderungen im Lastenausgleich vor; Statische Netze parallelisieren sich vorhersehbarer
    – Wenn Sie Hunderte von Kernen benötigen, handhaben AMR-Bibliotheken wie Moose dies besser als jeder Fipy-Hack

Häufige Fallstricke und Missverständnisse

Auch wenn Sie AMR durch alternative Codes verfolgen, achten Sie auf diese Probleme:

Fallfall 1: Überraffination

Das Festlegen von Verfeinerungskriterien zu aggressiv führt zu einer übermäßigen Zellerzeugung, negiert AMR-Vorteile und überschreitet möglicherweise die Speichergrenzen. Der NIST-Phasen-Feld-Leitfaden empfiehlt: „Verfeinerungsebenen einschränken“ und „Verwendung der richtigen Nachbarschaftsbeschränkung (nicht mehr als eine Differenz der Verfeinerungsebene zwischen benachbarten Zellen)“.

Empfehlung: Beginnen Sie mit konservativen Schwellenwerten (z. B. nur dort verfeinern, wenn | ∇φ| > 0,05/Δx) und das Wachstum der Zellzahl überwacht.

Falle 2: Schlechte Interpolation an Grobfeinstgrenzen

Wenn sich Daten zwischen Netzen mit unterschiedlichen Verfeinerungsebenen bewegen, treten Konservierungsfehler und Genauigkeitsverlust auf. Die Konvergenz erster Ordnung an diesen Schnittstellen kann den globalen Fehler dominieren.

Empfehlung: Verwenden Sie konservative Interpolationsschemata; Stellen Sie bei Finite-Volumen-Methoden den Fluss über die Verfeinerungsschnittstellen sicher. Bibliotheken wie LibMesh erledigen dies intern – vermeiden Sie DIY-Interpolation, es sei denn, Sie sind ein Experte.

Fallfall 3: Mesh-Chatter

Kontinuierliche Verfeinerung/Vergröberung zwischen benachbarten Zeitschritten (z. B. wenn eine Grenzfläche um eine Zellgrenze oszilliert) verursacht Instabilität und verschwendete Berechnung.

Empfehlung: Implementieren Sie die Hysterese: Erfordern Sie, dass eine Zelle für mehrere Schritte über/unter der Verfeinerungsschwelle bleibt, bevor Sie die Ebene ändern.

Fallfall 4: Lastenausgleich bei parallelen Läufen ignorieren

Die dynamische Verfeinerung schafft eine ungleichmäßige Zellverteilung über MPI-Ränge. Einige Prozessoren werden mit raffinierten Zellen überflutet, während andere im Leerlauf sind.

Empfehlung: Verwenden Sie Bibliotheken mit integriertem Lastenausgleich (Moose, Prismen-PF). Wenn Sie sich selbst implementieren, partitionieren Sie das Netz regelmäßig mithilfe von raumfüllenden Kurven oder einer Diagrammpartitionierung.

Leistungserwartungen: Was können Sie realistisch gewinnen?

Basierend auf veröffentlichten Benchmarks:

  • PFHub Benchmark 3 (Dendritenwachstum): Elch und Prismen-PF mit AMR erzielten die schnellsten Laufzeiten, wobei Größenordnungen weniger Zellen als einheitliche Netze verwendeten.
  • Allgemeines CFD/Phasenfeld: AMR reduziert die Zellzahlen typischerweise um 60–80% und die Wandzeit um 40–70% im Vergleich zu gleichmäßigen Netzen bei gleicher Genauigkeit.
  • Overhead: AMR fügt 5–15% Runtime-Overhead für Netzmanagement und Interpolation hinzu; Dies wird durch die reduzierte Zellzahl abgeschrieben.

Aber Hinweis: Diese Zahlen stammen von Codes, die AMR tief integriert haben. Eine kludgy FIPY + GMSH-Schleife wäre wahrscheinlich langsamer als ein statisches Netz aufgrund der wiederholten Netzerzeugung und der Interpolationskosten.

Schritt für Schritt: Was stattdessen zu tun ist

Wenn Sie von der AMR-Beschränkung von FIPY blockiert sind, finden Sie hier einen praktischen Aktionsplan:

Schritt 1: Optimieren Sie Ihr aktuelles statisches Netz

  1. Führen Sie eine Mesh-Konvergenzstudie durch : Finden Sie das gröberste Netz, das akzeptable Ergebnisse liefert. Viele Benutzer verfeinern.
  2. Verwenden Sie abgestufte Netze: Definieren Sie in GMSH ein MeshSize-Feld, das je nach Entfernung von Ihrer Region von Interesse variiert.
  3. Effiziente Solver aktivieren: Verwenden Sie ScipyKrylov (GMRES) mit ilu Vorkonditionierung anstelle der Standard-PETSC-Optionen, wenn Ihr Problem mäßig groß ist.
  4. Zeitschritte in Betracht ziehen: Größere Zeitschritte mit impliziten Lösern können gröbere Netze kompensieren.

Schritt 2: Alternative Codes auswerten

Wenn statische Netze es immer noch nicht schneiden:

Führen Sie einen kleinen Benchmark (z. B. eine 2D-Spinodal-Zerlegung) aus, um die Leistung und den Portierungsaufwand zu messen.

Schritt 3: Wenn Sie bei FIPY bleiben müssen und AMR brauchen

Überdenken Sie Ihre Problemformulierung:

  • Können Sie die Domaingröße reduzieren? Kleinere Domains brauchen weniger Verfeinerung.
  • Können Sie Symmetrie verwenden? Vierteldomänenmodelle senken die Zellzahlen dramatisch.
  • Können Sie weniger genaue Ergebnisse akzeptieren? Manchmal reicht qualitatives Verhalten für die Frühphasenforschung aus.

Wenn keine dieser Funktionen funktioniert, haben Sie für dieses Problem die Decke von Fipy erreicht. Erwägen Sie, einen Beitrag zur FIPY AMR-Entwicklung (siehe Ausgabe #618) oder zum Umschalten von Tools.

Fazit und Empfehlungen

Die Adaptive Mesh-Verfeinerung ist eine leistungsstarke Technik für Phasenfeldsimulationen mit lokalisierten Schnittstellen, die bei korrekter Implementierung erhebliche Leistungssteigerungen bietet. FY unterstützt jedoch AMR nicht , und die architektonischen Lücken bedeuten, dass native Unterstützung in naher Zukunft unwahrscheinlich ist.

Unsere Empfehlungen:

  1. Für die meisten FIPY-Benutzer: Optimieren Sie Ihr statisches Netz mit abgestuften Größen und effizienten Lösern. Dies löst 80% der Leistungsprobleme, ohne die komfortable Python-Umgebung von Fipy zu verlassen.
  2. Für neue Projekte mit strengen AMR-Bedürfnissen: Wählen Sie Moose oder Prisms-PF. Die Zeit, die in das Erlernen dieser Frameworks investiert wird, zahlt sich für die Skalierbarkeit und den Zugriff auf erweiterte Funktionen wie AMR, nichtlineare Solver und Multiphysics-Kopplung aus.
  3. Für Forscher, die Phasenfeldgrenzen verschieben: Erwägen Sie, einen Beitrag zur Entwicklung von FIPY zu leisten oder eine Gabel mit AMR-Unterstützung aufrechtzuerhalten – aber seien Sie auf ein mehrjähriges Engagement vorbereitet.

Denken Sie daran: Der beste Simulationscode ist derjenige, den Sie effektiv verwenden können. Eine „perfekte“ AMR-Implementierung, die Sie nicht erhalten können, ist schlimmer als ein „begrenztes“ statisches Netz, das termingerecht vertrauenswürdige Ergebnisse liefert.

Verwandte Anleitungen

Quellen und weiterführende Literatur