lecture 22
DESCRIPTION
Lecture 22. MA471 Fall 2003. Advection Equation. Recall the 2D advection equation: We will use a Runge-Kutta time integrator and spectral representation in space. Periodic Data. Let’s assume we are given N values of a function f at N data points on the unit interval. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/1.jpg)
Lecture 22
MA471 Fall 2003
![Page 2: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/2.jpg)
Advection Equation
• Recall the 2D advection equation:
• We will use a Runge-Kutta time integrator and spectral representation in space.
0x yC C Ca a
t x y
![Page 3: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/3.jpg)
Periodic Data
• Let’s assume we are given N values of a function f at N data points on the unit interval.
• For instance N=8 on a unit interval:
0 1/8 2/8 3/8 4/8 5/8 6/8 7/8 8/8
![Page 4: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/4.jpg)
Discrete Fourier Transform• We can seek a trigonometric interpolation
of a function f as a linear combination of N (even) trigonometric functions:
• Such that:
/ 22
/ 2 1
ˆk N
ik xk
k N
If x f e
/ 22
/ 2 1
ˆ for 1,...,
where
j
k Nik x
j j kk N
j
f x If x f e j N
jx
N
![Page 5: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/5.jpg)
Transform
• The interpolation formula defines a linear system for the unknown fhat coefficients:
/ 22
/ 2 1
2
1
ˆ for 1,...,
1ˆ for k 1,...,2 2
j
j
k Nik x
j kk N
j Nik x
k jj
f f e j N
N Nf f e
N
Or:
ˆ
ˆ
ifft
fft
f f
f f
![Page 6: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/6.jpg)
Code for the DFT
![Page 7: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/7.jpg)
Code for Inverse
DFT
![Page 8: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/8.jpg)
Fast Fourier Transform
• See handout
![Page 9: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/9.jpg)
Spectral Derivative
• We can differentiate the interpolant by:
/ 22
/ 2 1
ˆ2k N
ik xk
k N
dIfx ik f e
dx
/ 22
/ 2 1
ˆk N
i kxk
k N
If x f e
![Page 10: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/10.jpg)
Detail
• We note that the derivative of the k=(N/2) mode
• is technically:
• However, as we show on the next slide – this mode has turning points at all the data points.
22
2
ˆiN
x
Ne f
22
2
ˆ22
iNx
N
iNe f
![Page 11: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/11.jpg)
Real Component of N/2 Mode
i.e. the slope of the k=(N/2) mode is zeroat all the 8 points..
![Page 12: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/12.jpg)
Modified Derivative Formula
• So we can create an alternative symmetric derivative formula:
/ 2 12
/ 2 1
1 ˆ22
k Nik x
kk N
dIfx ik f e
dx
![Page 13: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/13.jpg)
Spectral Differentiation Scheme
1) Use an fft to compute:
2) Differentiate in spectral space. i.e. compute:
ˆ for 1, 2,..., 1,0,1,...,2 2 2k
N N Nf k
ˆ2 for 1,..., 12 2ˆ
0 for 2
k
k
N Ni k f k
gN
k
![Page 14: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/14.jpg)
cont
3) Then:
4) Summary:a) fft transform data to compute coefficients
b) scale Fourier coefficients c) inverse fft (ifft) scaled coefficients
/ 2
/ 2 1
ˆk N
ikxk
k N
dIfx g e
dx
![Page 15: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/15.jpg)
Final Twist
• Matlab stores the coefficients from the fast Fourier transform in a slightly odd order:
• The derivative matrix will now be a matrix with diagonal entries:
0 1 11 1 2
2 2 22
ˆ ˆ ˆ ˆ ˆ ˆ, ,.., , , , ,...,ˆNN N Nf f ff f f f
2 0,1,.., 1, , 1, 2,..., 12 2 2
N N Ni
0
![Page 16: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/16.jpg)
Spectral Differentiation
Code
1) DFT data2) Scale Fourier
coefficients3) IFT scaled coefficients
![Page 17: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/17.jpg)
Two-Dimensional Fourier Transform
• We can now construct a Fourier expansion in two variables for a function of two variables..
• The 2D inverse discrete transform and discrete transform are:
/ 2/ 22 2
/ 2 1 / 2 1
2 22
1 1
ˆ for , 1,...,
1ˆ for j,k 1,...,2 2
n m
n m
j Nk Nij x ik y
nm jkk N j N
n N m Nij x ik y
jk nmn m
f f e e n m N
N Nf f e e
N
/ 2/ 22 2
/ 2 1 / 2 1
ˆ,j Nk N
ij x ik yjk
k N j N
If x y f e e
![Page 18: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/18.jpg)
Advection Equation
• Recall the 2D advection equation:
• We will use a Runge-Kutta time integrator and spectral representation in space.
0x yC C Ca a
t x y
![Page 19: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/19.jpg)
Runge-Kutta Time Integrator
• We will now discuss a particularly simple Runge-Kutta time integrator introduced by Jameson-Schmidt-Turkel
• The idea is each time step is divided into s substeps, which taken together approximate the update to s’th order.
![Page 20: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/20.jpg)
Side note: Jameson-Schmidt-Turkel Runge-Kutta Integrator
• Taylor’s theorem tell’s us that
• We will compute an approximate update as:
22
1 1* *
1
1 ...1! 2! !
for some ,1 !
ss
s s
s
dt d dt d dt dC t dt C t
dt dt s dt
dt d Ct t t t dt
s dt
22
1 ...1! 2! !
ssdt d dt d dt dC t dt C t
dt dt s dt
![Page 21: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/21.jpg)
JST Runge-Kutta
• The numerical scheme will look like
• We then factorize the polynomial derivative term:
22
221
1 ...1! 2! !
1 ...1! 2! !
ss
ssn n
dt d dt d dt dC t dt C t
dt dt s dt
dt d dt d dt dC C
dt dt s dt
![Page 22: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/22.jpg)
Factorized Scheme
n+1 ..1 2 1
nn n n ndt d dt d dt d dt dC
C C C C Cs dt s dt s dt dt
221 1 ...
1! 2! !
ssn ndt d dt d dt dC C
dt dt s dt
n
n
n+1
Set C=C
for : 1:1
C C
end
C =C
k s
dt dC
k dt
![Page 23: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/23.jpg)
JST + Advection Equation• We now use the PDE definition
n
n
n+1
Set C=C
for : 1:1
C C
end
C =C
k s
dt dC
k dt
+
n
n
n+1
Set C=C
for : 1:1
C C
end
C =C
x y
k s
dt C Ca a
k x y
0x yC C Ca a
t x y
![Page 24: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/24.jpg)
Now Use Spectral Representation
j j
Set
for : 1:1
ˆ = fft
ˆ ˆ
ˆ ˆ
ˆ ifft
ˆ ifft
for j=1,..,N
end
=
x x
y y
x x
y y
x x y yj j j j
k s
dt
k
c c
c c
d D c
d D c
d d
d d
c c a d a d
c c
A time step now consists of s substages.
Each stage involves:
a) Fourier transforming the ctildeusing a fast Fourier transform (fft)
b) Scaling the coefficients to differentiate in Fourier space
c) Transforming the derivatives back tophysical values at the nodes by inverse fast Fourier transform (ifft).
d) Finally updating ctilde according tothe advection equation.
At the end we update the concentration.
![Page 25: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/25.jpg)
Matlab Implementation
• First set up the nodes and the differentiation scalings.
![Page 26: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/26.jpg)
24) Compute dt
26) Initiate concentration
28-29) compute advection vector
32-45) full Runge-Kutta time step
35) fft ctilde
37) x- and y-differentiation in Fourier space
40-41) transform back to physical values of derivatives
43) Update ctilde
![Page 27: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/27.jpg)
sin 2 cos 2
cos 2 sin 2
x
y
a x x
a x x
2 2
200 .75 .6
0
0, ,
x y
x y
C C Ca a
t x y
C t x y e
![Page 28: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/28.jpg)
FFT Resources
• Check out: http://www.fftw.org/ for the fastest Fourier transform in the West
• Great list of links:– http://www.fftw.org/links.html
• FFT for irregularly spaced data:– http://www.math.mu-luebeck.de/potts/nfft/
![Page 29: Lecture 22](https://reader035.vdocument.in/reader035/viewer/2022062314/568148f9550346895db61e9a/html5/thumbnails/29.jpg)
Lab Exercise
1) Download example DFT code from website.
2) Benchmark codes as a function of N
3) Write your own version using an efficient FFT (say fftw) which:
1) FFT’s data
2) Scales coefficients
3) IFFT’s scaled coeffients
4) Write an advection code using the JST Runge-Kutta time integrator.
This is the scalar version of Project 4