Poisson's Equation

From Flooxs
Revision as of 17:34, 28 January 2010 by Nrowsey (talk | contribs)
Jump to navigation Jump to search

Quick Guide

Use Tcl to define the constants you will use

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
#assume Nd and Na are defined elsewhere (or set them here and use the $)

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

Call this Procedure to Add Poisson's Equation for Any Material

# you must have already defined Er (relative permittivity) in the pdb for the material you call
# 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
AddPoisson Oxide

Call this Procedure to Add Any Charge to Poisson's Equation

#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