Ich tauche in die faszinierende Welt der Finite-Elemente-Analyse ein und möchte ein großes thermomechanisches Problem lösen (nur thermische Pfeilmechanik, kein Feedback).
Für das mechanische Problem habe ich bereits aus Geoffs Antwort verstanden , dass ich aufgrund der Größe meines Netzes einen iterativen Löser verwenden muss. In Matts Antwort habe ich weiter gelesen , dass die Wahl des richtigen iterativen Algorithmus eine entmutigende Aufgabe ist.
Ich frage hier, ob es Erfahrungen mit großen linear-elastischen 3D-Problemen gibt, die mir helfen würden, meine Suche nach der besten Leistung einzugrenzen. In meinem Fall handelt es sich um eine Struktur mit dünnen, gemusterten Filmen und unregelmäßig platzierten Materialien (sowohl mit hohem als auch mit niedrigem CTE). Bei dieser thermomechanischen Analyse treten keine großen Verformungen auf. Ich kann das HPC meiner Universität verwenden [1.314 Knoten mit 2 AMD Opteron-Prozessoren (jeweils 2,2 GHz / 8 Kerne)].
Ich denke, es PETSc
könnte etwas Interessantes enthalten, insbesondere die Algorithmen, die eine Art Domänenzerlegung durchführen (FETI, Multigrid), aber ich bin ein bisschen überwältigt von den Optionen und habe keine Erfahrung. Ich mag auch den Ausdruck "geometrisch informierte Vorkonditionierer" , bin mir aber nicht sicher, ob mir das hilft. Ich habe noch nichts gefunden, das sich auf die lineare Kontinuumsmechanik konzentriert.
Eine starke Skalierung (Amdahl) ist in meiner Anwendung sehr wichtig, da meine Industriepartner nicht lange auf Simulationsergebnisse warten können. Ich freue mich auf jeden Fall nicht nur über Antworten, sondern auch über Empfehlungen zur weiteren Lektüre in den Kommentaren.
quelle
Antworten:
Unter der Annahme, dass Ihre Strukturen tatsächlich 3D sind (und nicht nur dünne Merkmale, die möglicherweise mit Schalenelementen diskretisiert werden) und das Modell größer als einige hunderttausend Dofs ist, werden direkte Löser unpraktisch, insbesondere wenn Sie jedes Problem nur einmal lösen müssen. Darüber hinaus benötigen Sie eine mehrstufige Methode, um effizient zu sein, es sei denn, die Struktur befindet sich immer "nahe" an einer Dirichlet-Grenze. Die Community ist in "Multigrid" und "Multilevel Domain Decomposition" unterteilt. Einen Vergleich der Mathematik finden Sie in meiner Antwort auf: Was ist der Vorteil von Multigrid gegenüber Vorkonditionierern für die Domänenzerlegung und umgekehrt?
Die Multigrid-Community war im Allgemeinen erfolgreicher bei der Herstellung von Allzweck-Software. Aus Gründen der Elastizität empfehle ich die Verwendung einer geglätteten Aggregation, die einen ungefähren "Raum nahe Null" erfordert. In PETSc erfolgt dies durch Auswahl von PCGAMG oder PCML (konfigurieren mit
--download-ml
) und AufrufenMatSetNearNullSpace()
, um die Starrkörpermodi bereitzustellen.Domänenzerlegungsmethoden bieten die Möglichkeit, schneller als eine geglättete Aggregation zu vergröbern, wodurch sie möglicherweise latenztoleranter sind, aber der "Sweet Spot" in Bezug auf die Leistung ist tendenziell enger als die geglättete Aggregation. Sofern Sie nicht nach Domänenzerlegungsmethoden suchen möchten, empfehle ich, nur eine geglättete Aggregation zu verwenden und möglicherweise eine Domänenzerlegungsmethode auszuprobieren, wenn die Software besser wird.
quelle
Ich würde sagen, die kanonische Wahl für dieses Problem wäre der Conjugate Gradient Solver plus ein algebraischer Multigrid-Vorkonditionierer. Für PETSc wären Hypre / Boomeramg oder ML die offensichtlichen Vorkonditionierer.
Alle diese Komponenten lassen sich bei Verwendung über PETSc sehr gut auf Tausende oder Zehntausende von Prozessoren skalieren, wenn das Problem groß genug ist (mindestens ~ 100.000 Freiheitsgrade pro MPI-Prozess).
quelle
PCFIELDSPLIT
aufteilen und separat lösen (Verwendung in PETSc), aber eine geglättete Aggregation ist normalerweise robuster für die Elastizität.In diesem Fall können Sie weniger fortgeschrittene AMG-Methoden verwenden, um eine Annäherung für jeden Block invers zu berechnen und einen ziemlich guten Vorkonditionierer zu erhalten.
quelle
Walter Landry entwickelte einen Code für die dreidimensionale elastostatische Verformung unter Verwendung eines adaptiven Multigrids. Den Code finden Sie unter
https://bitbucket.org/wlandry/gamra
Sie können den Effekt des thermischen Antriebs mit isotroper Eigenspannung und äquivalenten Körperkräften einbeziehen. Sobald diese vorhanden sind, funktioniert der Solver einwandfrei.
quelle