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}