User Tools

Site Tools


petsc_test

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
petsc_test [2016/08/09 15:42] jefersonpetsc_test [2019/07/29 20:12] (current) freitash
Line 4: Line 4:
  
 <file> <file>
-KSP - Solvers para Equações Lineares;+KSP - Solvers para Equações Lineares baseados em métodos de Krylov (Krylov Subspace Methods);
 SNES - Solvers para Equações Não Lineares; SNES - Solvers para Equações Não Lineares;
-TS - Solvers para  Equações Diferenciais Ordinárias (ODE) e Equações Diferenciais Algébricas (DAE) escalonáveis.+TS - Solvers para  Equações Diferenciais Ordinárias (ODE) e Algébricas (DAE) escalonáveis.
 </file> </file>
  
-O teste desses exemplos é realizado por meio de arquivos 'makefile'.+Os exemplos de teste de cada um dos tipos de aplicações localizam-se nas seguintes pastas: 
 + 
 +<file> 
 +KSP - {PETSC_DIR}/src/ksp/ksp/examples/tutorials 
 +SNES - {PETSC_DIR}/src/snes/examples/tutorials 
 +TS - {PETSC_DIR}/src/ts/examples/tutorials 
 +</file> 
 + 
 +Para testar um exemplo qualquer, em C/C++, basta acessar seu diretório, por exemplo: 
 + 
 +<code> 
 +cd {PETSC_DIR}/src/ksp/ksp/examples/tutorials 
 +</code> 
 + 
 +copie o exemplo para uma pasta do usuário (considerando a instalação em ///opt//) 
 + 
 +<code> 
 +cp ex50.c ~/ 
 +cp makefile ~/ 
 +cd 
 +</code> 
 + 
 +Em seguida, a compilação é realizada por meio do arquivo 'makefile'. Para compilar o exemplo 50, por exemplo, deve-se usar o comando: 
 + 
 +<code> 
 +make ex50 
 +</code> 
 + 
 +Este exemplo resolve, usando método multigrid, a equação de Poisson 2D: ∇·(∇p)=f(x,y) no domínio 0 ≤ {displaystyle leq } ≤ x,y ≤ 1, com f(x,y)=-cos(nπx)·cos(nπy) e condições de Neumann: dp/dx = 0 para x=0 e x=1 e dp/dy=0 para y=0 e y=1. 
 + 
 +Para executar um exemplo usando apenas 1 processador, uma malha estruturada 3×3 e visualizar a matriz montada, duas opções são possíveis: 
 + 
 +<code> 
 +./ex50 -da_grid_x 4 -da_grid_y 4 -mat_view 
 + 
 +mpiexec.openmpi -n 1 ./ex50  -da_grid_x 4 -da_grid_y 4 -mat_view 
 +</code> 
 + 
 +Na primeira opção pode-se alterar as dimensões do problema, porém sempre será resolvido utilizando-se apenas um processador. Executando da segunda forma, pode-se alterar o número de processadores, aumentando o desempenho computacional. Caso não seja necessário visualizar a matriz montada, pode-se retirar a opção '-mat_view'
 + 
 +Com este mesmo exemplo pode-se testar por exemplo uma malha de 2049×2049 utilizando o solver multigrid com 16 processadores e 10 níveis multigrid com o comando: 
 + 
 +<code> 
 +mpiexec.openmpi -n 16 ./ex50 -da_grid_x 2049 -da_grid_y 2049 -pc_type mg -pc_mg_levels 10 -ksp_monitor 
 +</code> 
 + 
 +Para o teste de alguns outros exemplos utilizando os pacotes SNES e TS, por exemplo, pode-se consultar [[http://www.mcs.anl.gov/petsc/petsc-current/tutorials/HandsOnExercise.html|este site]].
  
  
petsc_test.1470757374.txt.gz · Last modified: by jeferson