[petsc-users] Norm_2 calculation

Matthew Knepley knepley at gmail.com
Fri Jun 5 12:53:24 CDT 2020


On Fri, Jun 5, 2020 at 12:32 PM Fazlul Huq <huq2090 at gmail.com> wrote:

> Input string:
> mpiexec -np 1 ./poisson_m -n 10000000 -pc_type cholesky  -ksp_view
> -ksp_converged_reason -ksp_monitor_true_residual
>
> Output is attached herewith.
>

Solving the problem...

  0 KSP preconditioned resid norm 9.741453255800e+07 true resid norm
1.802775638200e+01 ||r(i)||/||b|| 1.000000000000e+00

  1 KSP preconditioned resid norm 5.796040438920e+00 true resid norm
3.146946078273e-05 ||r(i)||/||b|| 1.745611606675e-06

Your Cholesky preconditioner is crap, probably because the system is either
not symmetric or nearly singular. You can see this
because the preconditioned residual is 6 orders of magnitude greater than
the true residual. Also, if you want to evaluate convergence, you
should probably use a lower tolerance like

  -ksp_rtol 1e-10

  Thanks,

     Matt

Thank you.
> Sincerely,
> Huq
>
> On Fri, Jun 5, 2020 at 10:16 AM Matthew Knepley <knepley at gmail.com> wrote:
>
>> On Fri, Jun 5, 2020 at 11:04 AM Fazlul Huq <huq2090 at gmail.com> wrote:
>>
>>> Hello All,
>>> I'm trying to calculate the norm_2 error of a solution.
>>> Here, vector s: Analytical solution
>>>           vector x: Numerical solution
>>>
>>> ierr = VecView(s,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
>>> ierr = VecView(x,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
>>>
>>>  ierr = VecAXPY(x,-1.0,s);CHKERRQ(ierr);
>>>  ierr = VecNorm(x,NORM_2,&norm);CHKERRQ(ierr);
>>>  ierr = VecView(x,PETSC_VIEWER_STDOUT_WORLD);CHKERRQ(ierr);
>>>  ierr = KSPGetIterationNumber(ksp,&its);CHKERRQ(ierr);
>>>  if (norm > tol) {
>>>     ierr = PetscPrintf(PETSC_COMM_WORLD,"Second Norm of error %g\n",
>>> double)norm);CHKERRQ(ierr);
>>>     ierr = PetscPrintf(PETSC_COMM_WORLD,"Iterations
>>> %D\n",its);CHKERRQ(ierr);
>>>   }
>>>
>>> Am I calculating the "Norm_2" error correctly or making any mistake?
>>> Unfortunately, for large sized matrix, say 10^6, I am getting very high
>>> value of "Norm_2" error.
>>>
>>
>> 1) I am guessing x comes from a KSPSolve(). It is only as accurate as
>> your tolerance
>>
>> 2) This is the l_2 norm, not the L_2 norm, so if you are using a
>> continuum method like FEM, this is likely wrong.
>>
>>   Thanks,
>>
>>      Matt
>>
>>
>>> Thank you.
>>> Sincerely,
>>> Huq
>>>
>>> --
>>>
>>> Fazlul Huq
>>> Graduate Research Assistant
>>> Department of Nuclear, Plasma & Radiological Engineering (NPRE)
>>> University of Illinois at Urbana-Champaign (UIUC)
>>> E-mail: huq2090 at gmail.com
>>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> -- Norbert Wiener
>>
>> https://www.cse.buffalo.edu/~knepley/
>> <http://www.cse.buffalo.edu/~knepley/>
>>
>
>
> --
>
> Fazlul Huq
> Graduate Research Assistant
> Department of Nuclear, Plasma & Radiological Engineering (NPRE)
> University of Illinois at Urbana-Champaign (UIUC)
> E-mail: huq2090 at gmail.com
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener

https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20200605/abf8ff21/attachment.html>


More information about the petsc-users mailing list