[petsc-users] number of pre- and post- smoothing in multigrid as a preconditioner
coco at dmi.unict.it
coco at dmi.unict.it
Fri May 25 07:14:23 CDT 2012
Thanks Barry.
I think have found the trouble. The user-provided routine UserSOR
takes in input the parameter its, which is the number of relaxations
(its=2 in my case). I didn't understand this fact, then I wrote
UserSOR as a single relaxation. Now I added a code line:
"while(its--)" at the beginning of UserSOR and everything is fine. It
remains unclear why the preconditioned residual is zero, but now the
code works.
Best regards,
Armando
petsc-users-request at mcs.anl.gov ha scritto:
> Send petsc-users mailing list submissions to
> petsc-users at mcs.anl.gov
>
> To subscribe or unsubscribe via the World Wide Web, visit
> https://lists.mcs.anl.gov/mailman/listinfo/petsc-users
> or, via email, send a message with subject or body 'help' to
> petsc-users-request at mcs.anl.gov
>
> You can reach the person managing the list at
> petsc-users-owner at mcs.anl.gov
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of petsc-users digest..."
>
>
> Today's Topics:
>
> 1. number of pre- and post- smoothing in multigrid as a
> preconditioner (coco at dmi.unict.it)
> 2. Re: number of pre- and post- smoothing in multigrid as a
> preconditioner (Barry Smith)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 24 May 2012 01:04:56 +0200
> From: coco at dmi.unict.it
> To: petsc-users at mcs.anl.gov
> Subject: [petsc-users] number of pre- and post- smoothing in multigrid
> as a preconditioner
> Message-ID:
> <20120524010456.Horde.I1kaUuph4B9PvW0YaN4gN_A at mbox.dmi.unict.it>
> Content-Type: text/plain; charset=ISO-8859-1; format=flowed; DelSp=Yes
>
> Dear all,
>
> I am using multigrid as a preconditioner and I noticed that if I try
> to perform 2 or more pre (or post) smoothing I obtain the same results
> as I perform just 1 smoothing. The ksp_view output is the following:
>
> [...]
>
> Down solver (pre-smoother) on level 1 -------------------------------
> KSP Object: (mg_levels_1_) 1 MPI processes
> type: richardson
> Richardson: damping factor=1
> maximum iterations=2, initial guess is zero
> tolerances: relative=0, absolute=0, divergence=inf
> left preconditioning
> using PRECONDITIONED norm type for convergence test
> PC Object: (mg_levels_1_) 1 MPI processes
> type: sor
> SOR: type = local_symmetric, iterations = 1, local iterations
> = 1, omega = 1
> linear system matrix = precond matrix:
> Matrix Object: 1 MPI processes
> type: shell
> rows=18522, cols=18522
>
> [...]
>
> Even if maximum iterations=2 and the tolerances are zeros, it performs
> just one iteration. Anyway, the converged reason for the down smoother
> is 4, then it seems it converges with the maximum iterations, but the
> results I obtain are the same as in the case I set 1 pre smoothing.
> I implemented the relaxation in a routine UserSOR and I registered it
> as MATOP_SOR for the matrix of the kspSmootherDown context (together
> with a MATOP_MULT).
>
> Finally, the output of the KSPMonitorTrueResidualNorm() for the first
> iteration is:
> 1 KSP preconditioned resid norm 0.000000000000e+00 true resid norm
> 5.094557710929e+02 ||r(i)||/||b|| 2.001351267432e+00
>
> Thank you.
> Armando
>
>
>
> ------------------------------
>
> Message: 2
> Date: Wed, 23 May 2012 18:15:31 -0500
> From: Barry Smith <bsmith at mcs.anl.gov>
> To: PETSc users list <petsc-users at mcs.anl.gov>
> Subject: Re: [petsc-users] number of pre- and post- smoothing in
> multigrid as a preconditioner
> Message-ID: <0D966127-FEB5-47E8-9290-F6D89DAD907C at mcs.anl.gov>
> Content-Type: text/plain; charset=us-ascii
>
>
> On May 23, 2012, at 6:04 PM, coco at dmi.unict.it wrote:
>
>> Dear all,
>>
>> I am using multigrid as a preconditioner and I noticed that if I
>> try to perform 2 or more pre (or post) smoothing I obtain the same
>> results as I perform just 1 smoothing. The ksp_view output is the
>> following:
>>
>> [...]
>>
>> Down solver (pre-smoother) on level 1 -------------------------------
>> KSP Object: (mg_levels_1_) 1 MPI processes
>> type: richardson
>> Richardson: damping factor=1
>> maximum iterations=2, initial guess is zero
>> tolerances: relative=0, absolute=0, divergence=inf
>> left preconditioning
>> using PRECONDITIONED norm type for convergence test
>> PC Object: (mg_levels_1_) 1 MPI processes
>> type: sor
>> SOR: type = local_symmetric, iterations = 1, local
>> iterations = 1, omega = 1
>> linear system matrix = precond matrix:
>> Matrix Object: 1 MPI processes
>> type: shell
>> rows=18522, cols=18522
>>
>> [...]
>>
>> Even if maximum iterations=2 and the tolerances are zeros, it
>> performs just one iteration. Anyway, the converged reason for the
>> down smoother is 4, then it seems it converges with the maximum
>> iterations, but the results I obtain are the same as in the case I
>> set 1 pre smoothing.
>> I implemented the relaxation in a routine UserSOR and I registered
>> it as MATOP_SOR for the matrix of the kspSmootherDown context
>> (together with a MATOP_MULT).
>>
>> Finally, the output of the KSPMonitorTrueResidualNorm() for the
>> first iteration is:
>> 1 KSP preconditioned resid norm 0.000000000000e+00 true resid norm
>> 5.094557710929e+02 ||r(i)||/||b|| 2.001351267432e+00
>
> With that 0 residual norm it has to stop. Something is wrong that
> the preconditioned residual is 0 while unpreconditioned is nonzero.
> That cannot be true to since the smoother is suppose to be a linear
> operator. Investigate why the it thinks the preconditioned residual
> is 0 but the nonpreconditioned is not.
>
> Barry
>
>>
>> Thank you.
>> Armando
>>
>
>
>
> ------------------------------
>
> _______________________________________________
> petsc-users mailing list
> petsc-users at mcs.anl.gov
> https://lists.mcs.anl.gov/mailman/listinfo/petsc-users
>
>
> End of petsc-users Digest, Vol 41, Issue 90
> *******************************************
More information about the petsc-users
mailing list