KSPSetNullSpace and CG for singular systems

Shao-Ching Huang schuang at ats.ucla.edu
Sun Aug 3 20:23:47 CDT 2008


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
>>
>>




More information about the petsc-users mailing list