As apresentações multigrid normalmente usam uma grade retangular. A interpolação de valores é então direta: basta interpolar linearmente na aresta entre dois nós adjacentes da grade grossa para encontrar o valor do nó da grade fina nessa aresta.
Para um aplicativo FEM, tenho uma grade retangular "topologicamente", para que as conexões dos nós sejam como uma grade retangular. No entanto, os nós não estão perfeitamente alinhados em uma grade, mas podem percorrer pequenas distâncias para melhor ajustar a geometria, mantendo as conexões como em uma grade retangular perfeita.
A malha é mais ou menos assim: exemplo de malha . Você vê: As conexões são "retangulares regulares", mas as posições dos nós não.
Posso imaginar vários esquemas de interpolação geométrica "razoáveis" para esse cenário.
A questão geral é: o multigrid exige uma grade retangular perfeitamente alinhada ou também funcionará com a situação descrita acima, desde que a interpolação seja "boa"? Ou é melhor usar multigrid algébrico nesse caso? (O que eu não prefiro, pois não é tão intuitivo quanto o multigrid geométrico.)
Respostas:
O Multigrid não precisa de uma grade uniforme cartesiana (retangular). O que é necessário é que você possa definir um nível fino e um grosso (possivelmente recursivamente, se desejar passar de um esquema de dois níveis para um multinível) e que você possa definir operadores de interpolação entre esses níveis. A maneira mais fácil de explicar isso é se você realmente possui uma grade cartesiana, mas na verdade pode começar com qualquer malha grossa, refiná-la uma vez e assim: você tem uma malha mais fina.
Em outras palavras, é mais fácil pensar em malhas multigrid-adequadas não como uma malha fina e como encontrar malhas mais grossas, mas para começar com uma malha grossa a partir da qual você obtém os níveis mais finos por refinamento uniforme (ou seja, todo quadrilátero é subdividida em quatro menores). Como o refinamento uniforme é sempre possível, isso rapidamente fornece uma hierarquia. Isso se opõe ao engrossamento, o que nem sempre é possível se você receber apenas uma malha específica e, portanto, torna a definição de uma hierarquia de malha muito mais complicada. (É por isso que as pessoas inventam métodos multigrid algébricos para definir os níveis aproximados com base apenas na matriz, sem pensar na malha subjacente a partir da qual ela foi criada.)
fonte
Digamos que você tenha a seguinte grade composta por elementos retangulares:
Agora, se você executar sua interpolação assumindo uma grade retangular estruturada normal, estará apresentando erros associados a essa interpolação imprecisa. Em outras palavras, quando você restringe seu vetor residual e quando prolonga seu vetor de erro, haverá erros na interpolação.
Agora, se sua grade está "próxima" de ser uma grade cartesiana estruturada normal, isso pode funcionar, pelo menos a princípio, mas eu suspeito que uma das duas coisas acontecerá dependendo de quão longe você está da grade retangular:
1) Você pode achar que o multigrid começa a convergir primeiro. Afinal, inicialmente, seu erro é grande e sua interpolação "aproximada" realmente significa apenas que alguns nós estão um pouco super-representados, enquanto outros estão um pouco sub-representados. No entanto, você pode achar que a convergência estagna à medida que a solução se torna mais precisa e os erros de interpolação se tornam mais importantes.
2) Outra possibilidade é que o multigrid acabe convergindo, mas não tão rápido quanto deveria se você tivesse usado a interpolação correta.
Basicamente, desligando sua interpolação, você está ponderando a importância de certos nós de maneira imprecisa. Por exemplo, em 2D, se você estiver ponderando um determinado nó como:
quando na verdade, porque sua grade não é exatamente cartesiana, deve ser:
então isso resultará em algum erro. Se esse erro impede a convegência provavelmente dependerá da distância da sua grade de ser cartesiana.
Embora a AMG seja mais difícil de entender / implementar, parece que é o método correto para sua grade. A aplicação de multigrid geométrica a uma grade retangular "aproximada" pode funcionar, mas eu acho que é, na melhor das hipóteses, uma solução de band-aid. Espero que isto ajude.
Atualização : Eu acho que pode ter havido alguma confusão na minha resposta. Não estou dizendo que o multigrid geométrico funcionará apenas com malhas cartesianas, mas sim que é fácil definir interpolação (e, portanto, restrição) em malhas cartesianas, enquanto que em malhas não estruturadas isso pode ser difícil. Por exemplo, considere o caso de até mesmo um simples domínio 2D com uma malha triangular. É fácil refinar essa malha - pelo menos conceitualmente - mas como você definiria um operador de interpolação entre a malha grossa e fina? Eu prefiro o AMG simplesmente porque ele funciona mais como um solucionador de "caixa preta", ou seja, não precisa de informações sobre a malha subjacente, no entanto, essa é apenas a minha pessoa tendenciosa / peculiar. A multigrid geométrica pode funcionar desde que você possa fornecer operadores de interpolação precisos.
fonte