SET - Simple Example

From Flooxs
Revision as of 06:29, 17 November 2010 by Danieljc (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
DevicePackage
#Create Structure
line x loc=0.0 tag=top spa=0.05
line x loc=0.02 spa=0.05 
line x loc=10.0 spa=1.0 
line x loc=30.0 spa=5.0 
line x loc=40.0 tag=bot spa=5.0 
line y loc=0.0 tag=left spa=4
line y loc=15.0 spa=0.02
line y loc=30.0 tag=right spa=4
region silicon xlo=top xhi=bot ylo=left yhi=right
init 
if {1} {
#Define Contacts
contact name=VCC silicon xlo=-1.0 xhi=0.0 ylo=0 yhi=110 depth=1 width=1 add 
contact name=GND silicon xlo=39.0 xhi=110 ylo=0 yhi=110 depth=1 width=1 add 
#Plotting Options
#plot.2d grid 
#plot.2d bound 
#plot.2d contact=VCC !cle
#plot.2d contact=GND !cle
set T 300
set k 1.38066e-23
set q 1.619e-19
set Vt [expr {$k*$T/$q}]
set ni 1.1e10
set esi [expr 11.8 * 8.85418e-14]
set eps [expr $esi / $q]   
#define doping
sel z=1.0e20*(x<=0.2)+1.0e12 name=ND
sel z=1.0e18*(x<=1.0)+1.0e16 name=NA
sel z=ND-NA name=Doping 
#make sure models.v4 is in same directory or else define custom path
source modelsv4.doc
#Setup Solution Variables: Elec, Hole, DevPsi
solution name=Potential nosolve
solution add name=DevPsi solve negative damp
solution add name=Elec solve !negative
solution add name=Hole solve !negative
solution add name=Qfn const solve val= "DevPsi + $Vt*log(Hole/$ni)"
solution add name=Qfp const solve val= "DevPsi - $Vt*log(Elec/$ni)"
mobility.radiation 300
RG.SRH
RG.Auger
set T 300
set k 1.38066e-23
set q 1.619e-19
set Vt [expr {$k*$T/$q}]
set ni 1.1e10
set esi [expr 11.8 * 8.85418e-14]
set eps [expr $esi / $q]
set Emob 200.0
set Hmob 100.0 
#Poisson, Continuity Equations
set eqnP "$eps * grad(DevPsi) + Doping - Elec + Hole"
set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) "
set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt) "
#with Recombination-Generation
#set eqnE "ddt(Elec) - ($Emob) * $Vt * sgrad(Elec, DevPsi/$Vt) + R_SRH + R_Auger "
#set eqnH "ddt(Hole) - ($Hmob) * $Vt * sgrad(Hole, -DevPsi/$Vt)  + R_SRH + R_Auger " 
pdbSetDouble Si DevPsi DampValue $Vt
pdbSetDouble Si DevPsi Abs.Error 1.0e-9
pdbSetString Si DevPsi Equation $eqnP
pdbSetString Si Elec Equation $eqnE
pdbSetDouble Si Elec Abs.Error 1.0e-1
pdbSetString Si Hole Equation $eqnH
pdbSetDouble Si Hole Abs.Error 1.0e-1
InitialGuess Doping
#Until Mixed-Mode implemented, Schotcky contact must be used to estimate load
n.sch.contact Si VCC 2e3
p.sch.contact Si GND 2e3
#ohmic.contact VCC
#ohmic.contact GND
contact name=VCC voltage supply=0.0
contact name=GND voltage supply=0.0
device
set WinA [CreateGraphWindow]
set bias 0.0
for {set bias 0.0} {$bias <= 5.01} {set bias [expr $bias+0.5]} {
	contact name=VCC supply = $bias 
	device
	puts "Electron Flux [contact name=VCC sol=Elec flux]"
	puts "Hole Flux [contact name=VCC sol=Hole flux]"
	set cur [expr [contact name=VCC sol=Hole flux] - [contact name=VCC sol=Elec flux] ]
	AddtoLine $WinA I_DC $bias $cur
	sel z=log10(Elec)
	plot.1d y.v=15 z.v=0.0 label=Elec !cle
	sel z=log10(Hole)
 	plot.1d y.v=15 z.v=0.0 label=Hole !cle
}
#Simple Gaussian to model e-h pairs generated by particle strike
sel z=2.46e19*exp(-(y-15.0)*(y-15.0)/(0.05^2))*(x<=20.0) name=Dist
sel z=Elec+Dist+1.0 name=Elec
sel z=Hole+Dist+1.0 name=Hole
set Win2 [CreateGraphWindow]
device time=1.0e-5 movie = {
   set tim [simGetDouble Device time]
   set cur [expr abs([contact name=VCC sol=Elec flux] - [contact name=VCC sol=Hole flux])]
   AddtoLine $Win2 It_tot $tim $cur
}
}
}