<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Fri, Nov 29, 2013 at 1:11 AM, Justin Dong <span dir="ltr"><<a href="mailto:jsd1@rice.edu" target="_blank">jsd1@rice.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word">Hi all,<div><br></div><div>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.</div>
<div><br></div><div>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</div></div></blockquote><div><br></div>
<div>I still think your code has a problem. There should be no indefiniteness with the discretizations i am familiar with. Simplify the problem until</div><div>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</div>
<div>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</div><div>guessing you have an uninitialized variable. Check with valgrind.</div>
<div><br></div><div>� �Matt</div><div>�</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div> 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)</div>
<div><br></div><div></div><div><div style="margin:0px;font-size:11px;font-family:Menlo"></div><blockquote type="cite"><div style="margin:0px;font-size:11px;font-family:Menlo">student-113-wless94-099:NonlinearAdvectionDiffusion justindong$ ./main -pc_factor_shift_type POSITIVE_DEFINITE</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 1, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 1</div><div style="margin:0px;font-size:11px;font-family:Menlo">
Iteration: 1, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 1</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 1, Error: 0.000000e+00</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 1</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 1, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">
Iterations for convergence: 1</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 1, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 1</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">Error in L2-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">4.55137e-02�</div><div style="margin:0px;font-size:11px;font-family:Menlo">3.28222e-03�</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">2.24076e-04�</div><div style="margin:0px;font-size:11px;font-family:Menlo">1.41531e-05�</div><div style="margin:0px;font-size:11px;font-family:Menlo">8.87205e-07�</div>
<div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo">Error in H1-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">4.72542e-01�</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">6.63469e-02�</div><div style="margin:0px;font-size:11px;font-family:Menlo">9.33978e-03�</div><div style="margin:0px;font-size:11px;font-family:Menlo">1.18329e-03�</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">1.48449e-04�</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br></div><div style="margin:0px;font-size:11px;font-family:Menlo">Convergence in L2-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">3.793556�</div><div style="margin:0px;font-size:11px;font-family:Menlo">
3.872613�</div><div style="margin:0px;font-size:11px;font-family:Menlo">3.984794�</div><div style="margin:0px;font-size:11px;font-family:Menlo">3.995709�</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br></div><div style="margin:0px;font-size:11px;font-family:Menlo">Convergence in H1-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">2.832342�</div><div style="margin:0px;font-size:11px;font-family:Menlo">
2.828567�</div><div style="margin:0px;font-size:11px;font-family:Menlo">2.980589�</div><div style="margin:0px;font-size:11px;font-family:Menlo">2.994760�</div></blockquote></div><div><br></div><div>But then this call gives a completely different result.</div>
<div><br></div><div><div style="margin:0px;font-size:11px;font-family:Menlo"></div><blockquote type="cite"><div style="margin:0px;font-size:11px;font-family:Menlo">student-113-wless94-099:NonlinearAdvectionDiffusion justindong$ ./main -pc_factor_shift_type POSITIVE_DEFINITE</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 1, Error: 1.116824e-01</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 2, Error: 1.788701e-14</div><div style="margin:0px;font-size:11px;font-family:Menlo">
Iterations for convergence: 2</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 1, Error: 4.592120e-02</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 2, Error: 6.520052e-03</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 3, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 3</div><div style="margin:0px;font-size:11px;font-family:Menlo">
Iteration: 1, Error: 4.706179e-02</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 2, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 2</div>
<div style="margin:0px;font-size:11px;font-family:Menlo">Iteration: 1, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 1</div><div style="margin:0px;font-size:11px;font-family:Menlo">
Iteration: 1, Error: 0.000000e+00</div><div style="margin:0px;font-size:11px;font-family:Menlo">Iterations for convergence: 1</div><div style="margin:0px;font-size:11px;font-family:Menlo">Error in L2-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">
1.20600e-01�</div><div style="margin:0px;font-size:11px;font-family:Menlo">4.33519e-02�</div><div style="margin:0px;font-size:11px;font-family:Menlo">4.70623e-02�</div><div style="margin:0px;font-size:11px;font-family:Menlo">
1.41531e-05�</div><div style="margin:0px;font-size:11px;font-family:Menlo">8.87205e-07�</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo">
Error in H1-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">6.04173e-01�</div><div style="margin:0px;font-size:11px;font-family:Menlo">1.72409e-01�</div><div style="margin:0px;font-size:11px;font-family:Menlo">
1.82071e-01�</div><div style="margin:0px;font-size:11px;font-family:Menlo">1.18329e-03�</div><div style="margin:0px;font-size:11px;font-family:Menlo">1.48449e-04�</div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px">
<br></div><div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo">Convergence in L2-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">
1.476068�</div><div style="margin:0px;font-size:11px;font-family:Menlo">-0.118478�</div><div style="margin:0px;font-size:11px;font-family:Menlo">11.699236�</div><div style="margin:0px;font-size:11px;font-family:Menlo">3.995709�</div>
<div style="margin:0px;font-size:11px;font-family:Menlo;min-height:13px"><br></div><div style="margin:0px;font-size:11px;font-family:Menlo">Convergence in H1-norm:</div><div style="margin:0px;font-size:11px;font-family:Menlo">
1.809128�</div><div style="margin:0px;font-size:11px;font-family:Menlo">-0.078670�</div><div style="margin:0px;font-size:11px;font-family:Menlo">7.265561�</div><div style="margin:0px;font-size:11px;font-family:Menlo">2.994760�</div>
</blockquote></div><div><br></div><div><br></div><div>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.</div>
</div></blockquote></div><br><br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener
</div></div>