Example (1D): Difference between revisions

From Flooxs
Jump to navigation Jump to search
(New page: Diffusion of an implant profile. The numerical solution is compared to and analytical solution. Establish diffusion parameters and solution variable "Test" math diffuse dim=1 umf none c...)
 
No edit summary
Line 1: Line 1:
Diffusion of an implant profile.  The numerical solution is compared to and analytical solution.
This is an example that uses the "diffuse" command to predict diffusion of an implant profile.  The numerical solution is compared to an analytical solution.


Establish diffusion parameters and solution variable "Test"
Establish diffusion parameters and solution variable "Test"
Line 5: Line 5:
  solution add name=Test solve !negative  
  solution add name=Test solve !negative  


pdbSetDouble Silicon Test Abs.Error 1.0e-8
pdbSetDouble Silicon Test Abs.Error 1.0e-8
pdbSetDouble Silicon Test Rel.Error 1.0e-2
pdbSetDouble Silicon Test Rel.Error 1.0e-2


line x loc=0.0 spac=0.0002 tag=Top
line x loc=0.0 spac=0.0002 tag=Top
line x loc=0.2 spac=0.001 tag=Bottom
line x loc=0.2 spac=0.001 tag=Bottom


region silicon xlo=Top xhi=Bottom  
region silicon xlo=Top xhi=Bottom  


init
init


#fill in file name for as-implanted profile here
#fill in file name for as-implanted profile here
sel z=1.0e20*exp(-(x/0.001)*(x/0.001))+1.0e12 name=Test
sel z=1.0e20*exp(-(x/0.001)*(x/0.001))+1.0e12 name=Test


#plot the the as-implanted profile
#plot the the as-implanted profile
sel z=log10(Test)
sel z=log10(Test)
plot.1d max=0.06 min=[list 0.0 12.0] label=implant
plot.1d max=0.06 min=[list 0.0 12.0] label=implant




#value for diffusivity goes here
#value for diffusivity goes here
term name = TestDiff add silicon eqn = "4.0e-17"
term name = TestDiff add silicon eqn = "4.0e-17"


#solid-solubility limit stuff
#solid-solubility limit stuff
term name = TestActive add silicon eqn = "(Test>1.0e20)?1.0e20:Test"
term name = TestActive add silicon eqn = "(Test>1.0e20)?1.0e20:Test"


#
#term name = TestModel add silicon eqn = "(Test<=1.0e12)?0:Test"


#term name = TestModel add silicon eqn = "(Test<=1.0e12)?0:Test"




#simple Fick's law based diffusion equation
#simple Fick's law based diffusion equation
pdbSetString Silicon Test Equation "ddt(Test) - TestDiff * grad(TestActive)"
pdbSetString Silicon Test Equation "ddt(Test) - TestDiff * grad(TestActive)"


diffuse time = 60.0 temp=550 init=1.0e-1  
diffuse time = 60.0 temp=550 init=1.0e-1  


#plot the the final profile
#plot the the final profile
sel z=log10(Test)
sel z=log10(Test)
plot.1d !cle max=0.06 min=0.0 label=numerical_diff
plot.1d !cle max=0.06 min=0.0 label=numerical_diff


Use the "FindDose" command to intigrate the total implant dose and save as "dose"
sel z=Test
set dose [FindDose]


sel z=Test
#analytical model for drive-in diffusion
set dose [FindDose]
sel z = ($dose*1.0e4)/(sqrt(3.14*4.0e-17*1.0e8*60.0*60.0))*exp(-(x*x)/(4*4.0e-17*1.0e8*60.0*60.0))+1.0e12 name=model
sel z=log10(model)
plot.1d !cle max=0.06 min=0.0 label=analytical_diff


#analytical model for drive-in diffusion
[[Image:diff.jpg]]
sel z = ($dose*1.0e4)/(sqrt(3.14*4.0e-17*1.0e8*60.0*60.0))*exp(-(x*x)/(4*4.0e-17*1.0e8*60.0*60.0))+1.0e12 name=model
sel z=log10(model)
plot.1d !cle max=0.06 min=0.0 label=analytical_diff

Revision as of 19:59, 19 August 2010

This is an example that uses the "diffuse" command to predict diffusion of an implant profile. The numerical solution is compared to an analytical solution.

Establish diffusion parameters and solution variable "Test"

math diffuse dim=1 umf none col !scale
solution add name=Test solve !negative 
pdbSetDouble Silicon Test Abs.Error 1.0e-8
pdbSetDouble Silicon Test Rel.Error 1.0e-2
line x loc=0.0 spac=0.0002 tag=Top
line x loc=0.2 spac=0.001 tag=Bottom
region silicon xlo=Top xhi=Bottom 
init
#fill in file name for as-implanted profile here
sel z=1.0e20*exp(-(x/0.001)*(x/0.001))+1.0e12 name=Test
#plot the the as-implanted profile
sel z=log10(Test)
plot.1d max=0.06 min=[list 0.0 12.0] label=implant


#value for diffusivity goes here
term name = TestDiff add silicon eqn = "4.0e-17"
#solid-solubility limit stuff
term name = TestActive add silicon eqn = "(Test>1.0e20)?1.0e20:Test"


#term name = TestModel add silicon eqn = "(Test<=1.0e12)?0:Test"


#simple Fick's law based diffusion equation
pdbSetString Silicon Test Equation "ddt(Test) - TestDiff * grad(TestActive)"
diffuse time = 60.0 temp=550 init=1.0e-1 
#plot the the final profile
sel z=log10(Test)
plot.1d !cle max=0.06 min=0.0 label=numerical_diff

Use the "FindDose" command to intigrate the total implant dose and save as "dose"

sel z=Test
set dose [FindDose]
#analytical model for drive-in diffusion
sel z = ($dose*1.0e4)/(sqrt(3.14*4.0e-17*1.0e8*60.0*60.0))*exp(-(x*x)/(4*4.0e-17*1.0e8*60.0*60.0))+1.0e12 name=model 
sel z=log10(model)
plot.1d !cle max=0.06 min=0.0 label=analytical_diff