Existe-t-il une bibliothèque à usage général pour le raffinement de maillage adaptatif à grille structurée?

18

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.

David Ketcheson
la source
2
+1, je suis curieux de savoir quel logiciel AMR existe également, et je préférerais qu'il réponde aux critères que vous avez mentionnés ci-dessus.
Geoff Oxberry
Je pensais juste mentionner que la dernière version de Chombo vient de sortir, et (on prétend) qu'elle devrait être plus facile à intégrer dans un package plus grand ( Notes de publication ). Ce n'est pas une révision majeure, donc il y a des chances que certaines choses ne répondent toujours pas à tous vos critères.
Jeremy Kozdon

Réponses:

14

Une bibliothèque à considérer est BoxLib . Ses principales caractéristiques (tirées du site Web) sont les suivantes:

  • Prise en charge de la RAM structurée en blocs avec sous-recyclage en option dans le temps
  • Prise en charge des données centrées sur les cellules, centrées sur les faces et centrées sur les nœuds
  • Prise en charge des résolutions hyperboliques, paraboliques et elliptiques sur la structure de grille hiérarchique
  • Versions C ++ et Fortran90
  • Prend en charge le modèle de programmation hybride avec MPI et OpenMP
  • Base d'applications matures en combustion, astrophysique, cosmologie et milieux poreux
  • Évolutivité démontrée à plus de 200 000 processeurs
  • Disponible gratuitement pour les utilisateurs intéressés
  • Il y a aussi un wrapper Python (écrit par moi) pour la version Fortran incluse (bien qu'il soit assez jeune).

    Matthew Emmett
    la source
    9

    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.

    Bill Barth
    la source
    4

    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.

    John Travolta
    la source
    Merci Johntra (et bienvenue sur scicomp)! Connaissez-vous les différences marquantes entre SAMRAI et BoxLib? Vous pouvez également utiliser les liens en ligne en mettant le texte du lien dans [] et la destination dans ()
    Aron Ahmadia
    Malheureusement, je n'ai pas - pour des raisons de faits, je viens d'en entendre parler (BoxLib) pour la première fois.C'est exactement la raison pour laquelle j'ai décidé de rejoindre - d'apprendre de nouveaux smt en discutant de manière informelle avec vous les gars - merci.
    Johntra Volta
    J'appuie SAMRAI, c'est un cadre général très utile pour la RAM. J'aime aussi beaucoup la conception hybride C ++ / Fortran en faveur de l'auteur. Les noyaux de calcul peuvent être écrits en Fortran, comme ils devraient l'être, et les classes C ++ fournissent toute l'abstraction nécessaire pour masquer le MPI interne et la gestion de la mémoire.
    talonmies
    @AronAhmadia: BoxLib ne peut pas gérer l'interpolation linéaire par morceaux avec des limites de Dirichlet changeantes dans une Multigrid géométrique centrée sur les cellules. La pensée l'ajouterait comme un point intéressant.
    Gaurav Saxena
    2

    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.

    stali
    la source
    1
    Bonne prise; J'ai édité la question. Pourriez-vous nous dire dans quelle mesure ces bibliothèques correspondent à mes critères?
    David Ketcheson