[petsc-users] why a certain option cannot be used

Klaij, Christiaan C.Klaij at marin.nl
Thu Jul 17 01:41:12 CDT 2014


Just for future reference, below are the correct comments that
should be at the top of ex70.

(Jed, Matt, I sent these to the maintainer list a long time
ago ([petsc-maint #155997]), but you never put them in, it would
avoid a lot of confusion)

/* Poiseuille flow problem.                                                   */
/*                                                                            */
/* Viscous, laminar flow in a 2D channel with parabolic velocity              */
/* profile and linear pressure drop, exact solution of the 2D Stokes          */
/* equations.                                                                 */
/*                                                                            */
/* Discretized with the cell-centered finite-volume method on a               */
/* Cartesian grid with co-located variables. Variables ordered as             */
/* [u1...uN v1...vN p1...pN]^T. Matrix [A00 A01; A10, A11] solved with        */
/* PCFIELDSPLIT. Lower factorization is used to mimick the Semi-Implicit      */
/* Method for Pressure Linked Equations (SIMPLE) used as preconditioner       */
/* instead of solver.                                                         */
/*                                                                            */
/* Disclaimer: does not contain the pressure-weighed interpolation            */
/* method needed to suppress spurious pressure modes in real-life             */
/* problems.                                                                  */
/*                                                                            */
/* usage:                                                                     */
/*                                                                            */
/* mpiexec -n 2 ./ex70 -nx 32 -ny 48 -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_fact_type lower -fieldsplit_1_pc_type none
/*                                                                            */
/*   Runs with PCFIELDSPLIT on 32x48 grid, no PC for the Schur                */
/*   complement because A11 is zero. FGMRES is needed because                 */
/*   PCFIELDSPLIT is a variable preconditioner.                               */
/*                                                                            */
/* mpiexec -n 2 ./ex70 -nx 32 -ny 48 -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_fact_type lower -user_pc
/*                                                                            */
/*   Same as above but with user defined PC for the true Schur                */
/*   complement. PC based on the SIMPLE-type approximation (inverse of        */
/*   A00 approximated by inverse of its diagonal).                            */
/*                                                                            */
/* mpiexec -n 2 ./ex70 -nx 32 -ny 48 -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_fact_type lower -user_ksp
/*                                                                            */
/*   Replace the true Schur complement with a user defined Schur              */
/*   complement based on the SIMPLE-type approximation. Same matrix is        */
/*   used as PC.                                                              */
/*                                                                            */
/* mpiexec -n 2 ./ex70 -nx 32 -ny 48 -ksp_type fgmres -pc_type fieldsplit -pc_fieldsplit_type schur -pc_fieldsplit_schur_fact_type lower -fieldsplit_0_ksp_type gmres -fieldsplit_0_pc_type bjacobi -fieldsplit_1_pc_type jacobi -fieldsplit_1_inner_ksp_type preonly -fieldsplit_1_inner_pc_type jacobi -fieldsplit_1_upper_ksp_type preonly -fieldsplit_1_upper_pc_type jacobi
/*                                                                            */
/*   Out-of-the-box SIMPLE-type preconditioning. The major advantage          */
/*   is that the user neither needs to provide the approximation of           */
/*   the Schur complement, nor the corresponding preconditioner.



dr. ir. Christiaan Klaij
CFD Researcher
Research & Development
E mailto:C.Klaij at marin.nl
T +31 317 49 33 44


MARIN
2, Haagsteeg, P.O. Box 28, 6700 AA Wageningen, The Netherlands
T +31 317 49 39 11, F +31 317 49 32 45, I www.marin.nl



More information about the petsc-users mailing list