[petsc-users] non linear solver options

Dharmendar Reddy dharmareddy84 at gmail.com
Sat Jan 18 18:18:32 CST 2014


On Sat, Jan 18, 2014 at 3:52 PM, Matthew Knepley <knepley at gmail.com> wrote:
> On Sat, Jan 18, 2014 at 2:52 PM, Dharmendar Reddy <dharmareddy84 at gmail.com>
> wrote:
>>
>> Hello,
>>                  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
>
>
> This is important, and is why Gummel's method was invented. These guys
> discuss
> it (http://www.iue.tuwien.ac.at/phd/pourfath/node89.html), and point out
> that Newton
> can be hard to converge. I suspect that preconditioning Newton with
> something that
> looks like Gummel is the way to go.
>
Hello, The algorithm described in the above link is a more accurate
version (called Non Equilibrium Greens Function method for quantum
transport) of the drift diffusion transport problem. I have part of it
coded, and i could not get the convergence work well.

The problem is basically,

-del (grad(psi)) = n(psi) + C  (1)
V = diagMatrix(psi)
and n(psi) =  diagonal elements of integral ( inv (E - H - V ) dE ) .
H is called Hamiltonian matrix
now n(psi) has no closed form expression, In which case it is
numerically very expensive to calculate the Jacobin for equation (1).
The Gummel method is then a method for approximate expression for
n(psi) which is similar to the classical expressions used in drift
diffusion model.

I am working on a problem where on a large part of the mesh, i will
solve drift diffusion model and on a small part of the mesh, i will
used the more accurate greens function method.

I appreciate any help in methods for stabilizing the above mentioned algorithm.

Thanks
Reddy


> If you get this coded up, we can help you experiment with nonlinear
> preconditioning.
> Gummel is really a particular kind of nonlinear FieldSplit.
>
>    Thanks,
>
>      Matt
>
>>
>> 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.
>>
>> 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)
>> 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.
>>
>> Can i get the work done with existing petsc routines/ options ?
>>
>> Do i need to impliment the update method via SNESPOSTCheck  ?
>>
>>
>> Thanks
>> Reddy
>
>
>
>
> --
> What most experimenters take for granted before they begin their experiments
> is infinitely more interesting than any results to which their experiments
> lead.
> -- Norbert Wiener



-- 
-----------------------------------------------------
Dharmendar Reddy Palle
Graduate Student
Microelectronics Research center,
University of Texas at Austin,
10100 Burnet Road, Bldg. 160
MER 2.608F, TX 78758-4445
e-mail: dharmareddy84 at gmail.com
Phone: +1-512-350-9082
United States of America.
Homepage: https://webspace.utexas.edu/~dpr342


More information about the petsc-users mailing list