I need to solve the 1D nonlinear poisson equation and I thought of trying the fixed point decoupling technique. The equation is this:
$\frac{\partial^2 \phi(y)}{\partial y^2}=\frac{q}{\epsilon_s}\Bigl[n(y)\dot{}exp\Bigl(\frac{\phi(y)-\phi^{old}(y)}{V_T}\Bigr)-p(y)\dot{}exp\Bigl(\frac{\phi^{old}(y)-\phi(y)}{V_T}\Bigr)+D\Bigr]$
the iteration scheme I though about works as follows:
1) find
$F^{k+1}_i=a_i\phi_{i-1}^k+c_i\phi_{i+1}^k-\frac{q}{\epsilon_s}D$
2)use Newton's method to solve
$G_i(\phi)=\frac{q}{\epsilon_s}\Bigl[n_i\dot{}exp\Bigl(\frac{\phi_i-\phi_i^{old}(y)}{V_T}\Bigr)-p_i\dot{}exp\Bigl(\frac{\phi_i^{old}-\phi_i}{V_T}\Bigr)\Bigr]$
$b_i\phi^{k+1}_i+G(\phi_i^{k+1})-F_i^{k+1}=0$
which requires this iteration scheme:
$\delta^l_i=\frac{a_i\phi_i^{(k+1)l}+G_i(\phi_i^{(k+1)l})-F_i^{k+1}}{b_i+\partial G_i/\partial \phi_i}$
$\phi_i^{(k+1)(l+1)}=\phi_i^{(k+1)l}-\delta^l_i$
here a,b and c are vectors used to discretise the second derivative over a nonuniform 1D mesh using finite differences. Boundary conditions are simple: 1 at the first point and 0 at the last. So far, the math should be correct, but I'm having trouble with my matlab implementation. $\delta$ grows too large and the iterations are not converging. Something must be wrong, but I can't understand what it is. Any thoughts?