User Tools

Site Tools


solverpre

This is an old revision of the document!


Problema: -Hélice 2D

SetUp 1: GMRES+PCASM

ierr = KSPCreate(PETSC_COMM_WORLD,&ksp);CHKERRQ(ierr);ierr = KSPSetOperators(ksp,A,A);CHKERRQ(ierr);
ierr = KSPSetTolerances(ksp,1.e-10,PETSC_DEFAULT,PETSC_DEFAULT, 500);CHKERRQ(ierr);
ierr = KSPSetFromOptions(ksp);CHKERRQ(ierr);
ierr = KSPGetPC(ksp,&pc);
ierr = PCSetType(pc,PCASM);
ierr = KSPSetType(ksp,KSPGMRES); CHKERRQ(ierr);
ierr = KSPGMRESSetRestart(ksp, 500); CHKERRQ(ierr);
ierr = KSPSolve(ksp,b,u);CHKERRQ(ierr);

Não converge a parte nao linear. O solver linear fica com erros relativamente pequenos.

Aumentando para 5000 iterações e 5 GMRES restart o não linear converge mas de forma diferente a cada nova simulação e o solver linear fica com erros grandes.

Mantendo 5000 iterações e aumentando para 50 GMRES o erro do solver linear diminui um pouco mas o não linear não converge bem, mas se ajusta com o passar do tempo.

Mantendo 5000 iterações e aumentando para 500 GMRES o erro do solver linear diminui mas a convergencia ainda é ruim, devendo se acertar com o processo dinâmico, eu espero.

- SetUp 2: DGMRES + PCNONE

Para o problema da hélice 2d resolvendo pelo método Arlequin o solver DGMRES sem precondicionamento ficou excelente. Converge em cerca de 30 a 90 iterações (um pouco mais nos primeiros passos de tempo), porém demanda um limite maior de iterações dentro do Newton-Raphson (utilizei em torno de 5).

ierr = KSPCreate(PETSC_COMM_WORLD,&ksp);CHKERRQ(ierr);
ierr = KSPSetOperators(ksp,A,A);CHKERRQ(ierr);
ierr = KSPSetTolerances(ksp,1.e-10,PETSC_DEFAULT,PETSC_DEFAULT, 5000);
CHKERRQ(ierr); ierr = KSPSetFromOptions(ksp);CHKERRQ(ierr);
ierr = KSPGetPC(ksp,&pc); ierr = PCSetType(pc,PCNONE);
ierr = KSPSetType(ksp,KSPDGMRES); CHKERRQ(ierr);
ierr = KSPGMRESSetRestart(ksp, 1000); CHKERRQ(ierr);
 ierr = KSPSolve(ksp,b,u);CHKERRQ(ierr);

- MUMPS:

O MUMPS (MUltifrontal Massively Parallel sparse direct Solver) é um solver direto, porém paralelo e muito eficiente. Para utilizá-lo em conjunto com o PETSc, a opção '–download-mumps' deve ser ativada no momento da instalação (ver PETSc)

    ierr = KSPCreate(PETSC_COMM_WORLD,&ksp);CHKERRQ(ierr);
    ierr = KSPSetOperators(ksp,A,A);CHKERRQ(ierr);
#if defined(PETSC_HAVE_MUMPS)
    ierr = KSPSetType(ksp,KSPPREONLY);
    ierr = KSPGetPC(ksp,&pc);
    ierr = PCSetType(pc, PCLU);
#endif
    ierr = KSPSetFromOptions(ksp);CHKERRQ(ierr);
    ierr = KSPSetUp(ksp);
    ierr = KSPSolve(ksp,b,u);CHKERRQ(ierr);
solverpre.1529686459.txt.gz · Last modified: by jeferson