This is an old revision of the document!
Juntamente com os arquivos que compõem a biblioteca PETSc, são disponibilizados diversos exemplos de aplicação do pacote.
Basicamente existem pacotes para três tipos de aplicações:
KSP - Solvers para Equações Lineares; SNES - Solvers para Equações Não Lineares; TS - Solvers para Equações Diferenciais Ordinárias (ODE) e Algébricas (DAE) escalonáveis.
Os exemplos de teste de cada um dos tipos de aplicações localizam-se nas seguintes pastas:
KSP - {PETSC_DIR}/src/ksp/ksp/examples/tutorials SNES - {PETSC_DIR}/src/snes/examples/tutorials TS - {PETSC_DIR}/src/ts/examples/tutorials
Para testar um exemplo qualquer, em C/C++, basta acessar seu diretório, por exemplo:
cd {PETSC_DIR}/src/ksp/ksp/examples/tutorials
Em seguida, a compilação é realizada por meio do arquivo 'makefile'. Para compilar o exemplo 50, por exemplo, deve-se usar o comando:
make ex50
Este exemplo resolve, usando método multigrid, a equação de Poisson 2D: ∇·(∇p)=f(x,y) no domínio 0 <font inherit/inherit;;inherit;;inherit>≤ {\displaystyle \leq }</font> ≤ 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:
./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
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'
Run with a 120×120 mesh on 16 processors using superlu_dist and view the solver options used
mpiexec -n 16 ./ex50 -da_grid_x 120 -da_grid_y 120 -pc_type lu -pc_factor_mat_solver_package superlu_dist -ksp_monitor -ksp_view
Run with a 2049×2049 grid using multigrid solver on 16 processors with 10 multigrid levels
mpiexec -n 16 ./ex50 -da_grid_x 2049 -da_grid_y 2049 -pc_type mg -pc_mg_levels 10 -ksp_monitor