Finite Difference Approximations

advertisement
Finite Difference Approximations
f ( x + dx) − f ( x)
∂x f ≈
dx
+
¾ Simple geophysical partial differential equations
¾ Finite differences - definitions
¾ Finite-difference approximations to pde‘s
¾ Exercises
¾ Acoustic wave equation in 2D
¾ Seismometer equations
¾ Diffusion-reaction equation
¾ Finite differences and Taylor Expansion
¾ Stability -> The Courant Criterion
¾ Numerical dispersion
Finite Differences
Computational Seismology
1
Partial Differential Equations in Geophysics
∂ 2t p = c 2 Δ p + s
Δ = ( ∂ 2x + ∂ 2y + ∂ 2z )
PP
cc
ss
pressure
pressure
acoustic
acousticwave
wavespeed
speed
sources
sources
∂ t C = kΔC − v • ∇C − RC + p
CC
kk
vv
RR
pp
Finite Differences
tracer
tracerconcentration
concentration
diffusivity
diffusivity
flow
flowvelocity
velocity
reactivity
reactivity
sources
sources
The acoustic
wave equation
- seismology
- acoustics
- oceanography
- meteorology
Diffusion, advection,
Reaction
- geodynamics
- oceanography
- meteorology
- geochemistry
- sedimentology
- geophysical fluid dynamics
Numerical methods: properties
Finite differences
- time-dependent PDEs
- seismic wave propagation
- geophysical fluid dynamics
- Maxwell’s equations
- Ground penetrating radar
-> robust, simple concept, easy to
parallelize, regular grids, explicit method
Finite elements
- static and time-dependent PDEs
- seismic wave propagation
- geophysical fluid dynamics
- all problems
-> implicit approach, matrix inversion, well founded,
irregular grids, more complex algorithms,
engineering problems
Finite volumes
- time-dependent PDEs
- seismic wave propagation
- mainly fluid dynamics
-> robust, simple concept, irregular grids, explicit
method
Finite Differences
Other numerical methods
Particle-based
methods
Boundary element
methods
Pseudospectral
methods
Finite Differences
- lattice gas methods
- molecular dynamics
- granular problems
- fluid flow
- earthquake simulations
-> very heterogeneous problems, nonlinear problems
- problems with boundaries (rupture)
- based on analytical solutions
- only discretization of planes
-> good for problems with special boundary conditions
(rupture, cracks, etc)
- orthogonal basis functions, special case of FD
- spectral accuracy of space derivatives
- wave propagation, ground penetrating radar
-> regular grids, explicit method, problems with
strongly heterogeneous media
What is a finite difference?
Common definitions of the derivative of f(x):
f ( x + dx) − f ( x)
∂ x f = lim
dx → 0
dx
f ( x) − f ( x − dx )
∂ x f = lim
dx → 0
dx
f ( x + dx) − f ( x − dx)
∂ x f = lim
dx → 0
2dx
These are all correct definitions in the limit dx->0.
But we want dx to remain FINITE
Finite Differences
What is a finite difference?
The equivalent approximations of the derivatives are:
f ( x + dx ) − f ( x)
∂x f ≈
dx
forward difference
f ( x) − f ( x − dx )
∂x f ≈
dx
backward difference
+
−
f ( x + dx) − f ( x − dx)
∂x f ≈
2dx
Finite Differences
centered difference
The
big question:
How good are the FD approximations?
This leads us to Taylor series....
Finite Differences
Taylor Series
Taylor series are expansions of a function f(x) for some
finite distance dx to f(x+dx)
2
3
4
dx
dx
dx
f ( x ± dx) = f ( x) ± dxf ' ( x) +
f '' ( x ) ±
f '' ' ( x ) +
f '''' ( x) ± ...
2!
3!
4!
What happens, if we use this expression for
f ( x + dx ) − f ( x)
∂x f ≈
dx
+
Finite Differences
?
Taylor Series
... that leads to :
2
3
⎤
f ( x + dx) − f ( x) 1 ⎡
dx
dx
'
''
' ''
=
f ( x) +
f ( x) + ...⎥
⎢dxf ( x) +
dx
dx ⎣
2!
3!
⎦
= f ' ( x) + O(dx)
The error of the first derivative using the forward
formulation is of order dx.
Is this the case for other formulations of the derivative?
Let’s check!
Finite Differences
Taylor Series
... with the centered formulation we get:
3
⎤
dx
f ( x + dx / 2) − f ( x − dx / 2) 1 ⎡
'
'''
=
f ( x) + ...⎥
⎢dxf ( x) +
dx
dx ⎣
3!
⎦
= f ' ( x) + O(dx 2 )
The error of the first derivative using the centered
approximation is of order dx2.
This is an important results: it DOES matter which formulation
we use. The centered scheme is more accurate!
Finite Differences
Alternative Derivation
f(x)
f ( xj )
x
dx
xj − 1
h
xj
xj + 1
xj + 2
xj + 3
desired x location
What is the (approximate) value of the function or its (first,
second ..) derivative at the desired location ?
How can we calculate the weights for the neighboring points?
Finite Differences
Alternative Derivation
f(x)
Lets’ try Taylor’s Expansion
f ( x)
x
dx
f ( x + dx) ≈ f ( x) + f ' ( x)dx
f ( x − dx) ≈ f ( x) − f ' ( x)dx
(1)
(2)
we are looking for something like
f
Finite Differences
(i )
( x ) ≈ ∑ w f ( xindex ( j ) )
j =1 , L
(i )
j
2nd order weights
deriving the second-order scheme …
af
bf
⇒ af
+
+ bf
+
≈ af + af 'dx
−
≈ bf − bf ' dx
−
≈ (a + b) f + (a − b) f ' dx
the solution to this equation for a and b leads to
a system of equations which can be cast in matrix form
Interpolation
a +b =1
a−b = 0
Finite Differences
Derivative
a+b = 0
a − b = 1 / dx
Taylor Operators
... in matrix form ...
Interpolation
⎛1
⎜⎜
⎝1
Derivative
1 ⎞⎛ a ⎞ ⎛ 1 ⎞
⎟⎟ ⎜⎜ ⎟⎟ = ⎜⎜ ⎟⎟
− 1 ⎠⎝ b ⎠ ⎝ 0 ⎠
⎛1
⎜⎜
⎝1
1 ⎞⎛ a ⎞ ⎛ 0
⎟⎟ ⎜⎜ ⎟⎟ = ⎜⎜
− 1 ⎠ ⎝ b ⎠ ⎝ 1 / dx
⎞
⎟⎟
⎠
... so that the solution for the weights is ...
⎛ a ⎞ ⎛1
⎜⎜ ⎟⎟ = ⎜⎜
⎝ b ⎠ ⎝1
Finite Differences
1 ⎞
⎟⎟
− 1⎠
−1
⎛1⎞
⎜⎜ ⎟⎟
⎝0⎠
⎛ a ⎞ ⎛1
⎜⎜ ⎟⎟ = ⎜⎜
⎝ b ⎠ ⎝1
1 ⎞
⎟⎟
− 1⎠
−1
⎛ 0
⎜⎜
⎝ 1 / dx
⎞
⎟⎟
⎠
Interpolation and difference weights
... and the result ...
Interpolation
⎛ a ⎞ ⎛1 / 2 ⎞
⎟⎟
⎜⎜ ⎟⎟ = ⎜⎜
⎝ b ⎠ ⎝1 / 2 ⎠
Derivative
⎛a⎞
1
⎜⎜ ⎟⎟ =
⎝ b ⎠ 2 dx
⎛ 1 ⎞
⎟⎟
⎜⎜
⎝ − 1⎠
Can we generalise this idea to longer operators?
Let us start by extending the Taylor expansion beyond f(x±dx):
Finite Differences
Higher order operators
*a |
( 2 dx ) 2
( 2 dx ) 3
f ( x − 2 dx ) ≈ f − ( 2 dx ) f '+
f ' '−
f '''
2!
3!
*b |
( dx ) 2
( dx ) 3
f ( x − dx ) ≈ f − ( dx ) f '+
f ' '−
f '''
2!
3!
*c |
( dx ) 2
( dx ) 3
f ( x + dx ) ≈ f + ( dx ) f '+
f ' '+
f '''
2!
3!
*d |
( 2 dx ) 2
( 2 dx ) 3
f ( x + 2 dx ) ≈ f + ( 2 dx ) f '+
f ' '+
f '''
2!
3!
... again we are looking for the coefficients a,b,c,d with which
the function values at x±(2)dx have to be multiplied in order
to obtain the interpolated value or the first (or second) derivative!
... Let us add up all these equations like in the previous case ...
Finite Differences
Higher order operators
af
−−
+ bf
−
+ cf
+
+ df
++
≈
f (a + b + c + d ) +
dxf ' ( − 2 a − b + c + 2 d ) +
dx
dx
3
b
c
+
+ 2d ) +
2
2
8
1
1
8
f '''(−
a −
b +
c +
d)
6
6
6
6
2
f ''(2 a +
... we can now ask for the coefficients a,b,c,d, so that the
left-hand-side yields either f,f’,f’’,f’’’ ...
Finite Differences
Linear system
... if you want the interpolated value ...
a + b + c + d = 1
− 2a − b + c + 2d = 0
2a +
b
c
+
+ 2d = 0
2
2
8
1
1
8
−
a −
b +
c +
d = 0
6
6
6
6
... you need to solve the matrix system ...
Finite Differences
High-order interpolation
... Interpolation ...
1
1
1 ⎞⎛ a ⎞ ⎛1⎞
⎛ 1
⎜
⎟⎜ ⎟ ⎜ ⎟
−1 1
2 ⎟⎜ b ⎟ ⎜0⎟
⎜ −2
=⎜ ⎟
⎜ 2
⎟
⎜
⎟
0
1/ 2 1/ 2 2 c
⎜
⎟⎜ ⎟ ⎜ ⎟
⎜ −8/ 6 −1/ 6 1/ 6 8/ 6⎟⎜ d ⎟ ⎜0⎟
⎝
⎠⎝ ⎠ ⎝ ⎠
... with the result after inverting the matrix on the lhs ...
⎛ a ⎞ ⎛ −1/ 6⎞
⎜ ⎟ ⎜
⎟
⎜ b ⎟ ⎜ 2/ 3 ⎟
⎜ c ⎟ = ⎜ 2/ 3 ⎟
⎜ ⎟ ⎜
⎟
⎜ d ⎟ ⎜ −1/ 6⎟
⎝ ⎠ ⎝
⎠
Finite Differences
First derivative
... first derivative ...
1
1
1 ⎞⎛ a ⎞ ⎛ 0 ⎞
⎛ 1
⎜
⎟⎜ ⎟ ⎜
⎟
−1 1
2 ⎟⎜ b ⎟ ⎜1/ dx⎟
⎜ −2
=⎜
⎜ 2
⎟
⎜
⎟
0 ⎟
1/ 2 1/ 2 2 c
⎜
⎟⎜ ⎟ ⎜
⎟
⎜ −8/ 6 −1/ 6 1/ 6 8/ 6⎟⎜ d ⎟ ⎜ 0 ⎟
⎝
⎠⎝ ⎠ ⎝
⎠
... with the result ...
⎛ a⎞
⎛ 1/ 6 ⎞
⎜ ⎟
⎜
⎟
⎜ b ⎟ 1 ⎜ − 4 / 3⎟
⎜ c ⎟ = 2dx⎜ 4 / 3 ⎟
⎜ ⎟
⎜
⎟
⎜d ⎟
⎜ −1/ 6 ⎟
⎝ ⎠
⎝
⎠
Finite Differences
Our first FD algorithm (ac1d.m) !
∂ 2t p = c 2 Δ p + s
Δ = ( ∂ 2x + ∂ 2y + ∂ 2z )
PP
cc
ss
pressure
pressure
acoustic
acousticwave
wavespeed
speed
sources
sources
Problem:
Problem:Solve
Solvethe
the1D
1Dacoustic
acousticwave
waveequation
equationusing
usingthe
thefinite
finite
Difference
Differencemethod.
method.
Solution:
Solution:
c 2 dt 2
[ p ( x + dx ) − 2 p ( x ) + p ( x − dx ) ]
p (t + dt ) =
2
dx
+ 2 p (t ) − p (t − dt ) + sdt 2
Finite Differences
Problems: Stability
c 2 dt 2
[ p ( x + dx ) − 2 p ( x ) + p ( x − dx ) ]
p ( t + dt ) =
2
dx
+ 2 p ( t ) − p ( t − dt ) + sdt 2
Stability:
Stability:Careful
Carefulanalysis
analysisusing
usingharmonic
harmonicfunctions
functionsshows
showsthat
that
aastable
stablenumerical
numericalcalculation
calculationisissubject
subjectto
tospecial
specialconditions
conditions
(conditional
(conditionalstability).
stability).This
Thisholds
holdsfor
formany
manynumerical
numericalproblems.
problems.
(Derivation
(Derivationon
onthe
theboard).
board).
dt
≤ ε ≈1
c
dx
Finite Differences
Problems: Dispersion
c 2 dt 2
[ p ( x + dx ) − 2 p ( x ) + p ( x − dx ) ]
p ( t + dt ) =
2
dx
+ 2 p ( t ) − p ( t − dt ) + sdt 2
True velocity
Finite Differences
Dispersion:
Dispersion:The
Thenumerical
numerical
approximation
approximationhas
has
artificial
artificialdispersion,
dispersion,
ininother
otherwords,
words,the
thewave
wave
speed
speedbecomes
becomesfrequency
frequency
dependent
dependent(Derivation
(Derivationinin
the
theboard).
board).
You
Youhave
haveto
tofind
findaa
frequency
frequencybandwidth
bandwidth
where
wherethis
thiseffect
effectisissmall.
small.
The
Thesolution
solutionisisto
touse
useaa
sufficient
sufficientnumber
numberof
ofgrid
grid
points
per
wavelength.
points per wavelength.
Our first FD code!
c 2 dt 2
[ p ( x + dx ) − 2 p ( x ) + p ( x − dx ) ]
p ( t + dt ) =
2
dx
+ 2 p ( t ) − p ( t − dt ) + sdt 2
% Time stepping
for i=1:nt,
% FD
disp(sprintf(' Time step : %i',i));
for j=2:nx-1
d2p(j)=(p(j+1)-2*p(j)+p(j-1))/dx^2; % space derivative
end
pnew=2*p-pold+d2p*dt^2;
% time extrapolation
pnew(nx/2)=pnew(nx/2)+src(i)*dt^2;
% add source term
pold=p;
% time levels
p=pnew;
p(1)=0;
% set boundaries pressure free
p(nx)=0;
% Display
plot(x,p,'b-')
title(' FD ')
drawnow
end
Finite Differences
Snapshot Example
Velocity 5 km/s
3000
2500
Time (s)
2000
1500
1000
500
0
0
Finite Differences
1000
2000
3000
4000
Distance (km)
5000
Seismogram Dispersion
Finite Differences
Finite Differences - Summary
¾
¾
¾
¾
¾
Finite Differences
Conceptually the most simple of the numerical methods and
can be learned quite quickly
Depending on the physical problem FD methods are
conditionally stable (relation between time and space
increment)
FD methods have difficulties concerning the accurate
implementation of boundary conditions (e.g. free surfaces,
absorbing boundaries)
FD methods are usually explicit and therefore very easy to
implement and efficient on parallel computers
FD methods work best on regular, rectangular grids
Download