Existe uma biblioteca de uso geral para refinamento de malha adaptável à grade estruturada?

18

Refinamento de malha adaptável (AMR) é uma técnica comum para lidar com o problema de escalas espaciais muito variadas na solução numérica de PDEs. Quais bibliotecas de uso geral existem para AMR em grades estruturadas? Idealmente, eu gostaria de algo no espírito do PETSc, onde a biblioteca lida apenas com as malhas adaptativas e eu forneço a física e a discretização (diferença finita / volume / elemento).

A biblioteca ideal seria

  • Modular : não determina como eu escrevo meu código ou muito das minhas estruturas de dados
  • Geral : não se importa com o tipo de discretização que estou usando
  • Eficiente : não gera muita sobrecarga
  • Paralela e altamente escalável

As bibliotecas que se encaixam apenas em um subconjunto desses critérios ainda seriam interessantes.

Adendo : Estou ciente da extensa lista de pacotes AMR de Donna Calhoun , mas não sei qual deles (se houver) se encaixa nos critérios acima. Portanto, estou interessado principalmente em ouvir pessoas que tenham experiência real com um ou (melhor ainda) mais pacotes, sobre como eles se comparam nesses termos.

David Ketcheson
fonte
2
+1, estou curioso para saber qual software AMR também existe e preferiria satisfazer os critérios mencionados acima.
Geoff Oxberry
Apenas pensei em mencionar que a versão mais recente do Chombo acabou de ser lançada e (é reivindicada) que deve ser mais fácil integrar em um pacote maior ( Notas de versão ). Não é uma revisão importante, portanto, é provável que algumas coisas ainda não atendam a todos os seus critérios.
21412 Jeremy Kozdon

Respostas:

14

Uma biblioteca a considerar é o BoxLib . Suas principais características (do site) são:

  • Suporte para AMR estruturado em bloco com sub-ciclismo opcional no tempo
  • Suporte para dados centralizados em célula, centralizados em face e centralizados em nós
  • Suporte para soluções hiperbólicas, parabólicas e elípticas na estrutura hierárquica da grade
  • Versões C ++ e Fortran90
  • Suporta modelo de programação híbrido com MPI e OpenMP
  • Base de aplicações maduras em combustão, astrofísica, cosmologia e meios porosos
  • Dimensionamento demonstrado para mais de 200.000 processadores
  • Disponível gratuitamente para o usuário interessado
  • Há também um wrapper Python (escrito por mim) para a versão Fortran incluída (embora seja bastante jovem).

    Matthew Emmett
    fonte
    9

    Você também deve olhar para libMesh . É direcionado a métodos de elementos finitos, mas, além disso, acho que verifica a maioria das suas caixas. Ao contrário do BoxLib, é uma biblioteca de tipos de elementos mistos totalmente não estruturada, que deve permanecer compatível com tets, pirâmides, prismas e hexaedra na mesma malha. Ele também possui um dos maiores conjuntos de regras de integração para funções de base polinomial de alta ordem. Ele foi configurado para permitir que você chame diretamente o PETSc (e algumas outras bibliotecas), para que você tenha a mesma escalabilidade do solucionador que o PETSc.

    Certamente, existe uma maneira libMesh de fazer as coisas, mas também existe uma maneira PETSc de fazer as coisas. Então espero que isso não o assuste.

    Bill Barth
    fonte
    4

    Eu tentaria o SAMRAI . Conheço pelo menos um código que o utiliza com êxito - IBAMR , um código de Método de Fronteira Imersa para Interação Fluido-Estrutura com AMR.

    John Travolta
    fonte
    Obrigado Johntra (e bem-vindo ao scicomp)! Você conhece as diferenças salientes entre o SAMRAI e o BoxLib? Além disso, você pode usar links embutidos colocando o texto do link em [] e o destino em ()
    Aron Ahmadia
    Infelizmente, eu não - por uma questão de fatos, acabei de ouvir falar sobre isso (BoxLib) pela primeira vez. Essa é exatamente a razão pela qual decidi me juntar - para aprender novas idéias discutindo informalmente com vocês - obrigado.
    Johntra Volta 27/02/12
    Eu segundo SAMRAI, é uma estrutura de propósito geral muito útil para AMR. Também gosto muito do design híbrido C ++ / Fortran a favor do autor. Os kernels computacionais podem ser escritos no Fortran, como deveriam ser, e as classes C ++ fornecem toda a abstração necessária para ocultar o MPI interno e o gerenciamento de memória.
    31412 talonmies
    @AronAhmadia: O BoxLib não pode lidar com interpolação linear por partes com a alteração dos limites do Dirichlet no Multigrid geométrico centrado em células. O pensamento acrescentaria isso como um ponto interessante.
    Gaurav Saxena
    2

    Você não especificou estruturado ou não estruturado.

    Dê uma olhada em Paramesh, Pyramid, p4est, Dendro, Samrai e Chombo.

    Btw Pyramid não faz grosseiro.

    stali
    fonte
    1
    Boa pegada; Eu editei a pergunta. Você poderia comentar como essas bibliotecas se encaixam nos meus critérios?
    David Ketcheson