Dear libMesh users,
I am trying to solve a Stokes problem in a 3D domain, but I am currently
struggling with the choice of the preconditioner.
I have slightly modified systems_of_equations_ex1 to accommodate for the
third velocity component and boundary conditions of the problem at hand
(Dirichlet BCs on the inlet on the walls, enforced using a
DirichletBoundary object, and homogeneous Neumann BC on the outflow)

I am trying to use PETSc block preconditioners as shown, e.g., in
http://acts.nersc.gov/events/Workshop2012/slides/PETSc.pdf
section 4. I have tried most of the preconditioners discussed during the
talk, but I am not satisfied because I get either PETSc errors or a
performance that I hope can be increased.

For example, with the following options:
*******
  PetscOptionsSetValue("-ksp_type", "gmres");
PetscOptionsSetValue("-ksp_right_pc", PETSC_NULL);
 PetscOptionsSetValue("-pc_type", "fieldsplit");
PetscOptionsSetValue("-pc_fieldsplit_detect_saddle_point", PETSC_NULL);
 PetscOptionsSetValue("-pc_fieldsplit_type", "multiplicative");
PetscOptionsSetValue("-fieldsplit_0_ksp_type", "preonly");
 PetscOptionsSetValue("-fieldsplit_0_pc_type", "ml");
PetscOptionsSetValue("-fieldsplit_1_ksp_type", "preonly");
 PetscOptionsSetValue("-fieldsplit_1_pc_type", "jacobi");
*******
I obtain a reasonable solution but after thousands of gmres iterations. Is
there any way to improve that?

Or, if I try to embed the previous block preconditioner in mg:
*******
PetscOptionsSetValue("-pc_type", "mg");
 PetscOptionsSetValue("-pc_mg_levels", "5");
PetscOptionsSetValue("-pc_mg_galerkin", PETSC_NULL);
 PetscOptionsSetValue("-ksp_type", "gmres");
PetscOptionsSetValue("-mg_levels_pc_type", "fieldsplit");
 PetscOptionsSetValue("-mg_levels_pc_fieldsplit_detect_saddle_point",
PETSC_NULL);
PetscOptionsSetValue("-mg_levels_pc_fieldsplit_type", "multiplicative");
 PetscOptionsSetValue("-mg_levels_fieldsplit_0_ksp_type", "preonly");
PetscOptionsSetValue("-mg_levels_fieldsplit_0_pc_type", "gamg");
 PetscOptionsSetValue("-mg_levels_fieldsplit_1_ksp_type", "preonly");
PetscOptionsSetValue("-mg_levels_fieldsplit_1_pc_type", "jacobi");
*******
I get the following error:
*******
PETSC ERROR: Null argument, when expecting valid pointer!
PETSC ERROR: Null Object: Parameter # 2!
PETSC ERROR: MatPtAP() line 8237 in petsc-3.3-p4/src/mat/interface/matrix.c
*******

Do you have any suggestion? What are you currently using as preconditioner
for saddle point problems?

Thanks,
best regards,
Francesco
------------------------------------------------------------------------------
Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS,
MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current
with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft
MVPs and experts. ON SALE this month only -- learn more at:
http://p.sf.net/sfu/learnmore_122712
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to