Poisson's Equation: Difference between revisions

From Flooxs
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 1: Line 1:
= Quick Guide =
= Quick Guide =
=== Set error tolerances in the parameter database (pdb) ===
pdbSetDouble Silicon DevPsi DampValue 0.025;#0.025 is Vt, or kt/q
pdbSetDouble Oxide DevPsi DampValue 0.025
=== Use Tcl to define the constants you will use ===
=== 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 ep0 8.85418e-14;#F/cm - vacuum permittivity - this is SI units w/ cm
Line 6: Line 10:
  #assume Nd and Na are defined elsewhere (or set them here and use the $)
  #assume Nd and Na are defined elsewhere (or set them here and use the $)


=== Poisson's Equation for Silicon ===
=== 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
  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
  pdbSetString Silicon DevPsi Equation "$eqnP";# use $eqnP=0 to solve for DevPsi in the Silicon


==== Poisson's Equation in Oxide ==
=== Poisson's equation in oxides ===
  set ep0 8.85418e-14;#F/cm - vacuum permittivity - this is SI units w/ cm
  set ep0 8.85418e-14;#F/cm - vacuum permittivity - this is SI units w/ cm
  set eps_ox 3.9;# relative permittivity
  set eps_ox 3.9;# relative permittivity
Line 21: Line 24:


= A More General Approach =
= A More General Approach =
=== Call this Procedure to Add Poisson's Equation for Any Material ===
You can add these procedures to your code, and them call them for each material, and each charged species. You must also store the relative permittivity of each material you are adding in the parameter database in the following manner:
#pdb example:
pdbSetDouble Silicon DevPsi Er 11.8
pdbSetDouble Oxide  DevPsi Er 3.9
You must also define elementary charge q, and vacuum permittivity ep0 outside these procedures:
set q  1.60218e-19;#C    - elementary unit of charge - this is SI units
set ep0 8.85418e-14;#F/cm - vacuum permittivity - for Poisson - this is SI units w/ cm
 
=== 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 already defined Er (relative permittivity) in the pdb for the material you call
  # you must have defined ep0 and q outside this procedure
  # you must have defined ep0 and q outside this procedure
Line 38: Line 49:
  AddPoisson Oxide
  AddPoisson Oxide


=== Call this Procedure to Add Any Charge to Poisson's Equation ===
=== 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
  #you must add +Doping to the Poisson Equation in Silicon, but not in Oxide
  proc AddCharge {Mat Q} {
  proc AddCharge {Mat Q} {
     if {[pdbIsAvailable $Mat DevPsi Equation]} {
     if {[pdbIsAvailable $Mat DevPsi Equation]} {
set eqnP [pdbGetString $Mat DevPsi Equation]
        set eqnP [pdbGetString $Mat DevPsi Equation]
set eqnP [append eqnP "+($Q)"]
        set eqnP [append eqnP "+($Q)"]
pdbSetString $Mat DevPsi Equation $eqnP
        pdbSetString $Mat DevPsi Equation $eqnP
puts "Adding ($Q) to Poisson Eqn in $Mat: $eqnP"
        puts "Adding ($Q) to Poisson Eqn in $Mat: $eqnP"
     } else {puts "you don't have DevPsi in the $Mat!"}
     } else {puts "you don't have DevPsi in the $Mat!"}
  }
  }
  #Example:
  #Example:
  AddCharge Silicon Doping;#Doping is defined elsewhere as (Nd-Na)
  AddCharge Silicon Doping;#Doping is defined elsewhere as (Nd-Na)
  AddCharge Oxide Voplus;#a charged trap species
  AddCharge Oxide Voplus;#a charged trap species

Revision as of 17:50, 28 January 2010

Quick Guide

Set error tolerances in the parameter database (pdb)

pdbSetDouble Silicon DevPsi DampValue 0.025;#0.025 is Vt, or kt/q
pdbSetDouble Oxide DevPsi DampValue 0.025

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

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 oxides

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 can add these procedures to your code, and them call them for each material, and each charged species. You must also store the relative permittivity of each material you are adding in the parameter database in the following manner:

#pdb example:
pdbSetDouble Silicon DevPsi Er 11.8
pdbSetDouble Oxide   DevPsi Er 3.9

You must also define elementary charge q, and vacuum permittivity ep0 outside these procedures:

set q   1.60218e-19;#C    - elementary unit of charge - this is SI units
set ep0 8.85418e-14;#F/cm - vacuum permittivity - for Poisson - this is SI units w/ cm

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