Solve the scaled stationary bipolar DD equation system using Newton's method.
[n, p, V, Fn, Fp, Jn, Jp, it, res] = secs1d_dd_newton (x, D, Vin, nin,
pin, l2, er, un,
up, theta, tn, tp,
Cn, Cp, toll, maxit)
input:
x spatial grid
D doping profile
pin initial guess for hole concentration
nin initial guess for electron concentration
Vin initial guess for electrostatic potential
l2 scaled Debye length squared
er relative electric permittivity
un electron mobility model coefficients
up electron mobility model coefficients
theta intrinsic carrier density
tn, tp, Cn, Cp generation recombination model parameters
toll tolerance for Gummel iterarion convergence test
maxit maximum number of Gummel iterarions
output:
n electron concentration
p hole concentration
V electrostatic potential
Fn electron Fermi potential
Fp hole Fermi potential
Jn electron current density
Jp hole current density
it number of Gummel iterations performed
res total potential increment at each step
The following code
% physical constants and parameters
secs1d_physical_constants;
secs1d_silicon_material_properties;
% geometry
L = 1e-6; % [m]
x = linspace (0, L, 10)';
sinodes = [1:length(x)];
% dielectric constant (silicon)
er = esir * ones (numel (x) - 1, 1);
% doping profile [m^{-3}]
Na = 1e20 * ones(size(x));
Nd = 1e24 * ones(size(x));
D = Nd-Na;
% externally applied voltages
V_p = 10;
V_n = 0;
% initial guess for phin, phip, n, p, V
Fp = V_p * (x <= L/2);
Fn = Fp;
p = abs(D)/2.*(1+sqrt(1+4*(ni./abs(D)).^2)).*(D<0)+...
ni^2./(abs(D)/2.*(1+sqrt(1+4*(ni./abs(D)).^2))).*(D>0);
n = abs(D)/2.*(1+sqrt(1+4*(ni./abs(D)).^2)).*(D>0)+...
ni^2./(abs(D)/2.*(1+sqrt(1+4*(ni./abs(D)).^2))).*(D<0);
V = Fn + Vth*log(n/ni);
% scaling factors
xbar = L; % [m]
nbar = norm(D, 'inf'); % [m^{-3}]
Vbar = Vth; % [V]
mubar = max(u0n, u0p); % [m^2 V^{-1} s^{-1}]
tbar = xbar^2/(mubar*Vbar); % [s]
Rbar = nbar/tbar; % [m^{-3} s^{-1}]
Ebar = Vbar/xbar; % [V m^{-1}]
Jbar = q*mubar*nbar*Ebar; % [A m^{-2}]
CAubar = Rbar/nbar^3; % [m^6 s^{-1}]
abar = xbar^(-1); % [m^{-1}]
% scaling procedure
l2 = e0*Vbar/(q*nbar*xbar^2);
theta = ni/nbar;
xin = x/xbar;
Din = D/nbar;
Nain = Na/nbar;
Ndin = Nd/nbar;
pin = p/nbar;
nin = n/nbar;
Vin = V/Vbar;
Fnin = Vin - log(nin);
Fpin = Vin + log(pin);
tnin = tn/tbar;
tpin = tp/tbar;
% mobility model accounting scattering from ionized impurities
u0nin = u0n/mubar;
uminnin = uminn/mubar;
vsatnin = vsatn/(mubar*Ebar);
u0pin = u0p/mubar;
uminpin = uminp/mubar;
vsatpin = vsatp/(mubar*Ebar);
Nrefnin = Nrefn/nbar;
Nrefpin = Nrefp/nbar;
Cnin = Cn/CAubar;
Cpin = Cp/CAubar;
anin = an/abar;
apin = ap/abar;
Ecritnin = Ecritn/Ebar;
Ecritpin = Ecritp/Ebar;
% tolerances for convergence checks
ptoll = 1e-12;
pmaxit = 1000;
% solve the problem using the Newton fully coupled iterative algorithm
[nout, pout, Vout, Fnout, Fpout, Jnout, Jpout, it, res] = secs1d_dd_newton (xin, Din,
Vin, nin, pin, l2, er,
u0nin, u0pin, theta, tnin,
tpin, Cnin, Cpin, ptoll, pmaxit);
% Descaling procedure
n = nout*nbar;
p = pout*nbar;
V = Vout*Vbar;
Fn = V - Vth*log(n/ni);
Fp = V + Vth*log(p/ni);
dV = diff(V);
dx = diff(x);
E = -dV./dx;
% compute current densities
[Bp, Bm] = bimu_bernoulli (dV/Vth);
Jn = q*u0n*Vth .* (n(2:end) .* Bp - n(1:end-1) .* Bm) ./ dx;
Jp = -q*u0p*Vth .* (p(2:end) .* Bm - p(1:end-1) .* Bp) ./ dx;
Jtot = Jn+Jp;
% band structure
Efn = -Fn;
Efp = -Fp;
Ec = Vth*log(Nc./n)+Efn;
Ev = -Vth*log(Nv./p)+Efp;
plot (x, Efn, x, Efp, x, Ec, x, Ev)
legend ('Efn', 'Efp', 'Ec', 'Ev')
axis tight
Produces the following figure
| Figure 1 |
|---|
![]() |
Package: secs1d