On Thu, Dec 27, 2012 at 4:31 AM, Francesco Ballarin <[email protected]> wrote: > 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?
Apologies, it appears that this email fell through the cracks somewhere back around the holidays. Did you ever find a satisfactory answer to your question? Petsc developers may occasionally read this list, but for questions that are this advanced you would probably have better luck mailing the petsc developers list directly. And of course if you do find a good block preconditioning strategy for systems_of_equations_ex1, please feel free to report it here! -- John ------------------------------------------------------------------------------ Everyone hates slow websites. So do we. Make your web apps faster with AppDynamics Download AppDynamics Lite for free today: http://p.sf.net/sfu/appdyn_d2d_jan _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
