Example (1D): Difference between revisions

From Flooxs
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 8: Line 8:
  pdbSetDouble Silicon Test Rel.Error 1.0e-2
  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.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


Gaussian implant profile
  #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
Line 21: Line 21:
  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
Line 29: Line 28:
  term name = TestActive add silicon eqn = "(Test>1.0e20)?1.0e20:Test"
  term name = TestActive add silicon eqn = "(Test>1.0e20)?1.0e20:Test"


 
Establish the physics
#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)"


Use "difuse" command to solve
  diffuse time = 60.0 temp=550 init=1.0e-1  
  diffuse time = 60.0 temp=550 init=1.0e-1  


Line 50: Line 47:
  sel z=log10(model)
  sel z=log10(model)
  plot.1d !cle max=0.06 min=0.0 label=analytical_diff
  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.


[[Image:diff.jpg]]
[[Image:diff.jpg]]

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.