[petsc-users] non linear solver options
Karl Rupp
rupp at mcs.anl.gov
Sat Jan 18 15:54:49 CST 2014
Hi,
> I am solving a set of equations with SNES
> F1 (x1,x2,x3) = 0
> F2 (x1,x2,x3) = 0
> F3 (x1,x2,x3) = 0
>
> The system of equations is shown on page 1 of pdf here
> http://dunham.ee.washington.edu/ee531/notes/SemiRev.pdf
>
> F1 = equation 1
> F2 = equation 2
> F3 = equation 5
>
> x1 = n, X2=p and X3 = psi,
> X1 and X2 have an exponential dependance on X1
> after i scale the variables, X3 typically varies between say +/- 100
> where as X1 and X2 vary between 0 to 2. norm(X) then may usually
> dominated by solution values of X3.
If you are solving the drift-diffusion system for semiconductors, which
discretization do you use? How did you stabilize the strong advection?
> Can you suggest me the snes options that i need to use to achieve the following:
>
> 1. X1 > 0 and X2 > 0 (as per previous emails, i can use SNESSetVariableBounds)
Have you considered a transformation to quasi-fermi potentials, i.e.
n ~ exp(phi_n), p ~ exp(phi_p)
or Slotboom variables? This way you could get rid of the constraint
entirely. Even if you solve for (n,p,psi), my experience is that
positivity is preserved automatically when using a good discretization
and step size control.
> 2. I want the updates to solution to have an adaptive stepping based
> on norm of (F) or norm(X). If norm(F) is decreasing as the iteration
> progresss, larger stepping others wise reduce the step size..
> Similarly for Norm of X.
A good damping for the drift-diffusion system is tricky. I know a couple
of empirical expressions, but would be interested to know whether this
can be handled in a more black-box manner as well.
Best regards,
Karli
More information about the petsc-users
mailing list