Meu sistema é um problema simétrico de FE com multiplicadores de lagrange (por exemplo, fluxo incompressível de Stokes):
onde é o caso típico (eu até me certifiquei de que as equações sejam numeradas para que os multiplicadores de Lagrange apareçam por último). O sistema é bastante grande (+ 100k linhas).
Depois de ler a resposta a essa pergunta , tive a impressão de que existem pré-condicionadores adequados que podem ser usados para problemas mistos de FE.
Usando o PETSc, eu consegui resolver o sistema com MINRES ( -ksp_type minres -pc_type none -mat_type sbaij
), embora a precisão não seja ótima (causando várias iterações de Newton para um problema linear). Nenhuma outra combinação de pré-condicionador e ksp-solver parece funcionar.
Existe alguma combinação de sinalizadores para o PETSc que resolverá esse sistema mais rapidamente do que com apenas MINRES?
fonte
Respostas:
Atenção
A solução de problemas no ponto de sela envolve muito mais opções do que problemas definidos, e há muito mais coisas que podem dar errado. Use monitores para todos os níveis para depurar a convergência, para garantir que os espaços nulos sejam manipulados corretamente quando os operadores auxiliares forem singulares (geralmente apenas um espaço nulo constante) e para garantir que os pré-condicionadores sejam estáveis. Essas técnicas são discutidas nesta pergunta .
Solução de problemas do ponto de sela
Você pode começar com a seção sobre resolução de matrizes de bloco no Manual do Usuário . Para problemas do tipo Stokes, você pode criar um pré-condicionador de complemento Schur usando o PCFIELDSPLIT .
Isso pode ser combinado com um pré-condicionador do comutador dos mínimos quadrados para o complemento Schur (
-fieldsplit_1_pc_type lsc
). É comum-fieldsplit_1_ksp_type preonly
e deixa a iteração externa fazer a maior parte do trabalho. As variantes triangulares de bloco são populares quando usadas dessa maneira, por exemplo-pc_fieldsplit_schur_fact_type upper
,.Você pode encontrar mais detalhes sobre a composição do solucionador usando as opções de opções em nosso artigo (pré-impressão) , que também discute a comutação multigrid com a decomposição do bloco (colocando o campo dividido dentro da multigrid).
Para muitos problemas, convém personalizar a decomposição de campo e os pré-condicionadores de complemento Schur, muitos dos quais envolvem operadores auxiliares. Por exemplo, o método "PCD) de Elman et al requer discretização de um operador auxiliar no espaço de pressão. Veja exemplos de PCSHELL e a seção do manual do usuário para essa finalidade.
fonte
Você deseja um pré-condicionador e a construção de um é discutida aqui: http://www.math.tamu.edu/~bangerth/videos.676.38.html
fonte