Poisson's Equation
Quick Guide
set ep0 8.85418e-14;#F/cm - vacuum permittivity - this is SI units w/ cm set eps_Si 11.8;# relative permittivity set q 1.60218e-19;#C - elementary unit of charge - this is SI units
Poisson's Equation for Silicon
#you must have Na and Nd defined in your doping step set eqnP "($ep0*$eps_Si/$q)*grad(DevPsi) - Elec + Hole - Na + Nd";#define a local string pdbSetString Silicon DevPsi Equation "$eqnP";# use $eqnP=0 to solve for DevPsi in the Silicon
Poisson's Equation in Oxide
set ep0 8.85418e-14;#F/cm - vacuum permittivity - this is SI units w/ cm set eps_ox 3.9;# relative permittivity #you can add ionized dopants to your oxide, but eqnPox equation ignores them, so they have no effect set eqnPox "$ep0*$eps_ox*grad(DevPsi) - Elec + Hole";#define a local string pdbSetString Oxide DevPsi Equation "$eqnPox";# use $eqnPox=0 to solve for DevPsi in the Oxide
A More General Approach
# you must have already defined Er (relative permittivity) in the pdb # you must have defined ep0 and q outside this procedure proc AddPoisson {Mat} { global ep0 q #pdbSetDouble $Mat DevPsi DampValue 0.00431;# lowest Vt (T=50K) pdbSetDouble $Mat DevPsi DampValue 0.025 set Er [pdbGetDouble $Mat DevPsi Er] set eps [expr {$Er*$ep0/$q}] set eqnP "$eps*grad(DevPsi)"; #Poisson's equation, we'll add the charge terms later as we go along puts "Adding Poisson Equation in $Mat: $eqnP" pdbSetString $Mat DevPsi Equation "$eqnP" } #Example: #AddPoisson Silicon
#you must add +Doping to the Poisson Equation in Silicon, but not in Oxide proc AddCharge {Mat Q} { if {[pdbIsAvailable $Mat DevPsi Equation]} {
set eqnP [pdbGetString $Mat DevPsi Equation] set eqnP [append eqnP "+($Q)"] pdbSetString $Mat DevPsi Equation $eqnP puts "Adding ($Q) to Poisson Eqn in $Mat: $eqnP"
} else {puts "you don't have DevPsi in the $Mat!"}
} #Example: #AddCharge Silicon Doping;#Doping is defined elsewhere as (Nd-Na) #AddCharge Oxide Voplus;#a charged trap species