proc BandGapNarrowing { } {
#this procedure modifies the expression for ni such that it
#then depends on doping (NA and ND). This is the "old Slotboom" model.
#only "ni" is used elsewhere in the example this was pulled from
set Vt300 0.02558
set ni300 1.1e10
set Eg300 1.1082
set Ebgn 9.0e-3;# eV
set Nref 1.0e17;# /cm3
solution add name=deltaEg solve const val=($Ebgn*(log((NA+ND)/$Nref)+sqrt((log((NA+ND)/$Nref))^2+0.5)))
solution add name=Eg solve const val=($Eg300+deltaEg)
solution add name=ni solve const val=($ni300*exp(deltaEg/(2.0*$Vt300)))
# solution add name=Egcond solve Silicon const val=(+Eg/2.0)
# solution add name=Egval solve Silicon const val=(-Eg/2.0)
# solution add name=Ncond solve Silicon const val=(2.51e19)
# solution add name=Nval solve Silicon const val=(2.51e19)
#spell it out for the contacts
set doping [pdbGetString ohmic.contact.doping]
set deltaEg [expr {$Ebgn*(log($doping/$Nref)+pow((pow((log($doping/$Nref)),2)+0.5),0.5))}]
puts "deltaEg is $deltaEg"
set ni [expr {$ni300*exp($deltaEg/(2.0*$Vt300))}]
pdbSetString contact.ni $ni
}
BandGapNarrowing