User Tools

Site Tools


solverpre

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
solverpre [2018/06/22 19:19] jefersonsolverpre [2021/03/22 20:07] (current) jeferson
Line 1: Line 1:
 +====== ATUALIZAÇÃO - 22/03/2021 ======
 +
 +Nos testes realizados mais recentemente, observou-se que os solvers iterativos (GMRES, BiCGSTAB etc) não funcionam apropriadamente com elementos finitos triangulares quadráticos. No entanto, para elementos finitos lineares, são obtidos bons resultados. Os testes foram realizados no programa de escoamentos incompressíveis otimizado (matriz em banda com nós renumerados) para o escoamento sobre o aerofólio NACA 0012 com Re=1000. Os melhores resultados foram obtidos com o seguinte input: mpirun -np 4 ./f -pc_type bjacobi -ksp_type fgmres -ksp_gmres_restart 100 -ksp_max_it 100 -snes_monitor -snes_type newtonls -snes_linesearch_type l2 -snes_max_linear_solve_fail 3 -snes_max_it 3.
 +
 +Observações:
 +
 +Pré-condicionador: block Jacobi.
 +
 +Solver: Tanto o GMRES quanto suas variantes (FGMRES, DGMRES etc) não pareceram apresentar muita diferença na convergência. O método BiCGSTAB também funcionou bem, inclusive sendo um pouco mais rápido do que o GMRES.
 +
 +SNES: O problema foi resolvido dentro do paradigma SNES do PETSc, bastante recomendado pois, embora aumente levemente o tempo de processamento devido à integração separada da matriz jacobiana e do vetor RHS, proporciona uma convergência muito maior do que o Newton-Raphson puro (especialmente para o campo de pressão).
 +
 Problema: -Hélice 2D Problema: -Hélice 2D
  
Line 56: Line 68:
 No entanto, alguns erros podem acontecer durante a execução do MUMPs. Para monitorálos é importante ler o seu [[http://mumps.enseeiht.fr/doc/userguide_5.1.2.pdf|manual]]. De um modo geral, as tags de erro são impressas na variável INFO(1). Porém, essa informação só é acessada através do PETSc se a matriz tiver sido fatorada. Para fatorar uma matriz, adicionam-se os seguintes comandos: No entanto, alguns erros podem acontecer durante a execução do MUMPs. Para monitorálos é importante ler o seu [[http://mumps.enseeiht.fr/doc/userguide_5.1.2.pdf|manual]]. De um modo geral, as tags de erro são impressas na variável INFO(1). Porém, essa informação só é acessada através do PETSc se a matriz tiver sido fatorada. Para fatorar uma matriz, adicionam-se os seguintes comandos:
  
-<code> +<code c
-irrr = PCFactorSetMatSolverType(pc,MATSOLVERMUMPS);+ierr = PCFactorSetMatSolverType(pc,MATSOLVERMUMPS);
 ierr = PCFactorSetUpMatSolverType(pc); ierr = PCFactorSetUpMatSolverType(pc);
 ierr = PCFactorGetMatrix(pc,&F); ierr = PCFactorGetMatrix(pc,&F);
Line 66: Line 78:
 Assim, para acessar a flag INFO(1) utiliza-se o seguinte comando: Assim, para acessar a flag INFO(1) utiliza-se o seguinte comando:
  
-<code>+<code c>
 PetscInt info1; PetscInt info1;
 ierr = MatMumpsGetInfo(F,1,&info1); ierr = MatMumpsGetInfo(F,1,&info1);
 +</code>
 +
 +<code>
 +info1);
 </code> </code>
  
Line 107: Line 123:
  
 Note que a última parte do código é construída para monitorar os valores de INFO(1), INFO(2) e ICNTL(14). É fortemente recomendado que pelo menos INFO(1) e INFO(2) sejam monitorados a cada chamada do MUMPS para facilitar o diagnóstico de possíveis //bugs// ou erros de execução. Note que a última parte do código é construída para monitorar os valores de INFO(1), INFO(2) e ICNTL(14). É fortemente recomendado que pelo menos INFO(1) e INFO(2) sejam monitorados a cada chamada do MUMPS para facilitar o diagnóstico de possíveis //bugs// ou erros de execução.
 +======   ======
  
  
solverpre.1529695197.txt.gz · Last modified: by jeferson