Taxonomia dos pré-condicionantes da ILU


8

Aprendi que para o solucionador BiCGStab para sistemas lineares esparsos, é quase sempre necessário usar um pré-condicionador. Eu já percebi que escolher um bom depende do problema.

Navegando na web, descobri que existem muitos pré-condicionadores baseados em ILU (ILUT, MILU, etc.) Foi aqui que fiquei confuso.

Fiquei imaginando se alguém pode explicar brevemente a taxonomia dos pré-condicionantes da ILU, fornecer algumas fontes de literatura para determinadas e quais são adequadas para o BiCGStab.

A configuração em que estou trabalhando é CFD, e o código é baseado na discretização de volume finito não estruturado. Provavelmente diferentes pré-condicionantes serão necessários para a equação de momento e equações de transporte para escalares de turbulência.

Respostas:


9

Um pré-condicionador, digamos M, é uma aproximação na matriz do sistema, digamos A, que transforma o problema em outro problema com melhor espectro de autovalores. Um pré-condicionador perfeito seria inverso de A ie inv (M) = A.

Infelizmente, esse inverso normalmente não está disponível, é complicado demais para calcular, requer mais espaço para armazenar devido aos preenchimentos introduzidos durante a fatoração e também pode sofrer erros de arredondamento. Portanto, um pré-condicionador deve ser fácil de calcular e aplicar, mas eficaz.

Além dos pré-condicionadores básicos como Jacobi ou Gauss-Seidel (ou SOR), um dos pré-condicionadores mais freqüentes é o ILU (IC em problemas simétricos - você está trabalhando em CFD para sistemas ou não simétricos)

A seleção do pré-condicionador normalmente depende do seu problema. A ILU possui muitas variantes, como ILUT, ILUS, MILU etc. Você pode consultar a literatura que adicionei no final. Para problemas com dificuldade leve, a ILU (0) pode ser usada, mas à medida que os problemas ficam mais difíceis, ou seja, o número de Reynolds está aumentando mais preenchimentos (por exemplo, ILU (1)) com estratégias de limiar (ILUT). O problema é que os usos avançados da ILU requerem mais memória e a determinação do padrão de escarsidade, que agora é diferente da matriz do sistema. Nesse caso, você deve calcular o padrão de espartisidade simbolicamente primeiro e numericamente depois.

Existem várias idéias para reduzir o trabalho de computação,

  • uso de pré-condicionadores com atraso nos quais você evita recalcular o pré-condicionador, mesmo se o sistema linear variar.
  • uso do LU-SGS como pré-condicionador que pode ser implementado eficientemente com algoritmos de divisão de fluxo.
  • uso de métodos sem matriz - o que eu preferia no meu trabalho de doutorado. Os solucionadores de Newton-Krylov, onde o jacobiano não é necessário, esperam um pré-condicionador, que normalmente é calculado com uma aproximação de ordem baixa e provavelmente com algoritmos baseados em cores (mais difícil em problemas não estruturados).
  • uso de apenas operadores de difusão como Laplacian e evitando termos convectivos (não eficiente na redução do número de iterações)
  • multigrid, onde você usa um simples mais suave como w-Jacobi ou SOR em uma hierarquia de grade. para problemas não estruturados, você deve usar o multigrid algébrico (AMG) em vez de geométrico.
  • e muitos outros (multiplique o número de minhas entradas por 10) ..

Como o problema não é simétrico, existem principalmente dois solucionadores para usar: GMRES ou BiCGStab. (QMR ou TFQMR são outra alternativa, mas acredito que seu desempenho esteja abaixo desses dois). O GMRES normalmente é um solucionador melhor se você ainda não tiver um problema de armazenamento devido aos vetores armazenados, é necessário reiniciar - esse é um problema, pois o pré-condicionador é ruim ou você tem um DOF muito grande. O BiCGStab requer apenas quatro produtos Matrix-Vector, bons para grandes problemas, mas normalmente inferiores ao GMRES. (Preferi o GMRES, mas gosto muito do BiCGStab!)

Todo esse problema pré-condicionador e linear do solucionador é muito complexo. Eu posso sugerir alguns livros para ler. Seu ponto de partida deve ser modelos para a solução de sistemas lineares. Este é um livro grátis. Smoothers, tanto como solucionadores independentes quanto como pré-condicionadores de solucionadores de Krylov, são explicados neste livro. Você também pode consultar os "Métodos iterativos para sistemas lineares esparsos" de Yousef Saad. É definitivo na biblioteca da sua instituição. A primeira edição também está disponível aqui .

Antes de concluir, recomendo que você analise estruturas como Petsc , Trilinos ou mesmo Hypre e também os arquivos fornecidos por 1 . Eles fornecem pré-condicionadores com alguma programação. Na verdade, existem mais livros para oferecer, mas também dê uma olhada nas "Técnicas e aplicações de pré-condicionamento de matriz de Ke Chen". Os códigos do Matlab estão disponíveis com o livro.

Boa sorte em sua jornada, você precisará dela.


Muito obrigado! Eu tenho os dois livros e ainda estou cavando - esse é um tópico realmente interessante!
Johntra Volta

2

O livro de Y. Saad também é uma das referências padrão para solucionadores e pré-condicionantes.


Compreendo agora que ele é um dos heróis dos métodos espaciais de Krylov. Eu provavelmente o mataria com perguntas se ele fosse meu conselheiro.
Johntra Volta
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.