Thanks... Shao-Ching, have you solved this problem?
On Mon, Aug 4, 2008 at 11:49 AM, Barry Smith <bsmith at mcs.anl.gov> wrote: > > One reason not to use this approach is that it can result in a very > ill-conditioned linear > system that may be difficult for an iterative solver. > > Barry > > > On Aug 3, 2008, at 10:09 PM, berry wrote: > > hi, shao-ching >> >> Why not try to change the singular matrix to be non-singular ? >> I mean set the last column and row of the matrix to be zero except >> diagonal element( which is set to 1). >> >> >> >> On Mon, Aug 4, 2008 at 9:23 AM, Shao-Ching Huang <schuang at ats.ucla.edu> >> wrote: >> Hi Barry: >> >> Thanks you for your suggestions. Now both sequential and parallel >> cases work when I use CG. >> >> Shao-Ching >> >> >> On Fri, Aug 01, 2008 at 08:56:23PM -0500, Barry Smith wrote: >> > >> > It is not the null space that is the problem. >> > >> > You are right to try the shift but >> > 1) first run on one process using -pc_type icc -ksp_type cg - >> > pc_factor_shift_positive_definite >> > this will keep increasing the shift until it produces a positive- >> > definite preconditioner. >> > >> > Run also with -ksp_view to confirm that it is using all the options you >> > provided. (you can run with -help to >> > see the option names) >> > >> > 2) If you have the sequential converging then use -pc_type bjacobi - >> > sub_pc_type icc -pc_factor_shift_positive_definite >> > >> > Barry >> > >> > On Aug 1, 2008, at 7:52 PM, Shao-Ching Huang wrote: >> > >> >> Hi, >> >> >> >> I am trying to use CG to solve a singular systems (i.e. Poisson >> >> equation with periodic conditions on all boundaries). >> >> >> >> The code works when I use GMRES, but it diverges when I switch CG. >> >> >> >> Since the null space is a constant vector, in the code I have: >> >> >> >> KSP ksp; >> >> MatNullSpace nullspace; >> >> ... >> >> MatNullSpaceCreate(MPI_COMM_WORLD, PETSC_TRUE, 0, PETSC_NULL, >> >> &nullspace); >> >> KSPSetNullSpace(ksp, nullspace); >> >> MatNullSpaceRemove(nullspace, f->p_rhs, PETSC_NULL); >> >> >> >> KSPSetFromOptions(ksp); >> >> KSPSetUp(ksp); >> >> KSPSolve(ksp, f->p_rhs, f->phi); >> >> >> >> [f->p_rhs is the RHS vector. f->phi is the solution vector.] >> >> >> >> When I use "-ksp_type gmres", it converges (shown by -ksp_monitor). >> >> >> >> However, when I switch to "-ksp_type cg", it diverges. >> >> In this case (cg), "-ksp_converged_reason" says: >> >> >> >> Linear solve did not converge due to DIVERGED_INDEFINITE_PC >> >> iterations 1 >> >> >> >> I also try adding "-sub_pc_factor_shift_nonzero 0.0000000001" but the >> >> CG case still fails. >> >> >> >> Am I missing some step in handling the null space when using CG? >> >> >> >> Thanks, >> >> >> >> Shao-Ching Huang >> >> >> >> >> >> >> >> >> -- >> Pang Shengyong >> Solidification Simulation Lab, >> State Key Lab of Mould & Die Technology, >> Huazhong Univ. of Sci. & Tech. China >> > > -- Pang Shengyong Solidification Simulation Lab, State Key Lab of Mould & Die Technology, Huazhong Univ. of Sci. & Tech. China -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20080807/541304ac/attachment.htm>
