[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