<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sat, Jan 18, 2014 at 2:52 PM, Dharmendar Reddy <span dir="ltr"><<a href="mailto:dharmareddy84@gmail.com" target="_blank">dharmareddy84@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Hello,<br>
I am solving a set of equations with SNES<br>
F1 (x1,x2,x3) = 0<br>
F2 (x1,x2,x3) = 0<br>
F3 (x1,x2,x3) = 0<br>
<br>
The system of equations is shown on page 1 of pdf here<br>
<a href="http://dunham.ee.washington.edu/ee531/notes/SemiRev.pdf" target="_blank">http://dunham.ee.washington.edu/ee531/notes/SemiRev.pdf</a><br>
<br>
F1 = equation 1<br>
F2 = equation 2<br>
F3 = equation 5<br>
<br>
x1 = n, X2=p and X3 = psi,<br>
X1 and X2 have an exponential dependance on X1<br></blockquote><div><br></div><div>This is important, and is why Gummel's method was invented. These guys discuss</div><div>it (<a href="http://www.iue.tuwien.ac.at/phd/pourfath/node89.html">http://www.iue.tuwien.ac.at/phd/pourfath/node89.html</a>), and point out that Newton</div>
<div>can be hard to converge. I suspect that preconditioning Newton with something that</div><div>looks like Gummel is the way to go.</div><div><br></div><div>If you get this coded up, we can help you experiment with nonlinear preconditioning.</div>
<div>Gummel is really a particular kind of nonlinear FieldSplit.</div><div><br></div><div> Thanks,</div><div><br></div><div> Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
after i scale the variables, X3 typically varies between say +/- 100<br>
where as X1 and X2 vary between 0 to 2. norm(X) then may usually<br>
dominated by solution values of X3.<br>
<br>
Can you suggest me the snes options that i need to use to achieve the following:<br>
<br>
1. X1 > 0 and X2 > 0 (as per previous emails, i can use SNESSetVariableBounds)<br>
2. I want the updates to solution to have an adaptive stepping based<br>
on norm of (F) or norm(X). If norm(F) is decreasing as the iteration<br>
progresss, larger stepping others wise reduce the step size..<br>
Similarly for Norm of X.<br>
<br>
Can i get the work done with existing petsc routines/ options ?<br>
<br>
Do i need to impliment the update method via SNESPOSTCheck ?<br>
<br>
<br>
Thanks<br>
<span class=""><font color="#888888">Reddy<br>
</font></span></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>