!SOLVER¶
Controlo do solver
Dados de controlo 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 contacto (apenas processamento série) (atualmente indisponível)
DIRECTmkl : Método direto que utiliza Intel MKL
MUMPS : Método direto que utiliza MUMPS
Quando é selecionado um método direto, as linhas de dados são ignoradas.
Os métodos iterativos para problemas com 3 graus de liberdade suportam execução paralela por threads com OpenMP
PRECOND = Método de pré-condicionamento para solvers iterativos (1, 2, 3, 5, 10, 11, 12)
1, 2 : SSOR (por blocos) (com ordenação multicolor apenas para problemas com 3 graus de liberdade)
3 : Escalamento diagonal (por blocos)
5 : AMG que utiliza o pacote de pré-condicionamento multigrid ML
10 : ILU(0) por blocos
11 : ILU(1) por blocos
12 : ILU(2) por blocos
10, 11 e 12 estão disponíveis apenas para problemas com 3 graus de liberdade
Para execução paralela por threads com OpenMP, recomenda-se SSOR, escalamento diagonal ou ML
ITERLOG = Indica se deve produzir o histórico de convergência do solver iterativo (YES/NO)(Predefinição: NO)
TIMELOG = Indica se deve produzir o tempo de cálculo do solver (YES/NO/VERBOSE)(Predefinição: NO)
USEJAD = Indica se deve utilizar ordenação para processadores vetoriais (YES/NO)(Predefinição: NO)
Válido apenas quando é utilizado um método iterativo num problema com 3 graus de liberdade
SCALING = Indica se deve escalar a matriz para que os termos diagonais sejam 1 (YES/NO)(Predefinição: NO)
Válido apenas quando é utilizado um método iterativo num problema com 3 graus de liberdade
DUMPTYPE = Formato de dump da matriz (NONE, MM, CSR, BSR) (principalmente para depuração)
NONE : Não efetuar dump (Predefinição)
MM : Formato Matrix Market
CSR : Formato Compressed Sparse Row (CSR)
BSR : Formato CSR por blocos
DUMPEXIT = Termina o programa imediatamente após o dump da matriz (YES/NO)(Predefinição: NO)
MPCMETHOD = Método para tratar restrições multiponto (1, 2, 3)
1: Método da penalização (Predefinição quando é utilizado um método direto)
2: Método MPC-CG (Não recomendado)
3: Eliminação explícita de graus de liberdade (Predefinição quando é utilizado um método iterativo)
ESTCOND = Frequência da estimativa do número de condição (experimental)
Estima o número de condição em cada intervalo de iterações especificado e no fim das iterações
Não é efetuada qualquer estimativa quando é especificado 0
METHOD2 = Método de solução secundário (BiCGSTAB, GMRES, GPBiCG) (experimental)
Válido apenas quando CG é especificado para METHOD
Se CG divergir, muda automaticamente para o método secundário e continua a resolução
São utilizados os mesmos valores para os restantes parâmetros e linhas de dados
CONTACT_ELIM = Especifica se é efetuada a eliminação de graus de liberdade na análise de contacto (0,1)
0: Efetuar a eliminação de graus de liberdade apenas quando é utilizado um método iterativo (Predefinição)
1: Efetuar sempre a eliminação de graus de liberdade (incluindo quando é utilizado um método direto)
** 2.ª linha e seguintes **
| Variável | Atributo | Descrição |
|---|---|---|
| NITER | I | Número de iterações (Predefinição: 100) |
| iterPREmax | I | Número de iterações do pré-condicionamento Additive Schwarz (Predefinição: 1) (Valor recomendado: 1; 2 pode ser eficaz em alguns cálculos paralelos) |
| NREST | I | Número de subespaços de Krylov (Predefinição: 10) (Válido apenas quando GMRES é selecionado como método de solução) |
| NCOLOR_IN | I | Número de cores pretendido para a ordenação multicolor (Predefinição: 10) (Válido apenas quando o número de threads OpenMP é 2 ou superior) |
| RECYCLEPRE | I | Número de vezes que a informação de configuração do pré-condicionador é reutilizada (Predefinição: 3) (Válido apenas em análise não linear) |
| Variável | Atributo | Descrição |
|---|---|---|
| RESID | R | Erro de truncatura (Predefinição: 1.0e-8) |
| SIGMA_DIAG | R | Fator de escala aplicado aos termos diagonais ao calcular a matriz de pré-condicionamento (Predefinição: 1.0) (Se ocorrer divisão por zero ou divergência com pré-condicionamento ILU, o problema pode convergir quando é especificado um valor superior a 1.0) |
| SIGMA | R | Não utilizado (Predefinição: 0.0) |
Quando PRECOND=5 (opcional)¶
Se for especificado qualquer outro valor para PRECOND, a 4.ª linha é ignorada.
(4.ª linha) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
| Variável | Atributo | Descrição |
|---|---|---|
| ML_CoarseSolver | I | Solver da malha grosseira para ML (1: utilizar smoother, 2: KLU (método direto série), 3: MUMPS (método direto paralelo)) (Predefinição: 1) (Recomendado: 3 ou 2 para problemas difíceis, 1 para problemas comuns) |
| ML_Smoother | I | Smoother de ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Predefinição: 1) (Recomendado: 1) |
| ML_MGCycle | I | Ciclo multigrid de ML (1: ciclo V, 2: ciclo W, 3: ciclo Full-V) (Predefinição: 1) (Recomendado: 2 para problemas difíceis, 1 para problemas comuns) |
| ML_MaxLevels | I | Número máximo de níveis de ML (Predefinição: 10) (Para problemas particularmente difíceis, utilize um solver direto na malha grosseira e 2 níveis (ou 3 se a memória for insuficiente); para problemas comuns, recomenda-se 10) |
| ML_CoarseningScheme | I | Esquema de coarsening de ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Predefinição: 1) (Recomendado: 1 ou 5) |
| ML_NumSweep | I | Número de sweeps do smoother de ML (grau do polinómio para Chebyshev) (Predefinição: 2) (Recomendado: 2 para Chebyshev, 1 para SymBlockGaussSeidel) |
Exemplos¶
Utilizar CG com pré-condicionamento SSOR e definir o número máximo de iterações como 10000 e o erro de truncatura como 1.0e-8
Utilizar GMRES com pré-condicionamento SSOR e definir o número de subespaços de Krylov como 40 e o número de cores pretendido para a ordenação multicolor como 100
Utilizar CG com pré-condicionamento ILU(0) e definir o fator de escala aplicado aos termos diagonais ao calcular a matriz de pré-condicionamento como 1.1
Utilizar AMG por ML como pré-condicionador para CG
Utilizar AMG por ML como pré-condicionador para CG e utilizar MUMPS como solver da malha grosseira (para problemas difíceis)
Utilizar AMG por ML como pré-condicionador para CG e utilizar o ciclo W como ciclo multigrid (para problemas difíceis)
Utilizar AMG por ML como pré-condicionador para CG, utilizar MUMPS como solver da malha grosseira e definir o número máximo de níveis como 2 (para problemas muito difíceis)