Ir para o conteúdo

!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, 22)
            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
            22         : AMG que utiliza o SA-AMG integrado no HEC-MW (AMG por agregação suavizada)
            10, 11 e 12 estão disponíveis apenas para problemas com 3 graus de liberdade
            22 está disponível apenas em compilações com LAPACK ativado
            Para execução paralela por threads com OpenMP, recomenda-se SSOR, escalamento diagonal, ML ou SA-AMG

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)

LOGLEVEL =  Nível de saída das informações de diagnóstico do pré-condicionador             (inteiro)(Predefinição: sem saída)
            Especificado independentemente de ITERLOG e TIMELOG
            Com um valor igual ou superior a 1, produz a estrutura hierárquica e outras informações dos pré-condicionadores AMG (PRECOND=5,22)
            Com um valor igual ou superior a 2, produz informações mais detalhadas (como a utilização de memória)

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, 3)
            1: Método da penalização (Predefinição quando é utilizado um método direto)
            3: Eliminação explícita de graus de liberdade (Predefinição quando é utilizado um método iterativo)
            O método MPC-CG (2) foi removido. Se for especificado 2, é emitido um aviso e utiliza-se o método predefinido.

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

RECOMPUTE_RESIDUAL = Frequência de recálculo do vetor de resíduos
            Válido apenas quando CG, BiCGSTAB, GPBiCG ou PipeCG é especificado para METHOD
            Os métodos iterativos atualizam o vetor de resíduos através de uma relação de recorrência, acumulando erros de arredondamento
            Em cada intervalo de iterações especificado, o vetor de resíduos é recalculado a partir de {b}-[A]{x}
            Quando é especificado 0, é utilizada a predefinição de cada método (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
            Quando é especificado um valor negativo, não é efetuado qualquer recálculo periódico
            O recálculo para confirmar a convergência quando o critério de convergência é satisfeito é sempre efetuado, independentemente deste parâmetro
            Um intervalo demasiado curto não só aumenta o número de produtos matriz-vetor,
            como também pode degradar a convergência ou mesmo impedir que seja atingida
            Se a predefinição for alterada, verifique o histórico de convergência e o resíduo relativo final

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 **

(2.ª linha) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
Variável Tipo 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 Dimensão do subespaço 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)
(3.ª linha) RESID, SIGMA_DIAG, SIGMA
Variável Tipo 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 para PRECOND um valor que não seja 5 nem 22, a 4.ª linha é ignorada.

(4.ª linha) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
Variável Tipo 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)

Quando PRECOND=22 (opcional)

Se for especificado para PRECOND um valor diferente de 22, a 5.ª linha é ignorada. A 4.ª e a 5.ª linhas podem ser integralmente omitidas, e também podem ser omitidos os itens finais de qualquer uma delas. É utilizada a predefinição para qualquer item especificado como 0.

Os itens 1 a 7 da 4.ª linha estão dispostos pela mesma ordem que a linha de opções de PRECOND=5 (ML), pelo que a linha de opções de ML pode ser reutilizada sem alterações. Os itens 8 a 10 são específicos de SA-AMG.

(4.ª linha) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (não utilizado), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (não utilizado)
Variável Tipo Descrição
SA_CoarseSolver I Solver da malha grosseira (0: automático, 1: utilizar smoother, 2: método direto de matriz densa, 3: MUMPS (método direto paralelo)) (Predefinição: 0)
(No modo automático, MUMPS é utilizado nas compilações com MUMPS ativado; caso contrário, é utilizado o método direto de matriz densa)
SA_Smoother I Smoother (0 ou 1: Chebyshev) (Predefinição: 0)
(Apenas Chebyshev é suportado. Se for especificado outro valor, é emitido um aviso e é utilizado Chebyshev)
SA_MGCycle I Ciclo multigrid (0: predefinição (ciclo W), 1: ciclo V, 2: ciclo W) (Predefinição: 0)
(O ciclo Full-V não é suportado)
SA_MaxLevels I Número máximo de níveis (Predefinição: 20)
(não utilizado) I Posição correspondente ao esquema de coarsening de ML. Como SA-AMG utiliza sempre agregação não acoplada, um valor diferente de 0 origina um aviso e é ignorado
SA_ChebyDegree I Grau do polinómio do smoother de Chebyshev (Predefinição: 2)
SA_CoarseSize I Tamanho de corte da malha grosseira (Predefinição: 50000 quando MUMPS é utilizado como solver da malha grosseira; caso contrário, 100)
SA_MaxAggSize I Tamanho máximo do agregado (Predefinição: 96)
SA_GalerkinLowMem I Modo de cálculo da matriz da malha grosseira (0: normal (prioridade à velocidade), valor positivo: poupança de memória) (Predefinição: 0)
(Especifique um valor positivo se a memória for insuficiente durante a configuração)
(não utilizado) I Reservado para extensões futuras

A 5.ª linha é específica de SA-AMG e não é lida por ML.

(5.ª linha) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
Variável Tipo Descrição
SA_Theta R Limiar para determinar ligações fortes (Predefinição: 0.0)
(Com 0.0, a estrutura não nula da matriz é utilizada diretamente como grafo)
SA_ChebyAlpha R Rácio que determina o limite inferior do intervalo de valores próprios visado pelo smoother de Chebyshev (Predefinição: 20.0)
SA_Safety R Fator de segurança aplicado ao valor próprio máximo estimado (Predefinição: 1.1)
SA_TaperK R Coeficiente K de atenuação do coarsening (Predefinição: 100)
(A partir do nível 2, o coarsening torna-se mais gradual para que permaneçam pelo menos aproximadamente K agregados. Um valor negativo desativa a atenuação)
SA_AggOrder R Ordem de percurso da agregação (0: predefinição (ordem BFS), 1: ordem BFS, 2: ordem de hash dos números dos nós (experimental), 3: ordem crescente do grau (experimental), 4: ordem decrescente do grau (experimental), valor negativo: ordem por número do nó) (Predefinição: 0)
SA_MinAggSize R Tamanho mínimo do agregado (Predefinição: 3)
SA_Verify R Se deve ser executada uma autoverificação durante a configuração (0: não, valor positivo: sim) (Predefinição: 0) (principalmente para depuração)
SA_DumpVTK R Se a agregação do nível mais elevado deve ser produzida em formato VTK (0: sem saída, valor positivo: saída) (Predefinição: 0) (principalmente para depuração)

Exemplo

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

!SOLVER, METHOD=CG, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Utilizar GMRES com pré-condicionamento SSOR e definir a dimensão do subespaço de Krylov como 40 e o número de cores pretendido para a ordenação multicolor como 100

!SOLVER, METHOD=GMRES, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1, 40, 100
  1.0e-8, 1.0, 0.0

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

!SOLVER, METHOD=CG, PRECOND=10, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.1, 0.0

Utilizar AMG por ML como pré-condicionador para CG

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Utilizar AMG por ML como pré-condicionador para CG e utilizar MUMPS como solver da malha grosseira (para problemas difíceis)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Utilizar AMG por ML como pré-condicionador para CG e utilizar o ciclo W como ciclo multigrid (para problemas difíceis)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  1, 1, 2

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)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3, 1, 1, 2

Utilizar o SA-AMG integrado no HEC-MW como pré-condicionador para CG

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Utilizar SA-AMG como pré-condicionador para CG e MUMPS como solver da malha grosseira

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Numa análise de contacto com atrito, utilizar BiCGSTAB com pré-condicionamento SA-AMG e produzir a hierarquia do pré-condicionador AMG

!SOLVER, METHOD=BiCGSTAB, PRECOND=22, ITERLOG=YES, TIMELOG=YES, LOGLEVEL=1
  10000, 1
  1.0e-8, 1.0, 0.0