Ir para o conteúdo

Solver e pré-condicionamento

Os solvers lineares do FrontISTR são configurados escolhendo-se um método direto ou iterativo; os métodos iterativos são combinados com um pré-condicionador para resolver as equações lineares. O método de tratamento de MPC e a eliminação dos graus de liberdade de contato são opções auxiliares que determinam como é tratado um sistema linear que contém restrições multiponto ou de contato.

Visão geral das funções

As configurações do solver e do pré-condicionamento consistem nas escolhas a seguir. Primeiro, selecione um método iterativo ou direto como solver linear. Um pré-condicionador é combinado somente com um método iterativo.

Categoria Principais opções Função
Métodos iterativos CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN Resolvem matrizes esparsas de grande porte com uso de memória relativamente eficiente.
Pré-condicionadores para métodos iterativos SSOR, escalonamento diagonal, BILU, AMG, SAINV, RIF Melhoram a convergência dos métodos iterativos. Não são usados com métodos diretos.
Métodos diretos MUMPS, MKL Resolvem equações lineares de forma robusta por fatoração da matriz.
Métodos de tratamento de MPC Método da penalidade, método MPC-CG, eliminação explícita de GDL Incorporam restrições multiponto ao sistema linear.
Eliminação de GDL de contato Automática, sempre habilitada Controla o tratamento dos graus de liberdade de contato adicionados pelo contato SLAGRANGE.
Funções auxiliares Estimativa do número de condição, dump da matriz, logging Dão suporte à depuração, avaliação da convergência e avaliação de desempenho.

Na execução paralela, o paralelismo MPI baseado em decomposição de domínio pode ser combinado com paralelismo por threads OpenMP. Métodos iterativos são a escolha padrão para análises paralelas de grande escala, enquanto métodos diretos são usados quando as bibliotecas necessárias estão vinculadas e é necessária uma solução mais robusta.

Escolha do solver e do pré-condicionador

Primeiro, decida se usará um método iterativo ou direto. Se selecionar um método iterativo, escolha em seguida um pré-condicionador.

Fator de decisão Abordagem recomendada
Tamanho do problema Métodos diretos são estáveis e fáceis de usar em problemas pequenos a médios. Métodos iterativos são mais eficientes em memória para problemas grandes.
Simetria da matriz Considere CG para problemas simétricos definidos positivos. Para problemas não simétricos, considere BiCGSTAB, GMRES, GPBiCG ou métodos semelhantes.
Ambiente paralelo Em paralelismo MPI, combine um método iterativo com decomposição de domínio. Para pré-condicionamento em paralelismo OpenMP, considere uma implementação SSOR multicolor.
Pré-condicionador (ao usar método iterativo) Tente primeiro o SSOR padrão e depois considere AMG. O SSOR tem baixo custo computacional quando a convergência é boa; AMG é adequado a problemas complexos de grande escala.
Contato e MPC Em análises que contêm contato ou restrições multiponto, a escolha do método de tratamento de MPC e da eliminação de GDL de contato afeta a convergência e a robustez.
Bibliotecas externas MUMPS, MKL e AMG estão disponíveis em builds vinculados às bibliotecas correspondentes.

Para análises padrão, a tolerância de convergência, o número máximo de iterações e o coeficiente de correção diagonal do pré-condicionador usados por padrão geralmente são suficientes. Somente quando a convergência for lenta ou a solução divergir, reavalie, nesta ordem, o método iterativo, o pré-condicionador, o método de tratamento de MPC e a eliminação de GDL de contato. Consulte a referência da palavra-chave !SOLVER para os valores e a sintaxe dos parâmetros.

Métodos iterativos

Os métodos iterativos resolvem sistemas esparsos de grande porte atualizando repetidamente a solução por meio de produtos matriz-vetor e pré-condicionamento. O FrontISTR fornece os seguintes métodos iterativos.

Método iterativo Aplicação típica Observações
CG Problemas simétricos definidos positivos Candidato padrão para análises estruturais e de condução de calor.
BiCGSTAB Problemas não simétricos Candidato quando contato ou efeitos acoplados produzem forte não simetria.
GMRES Problemas não simétricos Usado com um tamanho especificado do subespaço de Krylov.
GPBiCG Problemas não simétricos Usado como método melhorado da família BiCGSTAB.
GMRESR Problemas não simétricos, aplicações avançadas Opção que usa GMRES de forma aninhada.
GMRESREN Problemas não simétricos, aplicações avançadas Variante recursiva da família GMRESR.

CG pressupõe que a matriz seja simétrica definida positiva. Se contato com atrito, tratamento não simétrico de restrições, efeitos de acoplamento ou fatores semelhantes introduzirem forte não simetria, considere BiCGSTAB, GMRES, GPBiCG ou outro solver não simétrico. No GMRES, aumentar o tamanho do subespaço de Krylov pode melhorar a convergência, mas também aumenta o uso de memória.

Quando METHOD2 é especificado, o FrontISTR pode alternar para um método iterativo alternativo se CG divergir ou sofrer breakdown. Essa função é um fallback para casos em que CG é o solver principal; o método alternativo usa as mesmas demais configurações e linhas de dados do solver principal.

Pré-condicionamento

O pré-condicionamento transforma a matriz de coeficientes para melhorar a convergência de um método iterativo e é aplicado somente quando um método iterativo é selecionado. Métodos diretos não usam pré-condicionamento. Mesmo para o mesmo método iterativo, a escolha do pré-condicionador pode alterar substancialmente o número de iterações e o tempo de cálculo necessários para a convergência.

Pré-condicionador Características Aplicação típica
SSOR Pré-condicionador padrão; suporta ordenação multicolor. Primeiro candidato a testar; amplamente usado em análise estrutural.
Escalonamento diagonal Pré-condicionador leve que usa entradas diagonais. Quando se prefere baixo custo computacional.
BILU Fatoração LU incompleta em blocos. Candidato para problemas difíceis de convergir com SSOR.
AMG Multigrid algébrico usando Trilinos-ML. Candidato para problemas de grande escala ou dominados por componentes de erro hierárquicos.
SAINV Sparse Approximate Inverse. Opção especializada de pré-condicionamento para problemas de contato ou ambientes de memória distribuída.
RIF Robust Incomplete Factorization. Outra opção de fatoração incompleta.

SSOR é a escolha padrão, e uma versão com ordenação multicolor é usada em paralelismo OpenMP. O escalonamento diagonal é leve, embora sua melhoria de convergência dependa do problema. BILU é implementado como uma fatoração LU incompleta em blocos e também suporta matrizes com números gerais de graus de liberdade. Para a família BILU, há um caminho que aumenta automaticamente o coeficiente de correção diagonal SIGMA_DIAG e tenta novamente quando um método iterativo diverge; consulte a referência de palavras-chave para saber como especificar o valor.

AMG usa Trilinos-ML; portanto, ML deve estar habilitado no momento da compilação. É possível especificar smoothers, ciclos multigrid, métodos de coarsening e outras configurações, mas consulte a referência de palavras-chave para os valores detalhados. Quando SAINV é usado em uma análise paralela que contém restrições de contato ou MPC, a profundidade de sobreposição usada na decomposição de domínio pode afetar a convergência.

Métodos diretos

Métodos diretos resolvem equações lineares fatorando a matriz de coeficientes. Como não dependem de um número de iterações, são robustos e podem ser uma escolha estável para análises que contêm contato ou condições de restrição. Entretanto, seu consumo de memória aumenta com o tamanho do problema.

Método direto Ambiente paralelo Aplicação
MUMPS Paralelismo MPI Resolve matrizes esparsas por método direto em ambientes de memória distribuída.
MKL Intel MKL / OpenMP Solver direto baseado no Intel MKL. Internamente, usa Intel PARDISO. Com vários processos MPI, usa o caminho Cluster MKL. DIRECTmkl é um alias de MKL.

Métodos diretos podem ser usados tanto para matrizes simétricas quanto não simétricas. MUMPS e MKL exigem que as bibliotecas correspondentes estejam vinculadas no momento da compilação. Não podem ser usados em ambientes sem essas bibliotecas; portanto, consulte o guia de compilação para as dependências necessárias e opções do CMake.

O FrontISTR também contém um caminho de solver direto interno que não usa biblioteca externa, mas, para análises comuns que exigem um método direto, normalmente deve-se considerar primeiro MUMPS ou MKL.

O pré-condicionamento não é aplicado a métodos diretos. Mesmo que um pré-condicionador seja especificado em !SOLVER, ele não é referenciado no caminho do solver direto.

Métodos de tratamento de MPC

O método de tratamento de MPC determina como os graus de liberdade conectados por restrições multiponto são incorporados às equações lineares. Mesmo com as mesmas equações de restrição nos dados de entrada, o método de tratamento altera as propriedades e o comportamento de convergência da matriz de coeficientes.

Método de tratamento de MPC Posicionamento Uso padrão
Método da penalidade Satisfaz aproximadamente as restrições adicionando grandes termos de rigidez às equações de restrição. Padrão para métodos diretos.
Método MPC-CG Método legado que trata produtos matriz-vetor contendo restrições dentro do solver iterativo. Obsoleto.
Eliminação explícita de GDL Elimina os graus de liberdade restringidos e resolve o sistema linear reduzido. Padrão para métodos iterativos.

O método da penalidade é o padrão para métodos diretos, enquanto a eliminação explícita de GDL é o padrão para métodos iterativos. O método MPC-CG é uma opção de compatibilidade legada e não é recomendado para novas análises; normalmente, use a eliminação explícita de GDL ou o tratamento padrão do método direto selecionado.

Em !SOLVER, o método de tratamento de MPC pode ser especificado explicitamente por MPCMETHOD. Consulte a referência de palavras-chave para o significado e a sintaxe de cada valor.

Eliminação de GDL de contato

A eliminação de GDL de contato reduz os graus de liberdade de contato adicionais introduzidos pelo contato SLAGRANGE antes de passar o sistema ao solver linear. Eliminar esses graus de liberdade de contato pode melhorar as propriedades do sistema linear tratado por um método iterativo.

No modo automático padrão, a eliminação de GDL de contato é habilitada para métodos iterativos e desabilitada para métodos diretos. Para métodos diretos, há um caminho que resolve diretamente o sistema ampliado que contém os graus de liberdade de contato.

Quando CONTACT_ELIM é especificado explicitamente, a eliminação de GDL de contato também pode ser realizada ao usar um método direto. Para as opções de tipo de contato, par de contato e algoritmo de contato no lado da entrada, consulte a página Contato e incorporação.

Funções auxiliares

A estimativa do número de condição, dumps de matriz e logging podem ser usados para investigar a convergência e o desempenho do solver. Essas funções são desnecessárias em análises normais e são habilitadas principalmente para depuração ou avaliação de desempenho.

Função Finalidade Observações
Estimativa do número de condição Gera um indicador do número de condição para CG e GMRES. Disponível em builds com LAPACK habilitado.
Dump da matriz Salva a matriz e o lado direito passados ao solver. Suporta os formatos Matrix Market, CSR e BSR.
DUMPEXIT Encerra a análise após o dump da matriz. Usado quando somente a matriz é necessária para verificação externa.
ITERLOG Gera o histórico de convergência de um método iterativo. Usado para inspecionar a tendência do resíduo.
TIMELOG Gera o tempo de cálculo do solver. VERBOSE gera uma decomposição mais detalhada.
STEPLOG Gera informações dos passos. Usado para inspecionar o procedimento de análise.

O dump da matriz permite inspecionar com ferramentas externas a matriz de coeficientes montada pela análise. Quando DUMPEXIT está habilitado, a análise termina depois que a matriz e o lado direito são salvos. A estimativa do número de condição é uma função experimental disponível com CG e GMRES e pode ser usada para diagnosticar o comportamento de convergência.

Tópicos relacionados