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, 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, despejo da matriz, registro | 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; o pré-condicionamento AMG é adequado a problemas complexos de grande escala. O AMG está disponível como implementação baseada em Trilinos-ML e como SA-AMG integrado ao HEC-MW; escolha de acordo com a configuração de compilação. |
| 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 (Trilinos-ML) estão disponíveis em compilações vinculadas às bibliotecas correspondentes. AMG (SA-AMG) está disponível em compilações com LAPACK habilitado. |
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, é possível alternar para um método iterativo alternativo se CG divergir ou falhar. Essa função é um mecanismo de contingência 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.
CG, BiCGSTAB, GPBiCG e PipeCG atualizam o vetor de resíduo por recorrência. Com o avanço das iterações, os erros de arredondamento se acumulam e o resíduo atualizado recursivamente pode se afastar do resíduo verdadeiro. Para evitar isso, o vetor de resíduo é recalculado periodicamente a partir do lado direito e do produto matriz-vetor. RECOMPUTE_RESIDUAL especifica esse intervalo. Um intervalo maior reduz o número de produtos matriz-vetor, mas aumenta o risco de o resíduo atualizado por recorrência se afastar do resíduo verdadeiro e de uma solução que ainda não convergiu ser considerada convergida. Por outro lado, um intervalo curto demais não só aumenta o número de produtos matriz-vetor, como também pode perturbar a relação entre o resíduo e os vetores auxiliares mantida pela recorrência e piorar a própria convergência. O valor padrão de cada método equilibra esses efeitos; se ele for alterado, verifique o histórico de convergência e o resíduo relativo final.
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 (Trilinos-ML) | Multigrid algébrico usando a biblioteca externa Trilinos-ML. | Candidato para problemas de grande escala ou dominados por componentes hierárquicos do erro. |
| AMG (SA-AMG) | Multigrid algébrico de agregação suavizada integrado ao HEC-MW. | Mesmo âmbito; candidato para usar AMG sem adicionar uma biblioteca externa. |
| SAINV | Inversa aproximada esparsa. | Opção especializada de pré-condicionamento para problemas de contato ou ambientes de memória distribuída. |
| RIF | Fatoração incompleta robusta. | 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.
O AMG (multigrid algébrico) tem duas implementações: uma usa a biblioteca externa Trilinos-ML e a outra é o SA-AMG integrado ao HEC-MW. Ambas são independentes e diferem quanto à configuração de compilação necessária e às opções disponíveis.
O AMG com Trilinos-ML exige que o ML esteja habilitado durante a compilação. É possível especificar o suavizador, o ciclo multigrid, o método de engrossamento e outras configurações; consulte a referência de palavras-chave para os valores detalhados.
O SA-AMG é um pré-condicionador multigrid algébrico de agregação suavizada e não requer Trilinos-ML. No entanto, usa LAPACK internamente, portanto exige uma compilação com LAPACK habilitado; se for selecionado em uma compilação sem LAPACK, o programa termina antes de iniciar a análise. Para a solução na malha grossa, MUMPS pode ser usado em compilações com MUMPS habilitado; caso contrário, é usado o método direto denso integrado.
O SA-AMG destina-se principalmente a sistemas simétricos definidos positivos (CG), mas também oferece suporte a sistemas reduzidos não simétricos decorrentes de contato com atrito (BiCGSTAB, GMRES etc.). Ele oferece suporte a 1 (condução de calor), 2 (plano), 3 (sólido) e 6 (casca) GDL por nó, mas não a matrizes em que o número de GDL varia entre os nós. É possível especificar o solver da malha grossa, o ciclo multigrid, o grau do suavizador e outras opções, mas os valores padrão podem ser usados em análises padrão. Consulte a referência de palavras-chave para os valores e a sintaxe. Em compilações com GPU (OpenACC) habilitada, a fase de aplicação do pré-condicionador é executada na GPU.
Quando o SAINV é usado em uma análise paralela que contém 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. |
| 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, que antes podia ser selecionado, foi removido; entradas com MPCMETHOD=2 geram um aviso e são processadas de acordo com esses padrões.
Na eliminação explícita de GDL, a massa concentrada usada na análise modal e na análise dinâmica pelo método explícito também é reduzida pela mesma transformação aplicada à matriz de rigidez. Como a matriz de massa reduzida em geral não é diagonal, as somas de suas linhas são usadas como massa concentrada. Nas restrições de ligação ou interpolação em que a soma dos coeficientes da equação de restrição é 1, a massa do grau de liberdade escravo é distribuída entre os graus de liberdade mestres proporcionalmente aos coeficientes.
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 embutimento.
Funções auxiliares¶
A estimativa do número de condição, os despejos de matriz e o registro 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. |
| Despejo 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 despejo 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. |
LOGLEVEL | Gera informações de diagnóstico, como a construção da hierarquia dos pré-condicionadores AMG. | É especificado independentemente de ITERLOG e TIMELOG. Valores maiores aumentam a quantidade de saída. |
O despejo 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¶
- Solvers lineares (teoria) — Princípios matemáticos dos métodos iterativos e do pré-condicionamento.
- Iteração não linear e integração no tempo — Estrutura de iterações de Newton, iterações de contato e integração no tempo que invoca o solver linear.
- Particionamento de malha — Análise paralela MPI e configurações da profundidade de sobreposição.
- Contato e embutimento — Seleção dos tipos e algoritmos de contato.
- !SOLVER — Valores e sintaxe dos parâmetros do solver e do pré-condicionador.
- Dependências obrigatórias e opcionais — Dependências como
MUMPS,MKL(Intel PARDISO), Trilinos-ML e LAPACK.