<< Click to Display Table of Contents >> smoothing_discontinuities |
{ SMOOTHING_DISCONTINUITIES.PDE
This problem is a variation of DIFFUSION.PDE.
It employs an approximation to smooth the effects of discontinuous initial conditions.
We specify a discontinuous initial condition, zero internally with a value of 1.0 on the boundary.
The equation is div(D*grad(u)) = dt(u).
A first-order backward finite-difference approximation to the time derivative is dt(u) ~ (u-u0)/deltat0.
This creates an implicit steady-state equation for the value at the end of the initial time deltat0:
div(D*grad(u)) = (u - u0)/deltat0.
We use the INITIAL EQUATIONS facility to solve this system before beginning the time evolution.
}
title 'Masked Diffusion'
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
cexact1d = concs*erfc(x/(2*sqrt(D*t)))
uexact1d = erfc(x/(2*sqrt(D*t))) { masked surface flux multiplier }
M = upulse(y-0.3,y-0.7)
u0 = 0
dt0 = 0.05
initial equations
u: div(D*grad(u)) = (u - u0)/dt0 ! finite difference over time for a first step
equations
u : div(D*grad(u)) = dt(u)
boundaries
region 1
start(0,0)
natural(u) = 0
line to (1,0) to (1,1) to (0,1)
value(u) = M
line to close
feature { a "gridding feature" to help localize the activity }
start (0.02,0.3) line to (0.02,0.7)
time dt0 to 1 by 0.001
plots
for t=dt0 0.1 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