The ``silicon_dd'' system solves for psi, electrons, and holes.
or, with the carrier fluxes written more explicitly:
where the quantities in brackets are the negatives of the carrier fluxes,
implemented by the ``ncflux'' flux term. For reference,
and
.
This system requires ``netdope'' to be defined after the structure is created with grid and deposit statements.
An implementation of this system is given below.
system name=silicon_dd
+ sysvars=psi,electrons,holes
+ term0=dirichlet.device_dirichlet_h(netdope,ni,nc,nv|psi,electrons,holes)
@{silicon/gate,poly/gate,silicon/back,silicon/source,silicon/drain,oxide/gate,si
licon/substrate}
+ term1=ndiv_fbm.lapflux(psi|psi)@{silicon,poly,oxide}
+ term2=nodal.nscd(electrons,holes,netdope|psi)@{silicon,poly}
+ term3=ndiv_fbm.ncflux(psi,electrons,tl,nmob0,nin,edge|electrons)@{silico
n,poly}
+ term4=ndiv_fbm.ncflux(psi,holes,tl,pmob0,nip,edge|holes)@{silicon,poly}
+ term5=constraint.continuity(psi|psi)@{silicon/oxide,poly/oxide}
+ term6=transient.ddt(electrons,holes|electrons,holes)@{silicon,poly}
+ term7=nodal.srh(electrons,holes,ni,taun,taup|electrons)@{silicon,poly}
+ term8=nodal.srh(electrons,holes,ni,taun,taup|holes)@{silicon,poly}
+ tmpvars=eg,nc,nv,ni,nmob0,pmob0,kappa,nin,nip,taun,taup
+ func0=eg(tl,netdope|eg)@{silicon,poly}
+ func1=dos(electrons,holes,tl|nc,nv)@{silicon,poly}
+ func2=ni(tl,eg,nc,nv|ni)@{silicon,poly}
+ func3=mob0(electrons,holes,tl,netdope|nmob0,pmob0)@{silicon,poly}
+ func4=kappa(tl|kappa)@{silicon,poly,oxide}
+ func5=nic(ni,nc,electrons,tl|nin)@{silicon,poly}
+ func6=nic(ni,nv,holes,tl|nip)@{silicon,poly}
+ func7=tau(electrons,holes,netdope|taun,taup)@{silicon,poly}