¿Existe una biblioteca de uso general para el refinamiento de malla adaptable de rejilla estructurada?


18

Refinamiento de malla adaptable (AMR) es una técnica común para tratar el problema de escalas espaciales muy variadas en la solución numérica de PDEs. ¿Qué bibliotecas de propósito general existen para AMR en cuadrículas estructuradas? Idealmente, me gustaría algo en el espíritu de PETSc, donde la biblioteca maneja solo las mallas adaptativas y proporciono la física y la discretización (diferencia finita / volumen / elemento).

La biblioteca ideal sería

  • Modular : no dicta cómo escribo mi código o demasiado de mis estructuras de datos
  • General : no me importa qué tipo de discretización estoy usando
  • Eficiente : no genera demasiados gastos generales
  • Paralelo y altamente escalable

Las bibliotecas que se ajustan solo a un subconjunto de estos criterios seguirían siendo interesantes.

Anexo : Soy consciente de la extensa lista de paquetes de AMR de Donna Calhoun , pero no sé cuál de ellos (si corresponde) cumple con los criterios anteriores. Por lo tanto, estoy interesado principalmente en escuchar a las personas que tienen experiencia real con uno o (mejor aún) más paquetes, en cuanto a cómo se comparan en esos términos.


2
+1, tengo curiosidad por saber qué software AMR también existe, y preferiría que satisfaga los criterios que mencionó anteriormente.
Geoff Oxberry

Solo pensé en mencionar que la versión más nueva de Chombo acaba de ser lanzada, y (se afirma) que debería ser más fácil de integrar en un paquete más grande ( Notas de la versión ). No es una revisión importante, por lo que es probable que algunas cosas aún no satisfagan todos sus criterios.
Jeremy Kozdon

Respuestas:


14

Una biblioteca a considerar es BoxLib . Sus características clave (del sitio web) son:

  • Soporte para AMR estructurado en bloque con subciclo opcional en el tiempo
  • Soporte para datos centrados en celdas, centrados en la cara y centrados en nodos
  • Soporte para soluciones hiperbólicas, parabólicas y elípticas en una estructura de cuadrícula jerárquica.
  • Versiones C ++ y Fortran90
  • Admite el modelo de programación híbrido con MPI y OpenMP
  • Bases de aplicaciones maduras en combustión, astrofísica, cosmología y medios porosos.
  • Escalado demostrado a más de 200,000 procesadores
  • Disponible gratuitamente para usuarios interesados
  • También hay un contenedor Python (escrito por mí) para la versión Fortran incluida (aunque es bastante joven).


    9

    También deberías mirar libMesh . Está dirigido a métodos de elementos finitos, pero aparte de eso, creo que marca la mayoría de sus cuadros. A diferencia de BoxLib, es una biblioteca de tipos de elementos mixtos, totalmente desestructurada, que debe ser compatible con tets, pirámides, prismas y hexahedra en la misma malla. También tiene uno de los conjuntos más grandes de reglas de integración para funciones de base polinomiales de alto orden. Está configurado para permitirle llamar a PETSc (y algunas otras bibliotecas también) directamente, por lo que tiene la misma escalabilidad de solucionador que PETSc.

    Ciertamente hay una forma libMesh de hacer las cosas, pero también hay una forma PETSc de hacer las cosas. Espero que eso no te asuste.


    4

    Me gustaría probar Samrai Conozco al menos un código que lo utiliza con éxito - IBAMR , un código de Inmerso Límites Método para la interacción del fluido-estructura con AMR.


    ¡Gracias Johntra (y bienvenido a scicomp)! ¿Conoces las principales diferencias entre SAMRAI y BoxLib? Además, puede usar enlaces en línea colocando el texto del enlace en [] y el destino en ()
    Aron Ahmadia

    Desafortunadamente no lo hago, ya que de hecho, acabo de enterarme de ello (BoxLib) por primera vez. Esa es exactamente la razón por la que decidí unirme, para aprender algo nuevo discutiendo informalmente con ustedes, gracias.
    Johntra Volta

    Segundo SAMRAI, es un marco de propósito general muy útil para AMR. También me gusta mucho el diseño híbrido de C ++ / Fortran a favor del autor. Los núcleos computacionales se pueden escribir en Fortran, como deberían ser, y las clases de C ++ proporcionan toda la abstracción necesaria para ocultar el MPI interno y la administración de memoria.
    talonmies

    @AronAhmadia: BoxLib no puede manejar la interpolación lineal por partes con los límites cambiantes de Dirichlet en la Multigrid geométrica centrada en la celda. El pensamiento lo agregaría como un punto interesante.
    Gaurav Saxena

    2

    No especificó estructurado o no estructurado.

    Echa un vistazo a Paramesh, Pyramid, p4est, Dendro, Samrai y Chombo.

    Por cierto, la pirámide no hace engrosamiento.


    1
    Buena atrapada; He editado la pregunta. ¿Podría comentar qué tan bien se ajustan estas bibliotecas a mis criterios?
    David Ketcheson el
    Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
    Licensed under cc by-sa 3.0 with attribution required.