2011/4/9 Gong Ding <span dir="ltr"><<a href="mailto:gdiso@ustc.edu">gdiso@ustc.edu</a>></span><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi all,<br>
In the past several weeks, I am dealing with the nearly singular problem.<br>
The structure has a metal connected two semiconductor devices. when two devices are both shutdown with high resistance,<br>
the metal connector is floating.<br>
This singular problem finally be shifted to well conditioned by simple pseudo time method --<br>
just introducing pseudo time to the nearly floating domain (as a capacity to ground).<br>
Now iterative method works well.<br>
<br>
Here, I must give thanks to Jose Roman, the slepc package gives quick evaluation<br>
of eigen value of the jacobian matrix. I can easliy target where the singular arising.<br>
And it helps to determine the pseudo time step.<br>
<br>
And to Matt and Jed, thank you for the idea of null sapce.<br>
Pseudo time method is not as efficient as null space dropping.<br>
I guess the algorithm to nonlinear singular problem should<br>
1) drop null space within krylov iteration<br></blockquote><div><br></div><div>Yes, you can do this using KSPSetNullSpace()</div><div><br></div><div> <a href="http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/KSP/KSPSetNullSpace.html">http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-current/docs/manualpages/KSP/KSPSetNullSpace.html</a></div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2) SNES should know the null vector and do a search in the direction of null vector to find the root.<br></blockquote><div><br></div><div>I am not sure why this is necessary. Since KSP will project out the nullspace in each Newton solve,</div>
<div>it should not appear in the update. Unless it is a component of the solution (which would be strange since</div><div>the Jacobian gives no information about it), in which case you can add that as the initial guess.</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;">
Do you think I am in the right way?<br>
<font color="#888888"><br>
Gong Ding<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</font></blockquote></div><br><br clear="all"><br>-- <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<br>