On Sun, Jul 2, 2023 at 2:24 AM 王赫萌 <wanghem...@163.com> wrote:

> Dear PETSc Team,
>
> Sorry to bother! My name is Hemeng Wang, and I am currently learning the
> use of PETSc software package. I am confused while calculating the norm of
> residue.
>
> I calculated residue norm by myself with:
> ```
>   PetscCall(VecNorm(b, NORM_2, &norm_b)); // (main.c, line 74)
>
>   PetscCall(VecDuplicate(b, &u)); // (main.c, line 105)
>   PetscCall(MatMult(A, x, u));
>   PetscCall(VecAXPY(b, -1.0, u));
>   PetscCall(VecNorm(b, NORM_2, &norm_delta));
> ```
> and check the (norm_delta) / (norm_b). It seems not the `atol` which set
> by `KSPSetTolerances()`.
> (I set atol as 1e-12, but got 5e-7 finally)
> (options:  -ksp_type cg -pc_type gamg -ksp_converged_reason -ksp_norm_type
> unpreconditioned -ksp_monitor_true_residual)
>

If you are using the default convergence test, there is an absolute
tolerance (atol) _and_ a relative tolerance (rtol). It seems likely you hit
the relative tolerance. You can check this using

  -ksp_converged_reason

You could make rtol really small if you want to just see the atol

  -ksp_rtol 1e-20

  Thanks,

     Matt


> I also check the soure code of `KSPSolve_CG` in
> `petsc/src/ksp/ksp/impls/cg/cg.c`. And could not figure out where is the
> difference.
>
> I will really really appreciated if someone can explain the calculation of
> `resid norm` in petsc. And where is my mistake.
>
> To provide you with more context, here are the source code about my
> implementation. And the output of my test.
>
> main.c
> Main code of my program
>
> mmio.h  mmloader.h
> Headers for matrix read
>
> Makefile
> For compiling, same as sample provided
>
> task.sh
> A script for running program in `slurm`
>
> slurm-4803840.out
> Output of my test
>
> Thank you very much for your time and attention. I greatly appreciate your
> support and look forward to hearing from you soon.
> Best regards,
> Hemeng Wang
>
>

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

Reply via email to