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
