﻿ Sample Problems > Applications > Misc > diffusion

# diffusion

Navigation:  Sample Problems > Applications > Misc >

# diffusion   { DIFFUSION.PDE

This problem considers the thermally driven diffusion of a dopant into

a solid from a constant source.  Parameters have been chosen to be those

typically encountered in semiconductor diffusion.

surface concentration = 1.8e20 atoms/cm^2

diffusion coefficient = 3.0e-15 cm^2/sec

The natural tendency in this type of problem is to start with zero

concentration in the material, and a fixed value on the boundary.  This

implies an infinite curvature at the boundary, and an infinite transport

velocity of the diffusing particles.  It also generates over-shoot

in the solution, because the Finite-Element Method tries to fit a step

A better formulation is to program a large input flux, representative of

the rate at which dopant can actually cross the boundary, (or approximately

the molecular velocity times the concentration deficiency at the boundary).

Here we use a masked source, in order to generate a 2-dimensional pattern.

This causes the result to lag a bit behind the analytical Plane-diffusion

result at late times.

}

title

variables

u(threshold=0.1)     { fraction of external concentration }

definitions

concs = 1.8e8             { surface concentration  atom/micron^3}

D = 1.1e-2               { diffusivity micron^2/hr}

conc = concs*u

uexact1d = erfc(x/(2*sqrt(D*t)))   { analytic solution to corresponding 1D problem }

cexact1d = concs*uexact1d

M = upulse(y-0.3,y-0.7)   { masked surface flux multiplier }

initial values

u = 0

equations

boundaries

region 1

start(0,0)

natural(u) = 0

line to (1,0) to (1,1) to (0,1)

natural(u) = 10*M*(1-u)

line to close

feature               { a "gridding feature" to help localize the activity }

start (0.02,0.3) line to (0.02,0.7)

time 0 to 1 by 0.001

plots

for t=1e-5 1e-4 1e-3 1e-2 0.05 by 0.05 to 0.2 by 0.1 to endtime

contour(u)

surface(u)

elevation(u,uexact1d) from (0,0.5) to (1,0.5)

elevation(u-uexact1d) from (0,0.5) to (1,0.5)

histories

history(u) at (0.05,0.5) (0.1,0.5) (0.15,0.5) (0.2,0.5)

end