1D PDE decoupling

124 Views Asked by At

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?

https://dl.dropboxusercontent.com/u/9287376/nlp.m

https://dl.dropboxusercontent.com/u/9287376/data.mat