Quais novas estruturas de dados são usadas no MEF adaptável?

9

Muitas bibliotecas adaptáveis ​​do FEM usam estruturas de dados de malha mais avançadas para lidar com a adição / remoção de nós, arestas, triângulos, tetraedros, etc. Por exemplo, a biblioteca p4est usa estruturas de dados octree para refinamento de malha adaptável; você normalmente não encontra octrees usados ​​para cálculos em uma malha estática.

O que muda no lado da álgebra linear para o MEF adaptativo?

A maneira mais direta que posso conceber seria reconstruir completamente todas as matrizes do sistema sempre que a malha for refinada ou grossa. Se a adaptação da malha for uma operação pouco frequente, as despesas com isso serão finalmente amortizadas pelo restante do cálculo. Pode-se facilmente aproveitar o software de álgebra linear esparsa existente (PETSc, Trilinos, etc.) com essa abordagem.

Esse método sem corte é o mais usado ou existem bibliotecas que conseguem reutilizar ou modificar a matriz antiga durante o refinamento? Afinal, a maior parte da malha e as matrizes correspondentes permanecem inalteradas durante uma adaptação da malha.

Daniel Shapero
fonte

Respostas:

6

Sim, a abordagem mais comum é reconstruir. As estruturas de dados que são modificáveis ​​no local tendem a ser menos eficientes uma vez configuradas, e a realocação é realmente muito barata em comparação com a remontagem (por exemplo, devido à não linearidade), por isso é realmente uma boa solução. Fora de nichos relativamente raros com soluções muito fáceis, as tentativas de usar estruturas de dados dinâmicas nos solucionadores apenas tornarão seu aplicativo mais lento. No entanto, é uma percepção comum entre aqueles que esquecem de medir ou modelar o desempenho.

Jed Brown
fonte
3

Como Jed já disse, a reutilização de componentes de álgebra linear, como matrizes e vetores, geralmente não é realizada. Também não é necessário: a instalação desses componentes é comparativamente muito barata em relação ao custo da solução de sistemas lineares.

Se você procurar coisas que mudam quando passa de malhas estáticas para malhas adaptáveis ​​e refinadas, o maior obstáculo é lidar com nós suspensos. Em deal.II , isso é tratado pela classe ConstraintMatrix , que leva várias 1000 linhas de código. Você pode encontrar algumas descrições do que essa classe faz no artigo, por mim e por Oliver Kayser-Herold ( link para a minha página de publicações ). Nenhum outro componente (exceto manipular a malha, é claro) exigiu tanta adaptação ao passar de malhas fixas para adaptativas.

Wolfgang Bangerth
fonte