Le raffinement adaptatif du maillage (AMR) est une technique courante pour traiter le problème des échelles spatiales très variables dans la solution numérique des PDE. Quelles bibliothèques à usage général existent pour AMR sur des grilles structurées? Idéalement, je voudrais quelque chose dans l'esprit de PETSc, où la bibliothèque gère uniquement les maillages adaptatifs et je fournis la physique et la discrétisation (différence finie / volume / élément).
La bibliothèque idéale serait
- Modulaire : ne dicte pas comment j'écris mon code ou trop de mes structures de données
- Général : peu importe le type de discrétisation que j'utilise
- Efficace : ne supporte pas trop de frais généraux
- Parallèle et hautement évolutif
Les bibliothèques qui ne correspondent qu'à un sous-ensemble de ces critères seraient toujours intéressantes.
Addendum : Je connais la longue liste de paquets AMR de Donna Calhoun , mais je ne sais pas lequel d'entre eux (le cas échéant) correspond aux critères ci-dessus. Je suis donc principalement intéressé à entendre des personnes qui ont une expérience réelle avec un ou (mieux encore) plusieurs packages, quant à la façon dont ils se mesurent en ces termes.
la source
Réponses:
Une bibliothèque à considérer est BoxLib . Ses principales caractéristiques (tirées du site Web) sont les suivantes:
Il y a aussi un wrapper Python (écrit par moi) pour la version Fortran incluse (bien qu'il soit assez jeune).
la source
Vous devriez également regarder libMesh . Il cible les méthodes par éléments finis, mais à part cela, je pense qu'il vérifie la plupart de vos cases. Contrairement à BoxLib, il s'agit d'une bibliothèque de types d'éléments mixtes entièrement non structurée, qui doit rester compatible avec les tets, les pyramides, les prismes et les hexaèdres dans le même maillage. Il possède également l'un des plus grands ensembles de règles d'intégration pour les fonctions de base polynomiales d'ordre élevé. Il est configuré pour vous permettre d'appeler directement PETSc (et certaines autres bibliothèques), vous avez donc la même évolutivité du solveur que PETSc.
Il y a certainement une manière libMesh de faire les choses, mais il y a aussi une façon PETSc de faire les choses. J'espère donc que cela ne vous fera pas peur.
la source
J'essaierais SAMRAI Je connais au moins un code qui l'utilise avec succès - IBAMR , un code de méthode de frontière immergée pour l'interaction fluide-structure avec AMR.
la source
Vous n'avez pas spécifié structuré ou non structuré.
Jetez un œil à Paramesh, Pyramid, p4est, Dendro, Samrai et Chombo.
Btw Pyramid ne fait pas de grossissement.
la source