Interessante que essa pergunta tenha sido ontem, pois acabei de concluir uma implementação ontem que faz isso.
Meu Histórico
Apenas para começar, deixe-me saber que, embora minha formação acadêmica seja de computação científica, todo o trabalho que fiz desde a graduação, incluindo meu doutorado atual. trabalho, tem sido em eletromagnetismo computacional. Então, acho que nossos antecedentes são um pouco parecidos, já que você também parece estar olhando para a física (com base no seu perfil).
FGMRES
Primeiro de tudo, o que você está procurando, como Guido Kanschat já mencionou em um comentário, é chamado GMRES Flexível ou FGMRES. A referência, incluindo o pseudocódigo, está em [1]. Embora eu às vezes ache um pouco difícil ler artigos numéricos do SIAM, [1] (e a maioria dos outros trabalhos de Saad, incluindo o brilhante [B1], aparentemente legalmente disponível gratuitamente on-line) é diferente; o artigo é uma leitura fascinante, muito claramente escrita e com alguns bons exemplos e sugestões de aplicações.
O FGMRES é fácil de implementar, principalmente se você já possui um GMRES pré-condicionado à DIREITA. Observe a palavra-chave DIREITA aqui - se você tiver um GMRES pré-condicionado à ESQUERDA, ou seja, você está acostumado a resolver MAx = Mb, precisará fazer algumas modificações. Compare [B1, algoritmo 9.4 na pág. 282] a [BI, algoritmo 9.5, pág. 284] Você também pode encontrar o FGMRES em [B1, Algoritmo 9.6, pág. 287], mas eu realmente encorajo você a ler [1], pois é curto, bem escrito e ainda possui muitos detalhes interessantes.
O que isso faz
O FGMRES basicamente permite que você troque os pré-condicionadores para cada iteração, se desejar. Uma das aplicações para isso é que você pode usar algum pré-condicionador que funcione muito bem quando você estiver longe da solução e depois mudar para outro quando chegar mais perto. [2], que não li em detalhes, parece discutir algo semelhante a isso.
No entanto, a aplicação mais interessante no meu caso foi que você poderia usar um GMRES (pré-condicionado) como pré-condicionador para o seu FGMRES. Esta é a razão por trás do nome típico para FGMRES, "GMRES interno-externo". Aqui, "externo" refere-se ao solucionador FGMRES, que (como pré-condicionador) usa um solucionador "interno".
Então, quão bom é isso na prática?
No meu caso, isso funcionou absolutamente brilhante. No circuito interno, "resolvo" uma formulação de complexidade reduzida do meu problema. Por si só, esta solução é muito imprecisa para o nosso uso, mas funciona absolutamente bem como pré-condicionador. Observe a solução "" around "" - não há necessidade de executar o solucionador interno para convergência, pois você está procurando apenas aproximações aproximadas. No meu caso, passei de 151 iterações, cada uma custando 64 segundos, para 72 iterações, cada uma custando 79 segundos (usei 5 iterações fixas no GMRES interno). Isso é uma economia total de uma hora, sem perda de precisão e muito pouco trabalho de codificação, pois já tínhamos um GMRES em funcionamento, que tornamos recursivo.
Para algumas aplicações desse material, demonstrando o desempenho potencial, consulte [3] (que realmente usa um FGMRES de três níveis, portanto FGMRES, com FGMRES como interno, com GMRES como interno) e [4], que pode ser muito aplicativo específico para o seu uso, mas contém vários casos de teste interessantes.
Referências
[1] Y. Saad, "Um algoritmo GMRES pré-condicionado flexível interno-externo", SIAM J. Sci. Comp., Vol. 14, n. 2, pp. 461–469, março de 1993. http://www-users.cs.umn.edu/~saad/PDF/umsi-91-279.pdf
[2] D.-Z. Ding, R.-S. Chen e Z. Fan, “Método GMRES flexível pré-condicionado SSOR para análise MLFMM da dispersão de objetos abertos”, Progress In Electromagnetics Research, vol. 89, pp. 339–357, 2009. http://www.jpier.org/PIER/pier89/22.08112601.pdf
[3] TF Eibert, “Alguns resultados de espalhamento calculados por técnicas de equação de superfície integral e técnicas híbridas de elementos finitos de elementos finitos, aceleradas pelo método multipolar rápido multinível”, IEEE Antennas and Propagation Magazine, vol. 49, n. 2, pp. 61–69, 2007.
[4] Ergül, T. Malas e L. Gürel, “Soluções de problemas eletromagnéticos em larga escala usando um esquema interno-externo iterativo com algoritmos multipolares rápidos multiníveis comuns e aproximados,” Progress In Electromagnetics Research, vol. 106, pp. 203–223, 2010. http://www.jpier.org/PIER/pier106/13.10061711.pdf
[B1] Y. Saad, Métodos iterativos para sistemas lineares esparsos. SIAM, 2003. http://www-users.cs.umn.edu/~saad/IterMethBook_2ndEd.pdf