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
 
(2 intermediate revisions by the same user not shown)
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
Establish the grid and assign a material
line x loc=0.2 spac=0.001 tag=Bottom
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


region silicon xlo=Top xhi=Bottom
Gaussian implant profile
#fill in file name for as-implanted profile here
sel z=1.0e20*exp(-(x/0.001)*(x/0.001))+1.0e12 name=Test


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


#fill in file name for as-implanted profile here
#value for diffusivity goes here
sel z=1.0e20*exp(-(x/0.001)*(x/0.001))+1.0e12 name=Test
term name = TestDiff add silicon eqn = "4.0e-17"


#plot the the as-implanted profile
#solid-solubility limit stuff
sel z=log10(Test)
term name = TestActive add silicon eqn = "(Test>1.0e20)?1.0e20:Test"
plot.1d max=0.06 min=[list 0.0 12.0] label=implant


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


#value for diffusivity goes here
Use "difuse" command to solve
term name = TestDiff add silicon eqn = "4.0e-17"
diffuse time = 60.0 temp=550 init=1.0e-1


#solid-solubility limit stuff
#plot the the final profile
term name = TestActive add silicon eqn = "(Test>1.0e20)?1.0e20:Test"
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"
#term name = TestModel add silicon eqn = "(Test<=1.0e12)?0:Test"
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


The final plot is shown below. The numerical method slightly over-predicts the diffusion distance.


#simple Fick's law based diffusion equation
[[Image:diff.jpg]]
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
 
 
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

Latest revision as of 20:09, 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

Establish the grid and assign a material

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

Gaussian implant profile

#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"

Establish the physics

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

Use "difuse" command to solve

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

The final plot is shown below. The numerical method slightly over-predicts the diffusion distance.