[petsc-users] [petsc-3.2] LSQR new convergence test
Barry Smith
bsmith at mcs.anl.gov
Wed Sep 21 08:36:56 CDT 2011
On Sep 21, 2011, at 2:39 AM, Alexander Grayver wrote:
> Hong, Barry,
>
> Thanks! Sorry for not to be clear, but Barry right, my question was how to get back to DefaultConvergenceTest in case of LSQR solver.
>
> Barry, yes, both versions give the same two norms.
>
> Can you clarify please how to implement that in Fortran:
> void *cctx;
> KSPDefaultConvergedCreate(&cctx);
> KSPSetConvergenceTest(ksp,KSPDefaultConverged,cctx);
It should be almost the same
PetscFortranAddr cctx
call KSPDefaultConvergedCreate(cctx,ierr)
call KSPSetConvergenceTest(ksp,KSPDefaultConverged,cctx,PETSC_NULL_FUNCTION,ierr)
Barry
>
> I'm a little bit confused about cctx parameter.
>
> Regards,
> Alexander
>
>
> On 21.09.2011 01:10, Barry Smith wrote:
>> It has its own monitor that provides additional information -ksp_monitor_lsqr
>>
>> You can also remove the new convergence test and get back the old one with code like
>>
>> void *cctx;
>> KSPDefaultConvergedCreate(&cctx);
>> KSPSetConvergenceTest(ksp,KSPDefaultConverged,cctx);
>>
>> after the KSPType is set to LSQR. So if you are happy with the old test.
>>
>>
>> Do both versions give the same first two norms?
>>
>>> 0 KSP Residual norm 9.386670021557e-17
>>> 1 KSP Residual norm 8.258308650175e-17
>> Barry
>>
>>
>> On Sep 20, 2011, at 4:40 AM, Alexander Grayver wrote:
>>
>>> Hello,
>>>
>>> In comparison with petsc-3.1-p7 in the latest petsc LSQR solver behaves differently.
>>>
>>> In petsc31 I had:
>>>
>>> 0 KSP Residual norm 9.386670021557e-17
>>> ...
>>> 95 KSP Residual norm 9.341367317075e-18
>>> Linear solve converged due to CONVERGED_RTOL iterations 95
>>> KSP Object:
>>> type: lsqr
>>> maximum iterations=200, initial guess is zero
>>> tolerances: relative=0.1, absolute=1e-50, divergence=10000
>>> left preconditioning
>>> using PRECONDITIONED norm type for convergence test
>>> PC Object:
>>> type: none
>>> linear system matrix = precond matrix:
>>> Matrix Object:
>>> type=shell, rows=19584, cols=19584
>>>
>>> relative residual norm = 0.9951737192872134E-01
>>>
>>> Now, with petsc32 I have:
>>>
>>> 0 KSP Residual norm 9.386670021557e-17
>>> 1 KSP Residual norm 8.258308650175e-17
>>> Linear solve converged due to CONVERGED_RTOL_NORMAL iterations 1
>>> KSP Object: 12 MPI processes
>>> type: lsqr
>>> maximum iterations=200, initial guess is zero
>>> tolerances: relative=0.1, absolute=1e-50, divergence=10000
>>> left preconditioning
>>> using UNPRECONDITIONED norm type for convergence test
>>> PC Object: 12 MPI processes
>>> type: none
>>> linear system matrix = precond matrix:
>>> Matrix Object: 12 MPI processes
>>> type: shell
>>> rows=19584, cols=19584
>>> relative residual norm = 0.8797910900468064E+00
>>>
>>> So I found new convergence test here which sets CONVERGED_RTOL_NORMAL:
>>> http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/KSP/KSPLSQRDefaultConverged.html
>>>
>>> The question is, how to interpret this new test and make it works properly for me?
>>> Thanks in advance.
>>>
>>> Regards,
>>> Alexander
>
More information about the petsc-users
mailing list