Qu'est-ce qu'un solveur itératif robuste pour les grands problèmes linéaires-élastiques en 3D?

9

Je plonge dans le monde fascinant de l'analyse par éléments finis et je voudrais résoudre un gros problème thermo-mécanique (uniquement thermique mécanique à , pas de feedback).

Pour le problème mécanique, j'ai déjà compris de la réponse de Geoff , que je devrai utiliser un solveur itératif en raison de la taille de ma maille. J'ai également lu dans la réponse de Matt que le choix de l'algorithme itératif correct est une tâche intimidante.

Je demande ici s'il existe une expérience sur de gros problèmes linéaires-élastiques en 3D qui pourrait m'aider à affiner ma recherche des meilleures performances? Dans mon cas, c'est une structure avec des films minces à motifs et des matériaux placés de manière irrégulière (à la fois CTE élevé et CTE faible). Il n'y a pas de grandes déformations dans cette analyse thermo-mécanique. Je peux utiliser le HPC de mon université [1,314 nœuds, avec 2 processeurs AMD Opteron (chacun 2,2 GHz / 8 cœurs)].

Je pense que cela PETScpourrait contenir quelque chose d'intéressant, en particulier les algorithmes qui font une sorte de décomposition de domaine (FETI, multigrid) mais je suis un peu dépassé par les options et je n'ai aucune expérience. J'aime aussi l'expression «préconditionneurs géométriquement informés» , mais je ne sais pas si cela m'aide. Je n'ai pas encore trouvé quelque chose qui se concentre sur la mécanique du continuum linéaire.

Une mise à l'échelle forte (Amdahl) est très importante dans mon application car mes partenaires industriels ne peuvent pas attendre longtemps les résultats de la simulation. J'apprécie certainement non seulement les réponses, mais aussi les recommandations pour une lecture plus approfondie dans les commentaires.

Sébastien
la source
Résolvez-vous des problèmes statiques? Semble oui. Pour les problèmes dynamiques ou harmoniques temporels, la réponse serait différente, je pense.
Hui Zhang
statique oui. La dynamique est trop chère.
Sebastian

Réponses:

6

En supposant que vos structures sont en réalité 3D (plutôt que seulement des fonctionnalités minces, peut-être discrétisées avec des éléments de coque) et que le modèle est supérieur à quelques centaines de milliers de DOF, les solveurs directs deviennent peu pratiques, surtout si vous n'avez besoin de résoudre chaque problème qu'une seule fois. De plus, à moins que la structure ne soit toujours "proche" d'une limite de Dirichlet, vous aurez besoin d'une méthode à plusieurs niveaux pour être efficace. La communauté est divisée entre "multigrille" et "décomposition de domaine à plusieurs niveaux". Pour une comparaison des mathématiques, voir ma réponse à: Quel est l'avantage du multigrille sur les préconditionneurs de décomposition de domaine, et vice versa?

La communauté multigrille a généralement mieux réussi à produire des logiciels à usage général. Pour l'élasticité, je suggère d'utiliser une agrégation lissée qui nécessite un "espace presque nul" approximatif. Dans PETSc, cela se fait en choisissant PCGAMG ou PCML (configurer avec --download-ml) et en appelant MatSetNearNullSpace()pour fournir les modes de corps rigides.

Les méthodes de décomposition de domaine offrent une opportunité de grossir plus rapidement que l'agrégation lissée, pouvant ainsi être plus tolérante à la latence, mais le "point idéal" en termes de performances a tendance à être plus étroit que l'agrégation lissée. À moins que vous ne vouliez faire des recherches sur les méthodes de décomposition de domaine, je suggère d'utiliser simplement une agrégation lissée, et peut-être d'essayer une méthode de décomposition de domaine lorsque le logiciel s'améliorera.

Jed Brown
la source
merci beaucoup pour cette réponse très informative! Qu'entendez-vous exactement par près d'une limite de Dirichlet ? Fermer en termes de nombre d'éléments?
Sebastian
Fermer en termes de distance, mesuré en éléments ou sous-domaines (pour la décomposition de domaine à un niveau avec des sous-domaines solides, résout), le long d'un chemin de matériau solide. Si les informations doivent traverser de nombreux sous-domaines pour déterminer une solution locale, les méthodes à un niveau convergeront lentement. Notez qu'une connexion solide ne suffit pas pour l'élasticité, tous les modes de corps rigides doivent être contrôlés.
Jed Brown
4

Je dirais que le choix canonique pour ce problème serait le solveur de gradient conjugué plus un préconditionneur multigrille algébrique. Pour PETSc, hypre / boomeramg ou ML seraient les choix évidents de préconditionneur.

Tous ces composants, lorsqu'ils sont utilisés via PETSc, s'adaptent très bien à des milliers ou des dizaines de milliers de processeurs si le problème est suffisamment important (au moins ~ 100 000 degrés de liberté par processus MPI).

Wolfgang Bangerth
la source
Notez que BoomerAMG (et AMG classique en général) n'utilise pas d'informations d'espace nul ou garantit autrement que les espaces grossiers peuvent représenter avec précision les modes de rotation. Vous pouvez (et devriez) l'essayer, ainsi que fractionner les composants et les résoudre séparément (à utiliser PCFIELDSPLITdans PETSc), mais l'agrégation lissée est généralement plus robuste pour l'élasticité.
Jed Brown
1

<0,4(X,y,z)KXXKyyKzz

Dans ce cas, vous pouvez utiliser des méthodes AMG moins avancées pour calculer une approximation de chaque inverse de bloc et obtenir un très bon préconditionneur.

À M
la source
1

Walter Landry a développé un code pour la déformation élastostatique tridimensionnelle à l'aide de plusieurs grilles adaptatives. Vous pouvez trouver le code sur

https://bitbucket.org/wlandry/gamra

Vous pouvez inclure l'effet du forçage thermique avec une contrainte propre isotrope et des forces corporelles équivalentes. Une fois ceux-ci en place, le solveur fonctionnerait très bien.

sylvain barbot
la source