Ir para o conteúdo

Solver e pré-condicionamento

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

Visão geral das funcionalidades

As definições do solver e do pré-condicionamento são constituídas pelas seguintes opções. Primeiro, selecione um método iterativo ou direto como solver linear. O pré-condicionador é combinado apenas quando é selecionado um método iterativo.

Categoria Principais opções Função
Métodos iterativos CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN Resolvem grandes matrizes esparsas com utilização de memória relativamente eficiente.
Pré-condicionadores para métodos iterativos SSOR, escalamento diagonal, BILU, AMG, SAINV, RIF Melhoram a convergência dos métodos iterativos. Não são utilizados com métodos diretos.
Métodos diretos MUMPS, MKL Resolvem equações lineares de forma robusta através da fatorização da matriz.
Métodos de tratamento de MPC Método da penalização, método MPC-CG, eliminação explícita de graus de liberdade Incorporam restrições multiponto no sistema linear.
Eliminação de graus de liberdade de contacto Automática, sempre ativada Controla o tratamento dos graus de liberdade de contacto adicionados pelo contacto SLAGRANGE.
Funções auxiliares Estimativa do número de condição, dump da matriz, registo Auxiliam a depuração, a avaliação da convergência e a avaliação do desempenho.

Na execução paralela, o paralelismo MPI baseado na decomposição de domínio pode ser combinado com o paralelismo por threads OpenMP. Os métodos iterativos são a escolha padrão para análises paralelas de grande escala, enquanto os métodos diretos são utilizados em ambientes onde as bibliotecas necessárias estão ligadas e é necessária uma resolução mais robusta.

Escolha do solver e do pré-condicionador

Primeiro, decida se pretende utilizar um método iterativo ou direto. Se selecionar um método iterativo, escolha de seguida um pré-condicionador.

Critério de decisão Abordagem recomendada
Dimensão do problema Para problemas pequenos e médios, os métodos diretos são estáveis e fáceis de utilizar. Para problemas grandes, os métodos iterativos são mais eficientes em termos de memória.
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 o pré-condicionamento em paralelismo OpenMP, considere uma implementação SSOR multicolor.
Pré-condicionador (quando se utiliza um método iterativo) Experimente primeiro o SSOR predefinido e, em seguida, considere AMG. O SSOR tem baixo custo computacional quando a convergência é boa; o AMG é adequado a problemas complexos e de grande escala.
Contacto e MPC Em análises que contenham contacto ou restrições multiponto, a escolha do método de tratamento de MPC e da eliminação de graus de liberdade de contacto afeta a convergência e a robustez.
Bibliotecas externas MUMPS, MKL e AMG estão disponíveis em compilações ligadas às bibliotecas correspondentes.

Em análises padrão, os valores predefinidos do critério de convergência, do número máximo de iterações e do coeficiente de correção diagonal do pré-condicionador são, em geral, suficientes. Apenas quando a convergência é lenta ou a solução diverge deve rever, por esta ordem, o método iterativo, o pré-condicionador, o método de tratamento de MPC e a eliminação de graus de liberdade de contacto. 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 grandes sistemas esparsos atualizando repetidamente a solução através de produtos matriz-vetor e de pré-condicionamento. O FrontISTR disponibiliza 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 térmica.
BiCGSTAB Problemas não simétricos Candidato quando o contacto ou efeitos acoplados produzem forte não simetria.
GMRES Problemas não simétricos Utilizado com uma dimensão especificada do subespaço de Krylov.
GPBiCG Problemas não simétricos Utilizado como método melhorado da família BiCGSTAB.
GMRESR Problemas não simétricos, aplicações avançadas Opção que utiliza 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 é simétrica definida positiva. Se o contacto com atrito, o 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. Em GMRES, aumentar a dimensão do subespaço de Krylov pode melhorar a convergência, mas também aumenta a utilização de memória.

Quando METHOD2 é especificado, o FrontISTR pode mudar para um método iterativo alternativo se CG divergir ou falhar. Esta função é um fallback para os casos em que CG é o solver principal; o método alternativo utiliza as mesmas restantes definiçõ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 só é aplicado quando é selecionado um método iterativo. Os métodos diretos não utilizam 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 experimentar; amplamente utilizado em análise estrutural.
Escalamento diagonal Pré-condicionador leve que utiliza os termos diagonais. Quando se pretende um baixo custo computacional.
BILU Fatorização LU incompleta por blocos. Candidato para problemas cuja convergência com SSOR é difícil.
AMG Multigrid algébrico que utiliza Trilinos-ML. Candidato para problemas de grande escala ou dominados por componentes de erro hierárquicos.
SAINV Sparse Approximate Inverse. Opção de pré-condicionamento especializada para problemas de contacto ou ambientes de memória distribuída.
RIF Robust Incomplete Factorization. Outra opção de fatorização incompleta.

O SSOR é a escolha padrão e, em paralelismo OpenMP, é utilizada uma versão com ordenação multicolor. O escalamento diagonal é leve, embora a melhoria da convergência dependa do problema. O BILU é implementado como uma fatorização LU incompleta por blocos e também suporta matrizes com um número geral de graus de liberdade. Para a família BILU, existe 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 utiliza Trilinos-ML, pelo que o ML tem de estar ativado no momento da compilação. Podem ser especificados smoothers, ciclos multigrid, métodos de coarsening e outras definições; consulte a referência de palavras-chave para obter os valores detalhados. Quando SAINV é utilizado numa análise paralela que contém restrições de contacto ou MPC, a profundidade de sobreposição utilizada na decomposição de domínio pode afetar a convergência.

Métodos diretos

Os métodos diretos resolvem equações lineares através da fatorização da matriz de coeficientes. Como não dependem de um número de iterações, são robustos e podem constituir uma escolha estável para análises que contenham condições de contacto ou restrições. No entanto, o consumo de memória aumenta com a dimensão do problema.

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

Os métodos diretos podem ser utilizados tanto para matrizes simétricas como não simétricas. MUMPS e MKL exigem que as bibliotecas correspondentes estejam ligadas no momento da compilação. Não podem ser utilizados em ambientes sem essas bibliotecas; consulte o guia de compilação para conhecer as dependências e opções CMake necessárias.

O FrontISTR também contém um caminho de solver direto incorporado que não utiliza uma biblioteca externa, mas, para análises comuns que necessitem de um método direto, deve normalmente considerar primeiro MUMPS ou MKL.

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

Métodos de tratamento de MPC

O método de tratamento de MPC determina como os graus de liberdade ligados por restrições multiponto são incorporados nas 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 Enquadramento Utilização predefinida
Método da penalização Satisfaz aproximadamente as restrições adicionando termos de elevada rigidez às equações de restrição. Predefinição para métodos diretos.
Método MPC-CG Método antigo que trata, dentro do solver iterativo, produtos matriz-vetor que contêm restrições. Não recomendado.
Eliminação explícita de graus de liberdade Elimina os graus de liberdade restringidos e resolve o sistema linear reduzido. Predefinição para métodos iterativos.

O método da penalização é a predefinição para métodos diretos, enquanto a eliminação explícita de graus de liberdade é a predefinição para métodos iterativos. O método MPC-CG é uma opção antiga mantida por compatibilidade e não é recomendado para novas análises; normalmente, utilize a eliminação explícita de graus de liberdade ou o tratamento predefinido do método direto selecionado.

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

Eliminação de graus de liberdade de contacto

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

No modo automático predefinido, a eliminação de graus de liberdade de contacto é ativada para métodos iterativos e desativada para métodos diretos. Para os métodos diretos, existe um caminho que resolve diretamente o sistema aumentado que contém os graus de liberdade de contacto.

Quando CONTACT_ELIM é especificado explicitamente, a eliminação de graus de liberdade de contacto também pode ser efetuada quando se utiliza um método direto. Para as escolhas do tipo de contacto, do par de contacto e do algoritmo de contacto no lado da entrada, consulte a página Contacto e incorporação.

Funções auxiliares

A estimativa do número de condição, os dumps da matriz e o registo podem ser utilizados para investigar a convergência e o desempenho do solver. Estas funções não são necessárias em análises normais e são ativadas principalmente para depuração ou avaliação do desempenho.

Função Finalidade Observações
Estimativa do número de condição Produz um indicador do número de condição para CG e GMRES. Disponível em compilações com LAPACK ativado.
Dump da matriz Guarda a matriz e o lado direito transmitidos ao solver. Suporta os formatos Matrix Market, CSR e BSR.
DUMPEXIT Termina a análise após o dump da matriz. Utilizado quando apenas se pretende obter a matriz para verificação externa.
ITERLOG Produz o histórico de convergência de um método iterativo. Utilizado para verificar a evolução do resíduo.
TIMELOG Produz o tempo de cálculo do solver. VERBOSE produz uma discriminação mais detalhada.
STEPLOG Produz informações sobre os passos. Utilizado para verificar 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á ativado, a análise termina depois de a matriz e o lado direito terem sido guardados. A estimativa do número de condição é uma função experimental disponível com CG e GMRES e pode ser utilizada para diagnosticar o comportamento da convergência.

Tópicos relacionados