[petsc-users] PC factor shift type, random results?

Matthew Knepley knepley at gmail.com
Fri Nov 29 07:52:44 CST 2013


On Fri, Nov 29, 2013 at 1:11 AM, Justin Dong <jsd1 at rice.edu> wrote:

> Hi all,
>
> I’m solving a non-linear advection-diffusion problem in 2D and am testing
> the routine on various meshes. The non-linearity is handled via Newton’s
> method. If I consider the unit square [0,1]^2, my results were fine. I
> tried testing on [-1,1]^2 and got either garbage results or a warning about
> zero pivots.
>
> I thought my Jacobian might be computed incorrectly, but I think that
> isn’t the case since I applied -pc-factor_shift_type POSITIVE DEFINITE and
> miraculously got the
>

I still think your code has a problem. There should be no indefiniteness
with the discretizations i am familiar with. Simplify the problem until
you understand everything. Make it linear diffusion on the new grid. Should
be exactly the same as the old grid. If you get indefiniteness when
adding advection, go to the element that causes it and see what is
happening. None of the methods you use are non-deterministic, so I am
guessing you have an uninitialized variable. Check with valgrind.

   Matt


> correct result now. But in applying this factor shift over various trials
> on the same problem, the results seem to be pretty random. Since I am
> testing on manufactured solutions, I force the problem to be linear since I
> have prior knowledge of the exact solution and Newton’s method should
> converge in one iteration.  For instance, this is what the result should be
> (iterations and errors are for each Newton iteration)
>
> student-113-wless94-099:NonlinearAdvectionDiffusion justindong$ ./main
> -pc_factor_shift_type POSITIVE_DEFINITE
> Iteration: 1, Error: 0.000000e+00
> Iterations for convergence: 1
> Iteration: 1, Error: 0.000000e+00
> Iterations for convergence: 1
> Iteration: 1, Error: 0.000000e+00
> Iterations for convergence: 1
> Iteration: 1, Error: 0.000000e+00
> Iterations for convergence: 1
> Iteration: 1, Error: 0.000000e+00
> Iterations for convergence: 1
> Error in L2-norm:
> 4.55137e-02
> 3.28222e-03
> 2.24076e-04
> 1.41531e-05
> 8.87205e-07
>
> Error in H1-norm:
> 4.72542e-01
> 6.63469e-02
> 9.33978e-03
> 1.18329e-03
> 1.48449e-04
>
>
> Convergence in L2-norm:
> 3.793556
> 3.872613
> 3.984794
> 3.995709
>
> Convergence in H1-norm:
> 2.832342
> 2.828567
> 2.980589
> 2.994760
>
>
> But then this call gives a completely different result.
>
> student-113-wless94-099:NonlinearAdvectionDiffusion justindong$ ./main
> -pc_factor_shift_type POSITIVE_DEFINITE
> Iteration: 1, Error: 1.116824e-01
> Iteration: 2, Error: 1.788701e-14
> Iterations for convergence: 2
> Iteration: 1, Error: 4.592120e-02
> Iteration: 2, Error: 6.520052e-03
> Iteration: 3, Error: 0.000000e+00
> Iterations for convergence: 3
> Iteration: 1, Error: 4.706179e-02
> Iteration: 2, Error: 0.000000e+00
> Iterations for convergence: 2
> Iteration: 1, Error: 0.000000e+00
> Iterations for convergence: 1
> Iteration: 1, Error: 0.000000e+00
> Iterations for convergence: 1
> Error in L2-norm:
> 1.20600e-01
> 4.33519e-02
> 4.70623e-02
> 1.41531e-05
> 8.87205e-07
>
> Error in H1-norm:
> 6.04173e-01
> 1.72409e-01
> 1.82071e-01
> 1.18329e-03
> 1.48449e-04
>
>
> Convergence in L2-norm:
> 1.476068
> -0.118478
> 11.699236
> 3.995709
>
> Convergence in H1-norm:
> 1.809128
> -0.078670
> 7.265561
> 2.994760
>
>
>
> Since I’m still just testing various examples using my code, I could just
> run it until it gives me the correct result, but that seems silly. Is there
> anyway I can get consistent results? I know I can specify the amount of the
> shift, but since I’m not well versed in these solvers, I’m not sure what to
> specify.
>



-- 
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20131129/2ec9c920/attachment.html>


More information about the petsc-users mailing list