I am trying to solve the Poisson equation in 2D for heterostructure devices. I have linearized the equation and discretized it using FDM. I am using BiCGStab to iteratively solve for the solution as follows:

Step 1: Solve $A^{(i-1)} x^{(i)} = b^{(i-1)}$ for $i = 1,\dots,N$ where convergence is reached

Step 2: Use $x^{i}$ to update the central coefficients of $A^{i-1}$ to get $A^{i}$ and similarly update $b^{i-1}$ to get $b^{i}$

Step 3: If $||x^{i}-x^{i-1}||_2$, the 2-norm of the solution update, is greater than a tolerance, then go back to Step 1 to solve the new system of equations using BiCGStab. Else, exit the loop.

  1. I am facing the following problem with this procedure: The 2-norm of the solution update is suddenly becoming zero after a few iterations in some cases. This behaviour is leading to "false convergences", in the sense that the solutions obtained are not physical. Similar behaviour was observed when I used SOR instead of BiCGStab. At this point, I am starting to suspect if it is wrong to use linear solvers on the Poisson equation which is a nonlinear equation (although linearized). If you could please comment on this, that would be very helpful.

Any help with this problem is greatly appreciated. Please let me know if you need any further information.

  • 1
    $\begingroup$ The Poisson problem I know is linear (en.wikipedia.org/wiki/Poisson%27s_equation). Can you clarify your problem further please? Are you working with a nonlinear variant of it, for example ( fenicsproject.org/docs/dolfin/1.4.0/python/demo/documented/… )? Nevertheless, there is nothing wrong with using linear solvers as long as you set the tolerances properly. $\endgroup$ Aug 22 '20 at 6:28
  • $\begingroup$ @AbdullahAliSivas The poisson equation that I am working with is this: $$ \nabla.\epsilon\nabla V(x) = - \frac{q}{\epsilon_o} (n_{ir}*e^{(\frac{-(V(x)-V_p)}{V_T})}-n_{ir}*e^{(\frac{V(x)+V_n}{V_T})}+DOP(x)) $$ Here, V(x) is the independent variable that is to be solved. I linearize this equation by assuming $$ V^{new} = V^{old} + \delta$$ where $\delta$ is the update, assumed to be small. This equation for $V^{new}$ is substituted in the above equation and then I use taylor series expansion to linearize the system. $\endgroup$
    – prananna
    Aug 22 '20 at 7:44
  • $\begingroup$ You could add the details in your comment to the post to better describe your problem. $\endgroup$
    – nicoguaro
    Aug 22 '20 at 15:11
  • $\begingroup$ @nicoguaro Could you let me know the details of the problem that you would like to know to help you better understand the problem? $\endgroup$
    – prananna
    Aug 23 '20 at 0:58
  • 1
    $\begingroup$ I bet you set your linear solver tolerance for BiCGstab in such a way that it stops after zero iterations and consequently returns with $x^i=x^{i-1}$. $\endgroup$ Aug 24 '20 at 13:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.