Initial Guess: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 37: | Line 37: | ||
Sometimes it is very hard to get convergence on your first try. For example, when Elec and Hole concentrations are very low. In this case, you can improve your initial guess by doing a Poisson-Only solve first (a DevPsi only solve). Then you can use your improved DevPsi solution as an initial guess to your full solve: | Sometimes it is very hard to get convergence on your first try. For example, when Elec and Hole concentrations are very low. In this case, you can improve your initial guess by doing a Poisson-Only solve first (a DevPsi only solve). Then you can use your improved DevPsi solution as an initial guess to your full solve: | ||
#===================================ponly===========================================# | #===================================ponly===========================================# | ||
# Solution Variables | # Solution Variables | ||
solution add name=DevPsi pde solve negative damp;#electrostatic potential (Device Psi) | solution add name=DevPsi pde solve negative damp;#electrostatic potential (Device Psi) | ||
solution add name=Elec const solve val = "(Elec0)";# electron concentration /cm^3 | solution add name=Elec const solve val = "(Elec0)";# electron concentration /cm^3 | ||
solution add name=Hole const solve val = "(Hole0)";# hole concentration /cm^3 | solution add name=Hole const solve val = "(Hole0)";# hole concentration /cm^3 | ||
pdbSetBoolean PoissonOnly | pdbSetBoolean PoissonOnly 1;#this flag controls if statements in supporting procedures | ||
# Bulk Equations | # Bulk Equations | ||
AddPoisson Oxide | AddPoisson Oxide | ||
AddPoisson Silicon | AddPoisson Silicon | ||
BandTerms Oxide Semiconductor;# sets Ec, Ev, nQFL, pQFL, Elec0, Hole0 | BandTerms Oxide Semiconductor;# sets Ec, Ev, nQFL, pQFL, Elec0, Hole0 | ||
BandTerms Silicon Semiconductor | BandTerms Silicon Semiconductor | ||
SetDoping | SetDoping | ||
#Poisson only - no cont. eqns - just add charge to Poisson in Mats that have charge | #Poisson only - no cont. eqns - just add charge to Poisson in Mats that have charge | ||
AddCharge Oxide "-Elec+Hole" | AddCharge Oxide "-Elec+Hole" | ||
AddCharge Silicon "-Elec+Hole" | AddCharge Silicon "-Elec+Hole" | ||
# Boundary Conditions | # Boundary Conditions | ||
solution name=DevPsi continuous | solution name=DevPsi continuous | ||
# Contact Equations | # Contact Equations | ||
MetalContact top Aluminum | MetalContact top Aluminum | ||
OhmicContact bot Silicon Ntype | OhmicContact bot Silicon Ntype | ||
# Initial Conditions - bias the Contacts to 0 | |||
# Initial Conditions | contact name=top voltage supply=0.0 | ||
contact name=bot voltage supply=0.0 | |||
#Initial guess | |||
# | |||
puts "You are Guessing" | puts "You are Guessing" | ||
sel z=-(4.8) name=DevPsi | sel z=-(4.8) name=DevPsi;#this value may be different depending on where your "0" is | ||
# Poisson-Only Solution (Finally we SS Solve) | # Poisson-Only Solution (Finally we SS Solve) | ||
device init | device init | ||
# Plots | # Plots | ||
PlotBands x.v=0 y.v=0 | |||
PlotConc ponly | |||
#end of Poisson only | #end of Poisson only | ||
pdbSetBoolean PoissonOnly 0 | pdbSetBoolean PoissonOnly 0;#turn off ponly flag | ||
#========================zerobias================================# | #========================zerobias================================# | ||
# Solution Variables - change all to pde | # Solution Variables - change all to pde | ||
solution name=DevPsi pde solve negative damp;#electrostatic potential (Device Psi) | |||
solution name=DevPsi pde solve negative damp;#electrostatic potential (Device Psi) | |||
solution name=Elec pde solve !negative;# electron concentration /cm^3 | solution name=Elec pde solve !negative;# electron concentration /cm^3 | ||
solution name=Hole pde solve !negative;# hole concentration /cm^3 | solution name=Hole pde solve !negative;# hole concentration /cm^3 | ||
# Bulk Equations | # Bulk Equations | ||
AddPoisson Oxide | AddPoisson Oxide | ||
AddPoisson Silicon | AddPoisson Silicon | ||
BandTerms Oxide Semiconductor;# sets Ec, Ev, nQFL, pQFL | BandTerms Oxide Semiconductor;# sets Ec, Ev, nQFL, pQFL | ||
BandTerms Silicon Semiconductor | BandTerms Silicon Semiconductor | ||
SetDoping | SetDoping | ||
AddSpecies Hole Oxide MOB 1.0e-5 + | AddSpecies Hole Oxide MOB 1.0e-5 + | ||
AddSpecies Elec Oxide MOB 20.0 - | AddSpecies Elec Oxide MOB 20.0 - | ||
Line 124: | Line 97: | ||
AddSpecies Elec Silicon MOB 300.0 - | AddSpecies Elec Silicon MOB 300.0 - | ||
# Boundary Conditions | # Boundary Conditions | ||
solution name=DevPsi continuous | solution name=DevPsi continuous | ||
# Contact Equations | # Contact Equations | ||
MetalContact top Aluminum | |||
OhmicContact bot Silicon Ntype | |||
#Initial Guess | #Initial Guess | ||
Line 146: | Line 115: | ||
struct outf=init.str | struct outf=init.str | ||
=== supporting procedures === | |||
* see [[Poisson's_Equation#A_More_General_Approach]] for AddPoisson and AddCharge | |||
* see [[Defining_Your_Band_Terms#A_More_General_Method]] for BandTerms | |||
* see [[Adding_Ionized_Dopants#support_procedures]] for SetDoping | |||
* see [[General_Equation_Builder]] for AddSpecies | |||
* see [[Device_Models#Contact_Physics]] for MetalContact and OhmicContact | |||
* see [[Plotting_Examples_-_new_short_version]] for PlotBands and PlotConc |
Revision as of 20:36, 17 August 2010
Procedures
Initial guess assumes charge neutrality
For Scharfetter-Gummel (Elec Hole DevPsi) solution
proc InitialGuess {Doping} { sel z= {(Doping>0.0) ? ( 0.025*log( (Doping+1.0e10) / 1.0e10)) : (-0.025*log(-(Doping+1.0e10) / 1.0e10))} name = DevPsi sel z=1.0e10*exp(DevPsi/0.025) name=Elec sel z=1.0e10*exp(-DevPsi/0.025) name=Hole sel z=0.0 name=Qfn sel z=0.0 name=Qfp }
For Quasi-Fermi Solution (Qfn Qfp DevPsi) solution
proc InitialGuessQF {Doping} { sel z= {(Doping>0.0) ? ( 0.025*log( (Doping+1.0e10) / 1.0e10)) : (-0.025*log(-(Doping+1.0e10) / 1.0e10))} name = DevPsi store sel z=1.0e10*exp((DevPsi)/0.025) name=Elec store sel z=1.0e10*exp((-DevPsi)/0.025) name=Hole store sel z=0.0 name=Qfn store sel z=0.0 name=Qfp store }
For Slotboom (SBn SBp DevPsi) solution
proc InitialGuessSB {Doping} { sel z= {(Doping>0.0) ? ( 0.025*log( (Doping+1.0e10) / 1.0e10)) : (-0.025*log(-(Doping+1.0e10) / 1.0e10))} name = DevPsi store sel z=1.0e10*exp((DevPsi)/0.025) name=Elec sel z=1.0e10*exp((-DevPsi)/0.025) name=Hole sel z=1.0 name=SBn store sel z=1.0 name=SBp store }
Poisson-Only Solve as Initial Guess First
Sometimes it is very hard to get convergence on your first try. For example, when Elec and Hole concentrations are very low. In this case, you can improve your initial guess by doing a Poisson-Only solve first (a DevPsi only solve). Then you can use your improved DevPsi solution as an initial guess to your full solve:
#===================================ponly===========================================# # Solution Variables solution add name=DevPsi pde solve negative damp;#electrostatic potential (Device Psi) solution add name=Elec const solve val = "(Elec0)";# electron concentration /cm^3 solution add name=Hole const solve val = "(Hole0)";# hole concentration /cm^3 pdbSetBoolean PoissonOnly 1;#this flag controls if statements in supporting procedures # Bulk Equations AddPoisson Oxide AddPoisson Silicon BandTerms Oxide Semiconductor;# sets Ec, Ev, nQFL, pQFL, Elec0, Hole0 BandTerms Silicon Semiconductor SetDoping #Poisson only - no cont. eqns - just add charge to Poisson in Mats that have charge AddCharge Oxide "-Elec+Hole" AddCharge Silicon "-Elec+Hole" # Boundary Conditions solution name=DevPsi continuous # Contact Equations MetalContact top Aluminum OhmicContact bot Silicon Ntype # Initial Conditions - bias the Contacts to 0 contact name=top voltage supply=0.0 contact name=bot voltage supply=0.0 #Initial guess puts "You are Guessing" sel z=-(4.8) name=DevPsi;#this value may be different depending on where your "0" is # Poisson-Only Solution (Finally we SS Solve) device init # Plots PlotBands x.v=0 y.v=0 PlotConc ponly #end of Poisson only pdbSetBoolean PoissonOnly 0;#turn off ponly flag #========================zerobias================================# # Solution Variables - change all to pde solution name=DevPsi pde solve negative damp;#electrostatic potential (Device Psi) solution name=Elec pde solve !negative;# electron concentration /cm^3 solution name=Hole pde solve !negative;# hole concentration /cm^3 # Bulk Equations AddPoisson Oxide AddPoisson Silicon BandTerms Oxide Semiconductor;# sets Ec, Ev, nQFL, pQFL BandTerms Silicon Semiconductor SetDoping AddSpecies Hole Oxide MOB 1.0e-5 + AddSpecies Elec Oxide MOB 20.0 - AddSpecies Hole Silicon MOB 150.0 + AddSpecies Elec Silicon MOB 300.0 - # Boundary Conditions solution name=DevPsi continuous # Contact Equations MetalContact top Aluminum OhmicContact bot Silicon Ntype #Initial Guess #use DevPsi from ponly solve above sel z=Elec0 name=Elec;#is a fcn of DevPsi sel z=Hole0 name=Hole;#is a fcn of DevPsi pdbSetDouble Math iterLimit 50;#give SS a chance device #PlotBands x.v=0 y.v=0 #PlotConc zerobias struct outf=init.str
supporting procedures
- see Poisson's_Equation#A_More_General_Approach for AddPoisson and AddCharge
- see Defining_Your_Band_Terms#A_More_General_Method for BandTerms
- see Adding_Ionized_Dopants#support_procedures for SetDoping
- see General_Equation_Builder for AddSpecies
- see Device_Models#Contact_Physics for MetalContact and OhmicContact
- see Plotting_Examples_-_new_short_version for PlotBands and PlotConc