!SOLVER¶
Controle do solver
Dados de controle obrigatórios.
Parâmetros¶
METHOD = Método de solução (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Método direto, exceto para análise de contato (somente processamento serial) (atualmente indisponível)
DIRECTmkl : Método direto usando Intel MKL
MUMPS : Método direto usando MUMPS
Quando um método direto é selecionado, as linhas de dados são ignoradas.
Métodos iterativos para problemas com 3 DOFs oferecem execução paralela por threads com OpenMP
PRECOND = Método de precondicionamento para solvers iterativos (1, 2, 3, 5, 10, 11, 12)
1, 2 : SSOR (em bloco) (com ordenação multicolor somente para problemas com 3 DOFs)
3 : Escalonamento diagonal (em bloco)
5 : AMG usando o pacote de precondicionamento multigrid ML
10 : ILU(0) em bloco
11 : ILU(1) em bloco
12 : ILU(2) em bloco
10, 11 e 12 estão disponíveis somente para problemas com 3 DOFs
Para execução paralela por threads OpenMP, recomenda-se SSOR, escalonamento diagonal ou ML
ITERLOG = Se o histórico de convergência do solver iterativo deve ser gerado (YES/NO)(Padrão: NO)
TIMELOG = Se o tempo de cálculo do solver deve ser gerado (YES/NO/VERBOSE)(Padrão: NO)
USEJAD = Se deve ser usada ordenação para processadores vetoriais (YES/NO)(Padrão: NO)
Válido somente quando um método iterativo é usado para um problema com 3 DOFs
SCALING = Se a matriz deve ser escalonada de modo que as entradas diagonais sejam 1 (YES/NO)(Padrão: NO)
Válido somente quando um método iterativo é usado para um problema com 3 DOFs
DUMPTYPE = Formato de dump da matriz (NONE, MM, CSR, BSR) (principalmente para depuração)
NONE : Não gerar dump (Padrão)
MM : Formato Matrix Market
CSR : Formato Compressed Sparse Row (CSR)
BSR : Formato CSR em blocos
DUMPEXIT = Encerra o programa imediatamente após o dump da matriz (YES/NO)(Padrão: NO)
MPCMETHOD = Método de tratamento de restrições multiponto (1, 2, 3)
1: Método da penalidade (Padrão ao usar um método direto)
2: Método MPC-CG (Obsoleto)
3: Eliminação explícita de DOFs (Padrão ao usar um método iterativo)
ESTCOND = Frequência de estimativa do número de condição (experimental)
Estima o número de condição a cada intervalo de iterações especificado e ao final das iterações
Nenhuma estimativa é realizada quando 0 é especificado
METHOD2 = Método de solução secundário (BiCGSTAB, GMRES, GPBiCG) (experimental)
Válido somente quando CG é especificado para METHOD
Se CG divergir, muda automaticamente para o método secundário e continua a solução
Os mesmos valores são usados para os demais parâmetros e linhas de dados
CONTACT_ELIM = Especifica se a eliminação de DOFs é realizada na análise de contato (0,1)
0: Realiza a eliminação de DOFs somente ao usar um método iterativo (Padrão)
1: Sempre realiza a eliminação de DOFs (inclusive ao usar um método direto)
** 2ª linha e seguintes **
| Variável | Atributo | Descrição |
|---|---|---|
| NITER | I | Número de iterações (Padrão: 100) |
| iterPREmax | I | Número de iterações do precondicionamento Additive Schwarz (Padrão: 1) (Valor recomendado: 1; 2 pode ser eficaz em alguns cálculos paralelos) |
| NREST | I | Número de subespaços de Krylov (Padrão: 10) (Válido somente quando GMRES é selecionado como método de solução) |
| NCOLOR_IN | I | Número-alvo de cores para ordenação multicolor (Padrão: 10) (Válido somente quando o número de threads OpenMP é 2 ou maior) |
| RECYCLEPRE | I | Número de vezes que as informações de configuração do precondicionador são reutilizadas (Padrão: 3) (Válido somente em análise não linear) |
| Variável | Atributo | Descrição |
|---|---|---|
| RESID | R | Erro de truncamento (Padrão: 1.0e-8) |
| SIGMA_DIAG | R | Fator de escala aplicado às entradas diagonais ao calcular a matriz de precondicionamento (Padrão: 1.0) (Se ocorrer divisão por zero ou divergência com precondicionamento ILU, o problema poderá convergir quando for especificado um valor maior que 1.0) |
| SIGMA | R | Não utilizado (Padrão: 0.0) |
Quando PRECOND=5 (opcional)¶
Se qualquer outro valor for especificado para PRECOND, a 4ª linha será ignorada.
| Variável | Atributo | Descrição |
|---|---|---|
| ML_CoarseSolver | I | Solver da malha grossa para ML (1: usar smoother, 2: KLU (método direto serial), 3: MUMPS (método direto paralelo)) (Padrão: 1) (Recomendado: 3 ou 2 para problemas difíceis, 1 para problemas comuns) |
| ML_Smoother | I | Smoother do ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Padrão: 1) (Recomendado: 1) |
| ML_MGCycle | I | Ciclo multigrid do ML (1: ciclo V, 2: ciclo W, 3: ciclo Full-V) (Padrão: 1) (Recomendado: 2 para problemas difíceis, 1 para problemas comuns) |
| ML_MaxLevels | I | Número máximo de níveis do ML (Padrão: 10) (Para problemas particularmente difíceis, use um solver direto na malha grossa e 2 níveis (ou 3 se a memória for insuficiente); para problemas comuns, recomenda-se 10) |
| ML_CoarseningScheme | I | Esquema de coarsening do ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Padrão: 1) (Recomendado: 1 ou 5) |
| ML_NumSweep | I | Número de sweeps do smoother do ML (grau do polinômio para Chebyshev) (Padrão: 2) (Recomendado: 2 para Chebyshev, 1 para SymBlockGaussSeidel) |
Exemplos¶
Usar CG com precondicionamento SSOR e definir o número máximo de iterações como 10000 e o erro de truncamento como 1.0e-8
Usar GMRES com precondicionamento SSOR e definir o número de subespaços de Krylov como 40 e o número-alvo de cores para ordenação multicolor como 100
Usar CG com precondicionamento ILU(0) e definir como 1.1 o fator de escala aplicado às entradas diagonais ao calcular a matriz de precondicionamento
Usar AMG por ML como precondicionador do CG
Usar AMG por ML como precondicionador do CG e MUMPS como solver da malha grossa (para problemas difíceis)
Usar AMG por ML como precondicionador do CG e ciclo W como ciclo multigrid (para problemas difíceis)
Usar AMG por ML como precondicionador do CG, MUMPS como solver da malha grossa e definir o número máximo de níveis como 2 (para problemas muito difíceis)