Clawpack Tutorial Part 2 - University of...
Transcript of Clawpack Tutorial Part 2 - University of...
![Page 1: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/1.jpg)
Clawpack TutorialPart 2
Randall J. LeVequeApplied Mathematics
University of Washington
Slides posted athttp://www.clawpack.org/links/tutorials
http://faculty.washington.edu/rjl/tutorials
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 2: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/2.jpg)
Outline
• Boundary conditions
• Python plotting tools• Specifying plotting parameters• Options for viewing plots:
Web pagesInteractive
• Two space dimensionsNormal and transverse Riemann solvers
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 3: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/3.jpg)
Boundary conditions and ghost cells
In each time step, the data in cells 1 to N = mx is used todefine ghost cell values in cells outside the physical domain.
The wave-propagation algorithm is then applied on theexpanded computational domain, solving Riemann problems atall interfaces.
The data is extended depending on the physical boundaryconditons.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 4: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/4.jpg)
Boundary conditions
....Q−1 Q0 Q1 Q2 QN QN+1 QN+2
x1/2
x = a
xN+1/2
x = b
Periodic:
Qn−1 = Qn
N−1, Qn0 = Qn
N , QnN+1 = Qn
1 , QnN+2 = Qn
2
Extrapolation (outflow):
Qn−1 = Qn
1 , Qn0 = Qn
1 , QnN+1 = Qn
N , QnN+2 = Qn
N
Solid wall:For Q0 : p0 = p1, u0 = −u1,
For Q−1 : p−1 = p2, u−1 = −u2.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 5: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/5.jpg)
Boundary conditions
....Q−1 Q0 Q1 Q2 QN QN+1 QN+2
x1/2
x = a
xN+1/2
x = b
Periodic:
Qn−1 = Qn
N−1, Qn0 = Qn
N , QnN+1 = Qn
1 , QnN+2 = Qn
2
Extrapolation (outflow):
Qn−1 = Qn
1 , Qn0 = Qn
1 , QnN+1 = Qn
N , QnN+2 = Qn
N
Solid wall:For Q0 : p0 = p1, u0 = −u1,
For Q−1 : p−1 = p2, u−1 = −u2.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 6: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/6.jpg)
Boundary conditions
....Q−1 Q0 Q1 Q2 QN QN+1 QN+2
x1/2
x = a
xN+1/2
x = b
Periodic:
Qn−1 = Qn
N−1, Qn0 = Qn
N , QnN+1 = Qn
1 , QnN+2 = Qn
2
Extrapolation (outflow):
Qn−1 = Qn
1 , Qn0 = Qn
1 , QnN+1 = Qn
N , QnN+2 = Qn
N
Solid wall:For Q0 : p0 = p1, u0 = −u1,
For Q−1 : p−1 = p2, u−1 = −u2.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 7: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/7.jpg)
Setting BCs in Clawpack
In setrun.py, at each boundary(xlower, xupper, ylower, yupper)
must specify for example:
clawdata.mthbc_xlower = 3 # solid wallclawdata.mthbc_xupper = 1 # extrapolation
Set to 2 at both boundaries for periodic.
Set to 0 if you want to impose something special.
In this case need to copy $CLAW/clawpack/1d/lib/bc1.f toapplication directory and modify (along with Makefile).
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 8: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/8.jpg)
Setting BCs in Clawpack
In setrun.py, at each boundary(xlower, xupper, ylower, yupper)
must specify for example:
clawdata.mthbc_xlower = 3 # solid wallclawdata.mthbc_xupper = 1 # extrapolation
Set to 2 at both boundaries for periodic.
Set to 0 if you want to impose something special.
In this case need to copy $CLAW/clawpack/1d/lib/bc1.f toapplication directory and modify (along with Makefile).
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 9: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/9.jpg)
Extrapolation boundary conditions
If we set Q0 = Q1 then the Riemann problem at x1/2 has zerostrength waves:
Q1 −Q0 =W11/2 +W2
1/2
So in particular the incoming waveW2 has strength 0.
The outgoing wave perhaps should have nonzero magnitude,but it doesn’t matter since it would only update ghost cell.
Ghost cell value is reset at the start of each time step byextrapolation.
In 2D or 3D, extrapolation in normal direction is not perfect butworks quite well.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 10: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/10.jpg)
Extrapolation boundary conditions
If we set Q0 = Q1 then the Riemann problem at x1/2 has zerostrength waves:
Q1 −Q0 =W11/2 +W2
1/2
So in particular the incoming waveW2 has strength 0.
The outgoing wave perhaps should have nonzero magnitude,but it doesn’t matter since it would only update ghost cell.
Ghost cell value is reset at the start of each time step byextrapolation.
In 2D or 3D, extrapolation in normal direction is not perfect butworks quite well.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 11: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/11.jpg)
Extrapolation boundary conditions
If we set Q0 = Q1 then the Riemann problem at x1/2 has zerostrength waves:
Q1 −Q0 =W11/2 +W2
1/2
So in particular the incoming waveW2 has strength 0.
The outgoing wave perhaps should have nonzero magnitude,but it doesn’t matter since it would only update ghost cell.
Ghost cell value is reset at the start of each time step byextrapolation.
In 2D or 3D, extrapolation in normal direction is not perfect butworks quite well.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 12: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/12.jpg)
Extrapolation boundary conditions
Examples:
• One-dimensional acoustics:$CLAW/book/chap3/acousimple$CLAW/apps/acoustics/1d/example2
• Tsunami propagation:$CLAW/apps/tsunami/chile2010
• Seismic waves in a half-space on following slides,
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 13: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/13.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 14: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/14.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 15: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/15.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 16: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/16.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 17: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/17.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 18: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/18.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 19: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/19.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 20: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/20.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 21: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/21.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 22: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/22.jpg)
Seismic wave in layered medium
Red = div(u) [P-waves], Blue = curl(u) [S-waves]
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 23: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/23.jpg)
Python plotting tools
Directory _output contains files fort.t000N, fort.q000Nof data at frame N (N’th output time).
fort.t000N: Information about this time,fort.q000N: Solution on all grids at this time
There may be many grids at each output time.
Python tools provide a way to specify what plots to produce foreach frame:
• One or more figures,• Each figure has one or more axes,• Each axes has one or more items,
(Curve, contour, pcolor, etc.)
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 24: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/24.jpg)
setplot function for speciying plots
The file setplot.py contains a function setplotTakes an object plotdata of class ClawPlotData,Sets various attributes, and returns the object.
Documentation: www.clawpack.org/users/setplot.html
Example: 1 figure with 1 axes showing 1 item:
def setplot(plotdata):plotfigure = plotdata.new_plotfigure(name,num)plotaxes = plotfigure.new_plotaxes(title)plotitem = plotaxes.new_plotitem(plot_type)# set attributes of these objectsreturn plotdata
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 25: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/25.jpg)
setplot function for speciying plots
Example: plot first component of q as blue curve, red circles.
plotfigure = plotdata.new_plotfigure(’Q’, 1)plotaxes = plotfigure.new_plotaxes(’axes1’)
plotitem = plotaxes.new_plotitem(’1d_plot’)plotitem.plotvar = 0 # Python indexing!plotitem.plotstyle = ’-’plotitem.color = ’b’ # or [0,0,1] or ’#0000ff’
plotitem = plotaxes.new_plotitem(’1d_plot’)# plotitem now points to a new object!plotitem.plotvar = 0plotitem.plotstyle = ’ro’
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 26: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/26.jpg)
Plotting examples and documentation
General plotting information:www.clawpack.org/users/plotting.html
Use of setplot, possible attributes:www.clawpack.org/users/setplot.html
Examples:
1d: www.clawpack.org/users/plotexamples.html
2d: www.clawpack.org/users/plotexamples2d.html
FAQ: www.clawpack.org/users/plotting_faq.html
Gallery of applications:www.clawpack.org/users/apps.html
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 27: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/27.jpg)
Plotting options
Create a set of webpages showing all plots:$ make .plots
Disadvantages:• May take a while to plot all frames• Can’t zoom in dynamically or explore data
View plots interactively:
$ ipyclaw # alias defined in setenv.bash
In[1]: ip = Iplotclaw()In[2]: ip.plotloop()PLOTCLAW>> ?
PLOTCLAW>> qIn[3]: Quit
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 28: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/28.jpg)
First order hyperbolic PDE in 2 space dimensions
Advection equation: qt + uqx + vqy = 0
First-order system: qt +Aqx +Bqy = 0
where q ∈ lRm and A,B ∈ lRm×m.
Hyperbolic if cos(θ)A+ sin(θ)B is diagonalizable with realeigenvalues, for all angles θ.
This is required so that plane-wave data gives a 1d hyperbolicproblem:
q(x, y, 0) = q̆(x cos θ + y sin θ) (\breve q)
implies contours of q in x–y plane are orthogonal to θ–direction.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 29: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/29.jpg)
First order hyperbolic PDE in 2 space dimensions
Advection equation: qt + uqx + vqy = 0
First-order system: qt +Aqx +Bqy = 0
where q ∈ lRm and A,B ∈ lRm×m.
Hyperbolic if cos(θ)A+ sin(θ)B is diagonalizable with realeigenvalues, for all angles θ.
This is required so that plane-wave data gives a 1d hyperbolicproblem:
q(x, y, 0) = q̆(x cos θ + y sin θ) (\breve q)
implies contours of q in x–y plane are orthogonal to θ–direction.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 30: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/30.jpg)
Acoustics in 2 dimensions
pt +K0(ux + vy) = 0ρ0ut + px = 0ρ0vt + py = 0
Note: pressure responds to compression or expansion and sopt is proportional to divergence of velocity.
Second and third equations are F = ma.
Gives hyperbolic system qt +Aqx +Bqy = 0 with
q =
puv
, A =
0 K0 01/ρ0 0 0
0 0 0
, B =
0 0 K0
0 0 01/ρ0 0 0
.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 31: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/31.jpg)
Acoustics in 2 dimensions
pt +K0(ux + vy) = 0ρ0ut + px = 0ρ0vt + py = 0
Note: pressure responds to compression or expansion and sopt is proportional to divergence of velocity.
Second and third equations are F = ma.
Gives hyperbolic system qt +Aqx +Bqy = 0 with
q =
puv
, A =
0 K0 01/ρ0 0 0
0 0 0
, B =
0 0 K0
0 0 01/ρ0 0 0
.Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 32: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/32.jpg)
Acoustics in 2 dimensions
q =
puv
, A =
0 K0 01/ρ0 0 0
0 0 0
, B =
0 0 K0
0 0 01/ρ0 0 0
.Plane waves:
A cos θ +B sin θ =
0 K0 cos θ K0 sin θcos θ/ρ0 0 0sin θ/ρ0 0 0
.
Eigenvalues: λ1 = −c0, λ2 = 0, λ3 = +c0 =√K0/ρ0
Independent of angle θ.
Isotropic: sound propagates at same speed in any direction.
Note: Zero wave speed for “shear wave” with variation only invelocity in direction (− sin θ, cos θ). (Fig 18.1)
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 33: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/33.jpg)
Acoustics in 2 dimensions
q =
puv
, A =
0 K0 01/ρ0 0 0
0 0 0
, B =
0 0 K0
0 0 01/ρ0 0 0
.Plane waves:
A cos θ +B sin θ =
0 K0 cos θ K0 sin θcos θ/ρ0 0 0sin θ/ρ0 0 0
.Eigenvalues: λ1 = −c0, λ2 = 0, λ3 = +c0 =
√K0/ρ0
Independent of angle θ.
Isotropic: sound propagates at same speed in any direction.
Note: Zero wave speed for “shear wave” with variation only invelocity in direction (− sin θ, cos θ). (Fig 18.1)
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 34: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/34.jpg)
Acoustics in 2 dimensions
q =
puv
, A =
0 K0 01/ρ0 0 0
0 0 0
, B =
0 0 K0
0 0 01/ρ0 0 0
.Plane waves:
A cos θ +B sin θ =
0 K0 cos θ K0 sin θcos θ/ρ0 0 0sin θ/ρ0 0 0
.Eigenvalues: λ1 = −c0, λ2 = 0, λ3 = +c0 =
√K0/ρ0
Independent of angle θ.
Isotropic: sound propagates at same speed in any direction.
Note: Zero wave speed for “shear wave” with variation only invelocity in direction (− sin θ, cos θ). (Fig 18.1)
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 35: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/35.jpg)
Acoustics in 2 dimensions
pt +K0(ux + vy) = 0ρ0ut + px = 0ρ0vt + py = 0
A =
0 K0 01/ρ0 0 0
0 0 0
, Rx =
−Z0 0 Z0
1 0 10 1 0
Solving qt +Aqx = 0 gives pressure waves in (p, u).
x-variations in v are stationary.
B =
0 0 K0
0 0 01/ρ0 0 0
Ry =
−Z0 0 Z0
0 1 01 0 1
Solving qt +Bqy = 0 gives pressure waves in (p, v).
y-variations in u are stationary.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 36: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/36.jpg)
Acoustics in 2 dimensions
pt +K0(ux + vy) = 0ρ0ut + px = 0ρ0vt + py = 0
A =
0 K0 01/ρ0 0 0
0 0 0
, Rx =
−Z0 0 Z0
1 0 10 1 0
Solving qt +Aqx = 0 gives pressure waves in (p, u).
x-variations in v are stationary.
B =
0 0 K0
0 0 01/ρ0 0 0
Ry =
−Z0 0 Z0
0 1 01 0 1
Solving qt +Bqy = 0 gives pressure waves in (p, v).
y-variations in u are stationary.Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 37: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/37.jpg)
Advection: Donor Cell Upwind
With no correction fluxes, Godunov’s method for advection is
Donor Cell Upwind:
Qn+1ij = Qij −
∆t∆x
[u+(Qij −Qi−1,j) + u−(Qi+1,j −Qij)]
− ∆t∆y
[v+(Qij −Qi,j−1) + v−(Qi,j+1 −Qij)].
Stable only if∣∣u∆t
∆x
∣∣+∣∣∣v∆t
∆y
∣∣∣ ≤ 1.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 38: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/38.jpg)
Advection: Corner Transport Upwind (CTU)
Correction fluxes can be added to advect waves correctly.
Corner Transport Upwind:
Stable for max(∣∣u∆t
∆x
∣∣ , ∣∣∣v∆t∆y
∣∣∣) ≤ 1.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 39: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/39.jpg)
Advection: Corner Transport Upwind (CTU)
Need to transport triangular region from cell (i, j) to (i, j + 1):
Area =12
(u∆t)(v∆t) =⇒( 1
2uv(∆t)2
∆x∆y
)(Qij −Qi−1,j).
Accomplished by correction flux:
G̃i,j+1/2 = −12
∆t∆x
uv(Qij −Qi−1,j)
∆t∆y (G̃i,j+1/2 − G̃i,j−1/2) gives approximation to 1
2∆t2uvqxy .
∆t∆x (F̃i+1/2,j − F̃i−1/2,j) gives similar approximation.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 40: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/40.jpg)
Wave propagation algorithms in 2D
Clawpack requires:
Normal Riemann solver rpn2.fSolves 1d Riemann problem qt +Aqx = 0Decomposes ∆Q = Qij −Qi−1,j into A+∆Q and A−∆Q.For qt +Aqx +Bqy = 0, split using eigenvalues, vectors:
A = RΛR−1 =⇒ A− = RΛ−R−1, A+ = RΛ+R−1
Input parameter ixy determines if it’s in x or y direction.In latter case splitting is done using B instead of A.This is all that’s required for dimensional splitting.
Transverse Riemann solver rpt2.fDecomposes A+∆Q into B−A+∆Q and B+A+∆Q by splittingthis vector into eigenvectors of B.
(Or splits vector into eigenvectors of A if ixy=2.)
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 41: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/41.jpg)
Wave propagation algorithms in 2D
Clawpack requires:
Normal Riemann solver rpn2.fSolves 1d Riemann problem qt +Aqx = 0Decomposes ∆Q = Qij −Qi−1,j into A+∆Q and A−∆Q.For qt +Aqx +Bqy = 0, split using eigenvalues, vectors:
A = RΛR−1 =⇒ A− = RΛ−R−1, A+ = RΛ+R−1
Input parameter ixy determines if it’s in x or y direction.In latter case splitting is done using B instead of A.This is all that’s required for dimensional splitting.
Transverse Riemann solver rpt2.fDecomposes A+∆Q into B−A+∆Q and B+A+∆Q by splittingthis vector into eigenvectors of B.
(Or splits vector into eigenvectors of A if ixy=2.)
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 42: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/42.jpg)
Wave propagation algorithm for qt + Aqx + Bqy = 0
Decompose A = A+ +A− and B = B+ +B−.
For ∆Q = Qij −Qi−1,j :
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 43: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/43.jpg)
Wave propagation algorithm for qt + Aqx + Bqy = 0
Decompose A = A+ +A− and B = B+ +B−.
For ∆Q = Qij −Qi−1,j :
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 44: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/44.jpg)
Wave propagation algorithm for qt + Aqx + Bqy = 0
Decompose A = A+ +A− and B = B+ +B−.
For ∆Q = Qij −Qi−1,j :
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 45: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/45.jpg)
Wave propagation algorithm for qt + Aqx + Bqy = 0
Decompose A = A+ +A− and B = B+ +B−.
For ∆Q = Qij −Qi−1,j :
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 46: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/46.jpg)
Wave propagation algorithm for qt + Aqx + Bqy = 0
Decompose A = A+ +A− and B = B+ +B−.
For ∆Q = Qij −Qi−1,j :
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 47: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/47.jpg)
Wave propagation algorithm on a quadrilateral grid
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 48: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/48.jpg)
Wave propagation algorithm on a quadrilateral grid
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 49: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/49.jpg)
Acoustics in heterogeneous media
qt +A(x, y)qx +B(x, y)qy = 0, q = (p, u, v)T ,
where
A =
0 K(x, y) 01/ρ(x, y) 0 0
0 0 0
, B =
0 0 K(x, y)0 0 0
1/ρ(x, y) 0 0
.Note: Not in conservation form!
Wave propagation still makes sense. In x-direction:
W1 = α1
−Zi−1,j
10
, W2 = α2
001
, W3 = α3
Zij
10
.Wave speeds: s1
i−1/2,j = −ci−1,j , s2i−1/2,j = 0, s3
i−1/2,j = +cij .
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 50: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/50.jpg)
Acoustics in heterogeneous media
qt +A(x, y)qx +B(x, y)qy = 0, q = (p, u, v)T ,
where
A =
0 K(x, y) 01/ρ(x, y) 0 0
0 0 0
, B =
0 0 K(x, y)0 0 0
1/ρ(x, y) 0 0
.Note: Not in conservation form!
Wave propagation still makes sense. In x-direction:
W1 = α1
−Zi−1,j
10
, W2 = α2
001
, W3 = α3
Zij
10
.Wave speeds: s1
i−1/2,j = −ci−1,j , s2i−1/2,j = 0, s3
i−1/2,j = +cij .
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 51: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/51.jpg)
Acoustics in heterogeneous media
W1 = α1
−Zi−1,j
10
, W2 = α2
001
, W3 = α3
Zij
10
.Decompose ∆Q = (∆p, ∆u, ∆v)T :
α1i−1/2,j = (−∆Q1 + Z∆Q2)/(Zi−1,j + Zij),
α2i−1/2,j = ∆Q3,
α3i−1/2,j = (∆Q1 + Zi−1,j∆Q2)/(Zi−1,j + Zij).
Fluctuations: (Note: s1 < 0, s2 = 0, s3 > 0)
A−∆Qi−1/2,j = s1i−1/2,jW
1i−1/2,j ,
A+∆Qi−1/2,j = s3i−1/2,jW
3i−1/2,j .
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 52: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/52.jpg)
Acoustics in heterogeneous media
W1 = α1
−Zi−1,j
10
, W2 = α2
001
, W3 = α3
Zij
10
.Decompose ∆Q = (∆p, ∆u, ∆v)T :
α1i−1/2,j = (−∆Q1 + Z∆Q2)/(Zi−1,j + Zij),
α2i−1/2,j = ∆Q3,
α3i−1/2,j = (∆Q1 + Zi−1,j∆Q2)/(Zi−1,j + Zij).
Fluctuations: (Note: s1 < 0, s2 = 0, s3 > 0)
A−∆Qi−1/2,j = s1i−1/2,jW
1i−1/2,j ,
A+∆Qi−1/2,j = s3i−1/2,jW
3i−1/2,j .
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 53: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/53.jpg)
Acoustics in heterogeneous media
Transverse solver: Split right-going fluctuation
A+∆Qi−1/2,j = s3i−1/2,jW
3i−1/2,j
into up-going and down-going pieces:
Decompose A+∆Qi−1/2,j into eigenvectors of B. Down-going:
A+∆Qi−1/2,j = β1
[−Zi,j−1
01
]+ β2
[ 0−1
0
]+ β3
[Zij01
],
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 54: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/54.jpg)
Transverse solver for acousticsUp-going part: B+A+∆Qi−1/2,j = ci,j+1β
3r3 from
A+∆Qi−1/2,j = β1
[−Zij
01
]+ β2
[ 0−1
0
]+ β3
[Zi,j+1
01
],
β3 =((A+∆Qi−1/2,j)
1 + (A+∆Qi−1/2,j)3Zi,j+1
)/ (Zij +Zi,j+1).
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 55: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/55.jpg)
Transverse Riemann solver in Clawpack
rpt2 takes vector asdq and returns bmasdq and bpasdqwhere
asdq = A∗∆Q represents eitherA−∆Q if imp = 1, orA+∆Q if imp = 2.
Returns B−A∗∆Q and B+A∗∆Q.
Note: there is also a parameter ixy:
ixy = 1 means normal solve was in x-direction,
ixy = 2 means normal solve was in y-direction,In this case asdq represents B−∆Q or B+∆Q andthe routine must return A−B∗∆Q and A+B∗∆Q.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011
![Page 56: Clawpack Tutorial Part 2 - University of Washingtondepts.washington.edu/clawpack/links/tutorials/clawpack-waves-2.pdf · Randy LeVeque, University of Washington Clawpack Tutorial](https://reader033.fdocuments.in/reader033/viewer/2022050402/5f8011443b136965291afb8e/html5/thumbnails/56.jpg)
Transverse Riemann solver in Clawpack
rpt2 takes vector asdq and returns bmasdq and bpasdqwhere
asdq = A∗∆Q represents eitherA−∆Q if imp = 1, orA+∆Q if imp = 2.
Returns B−A∗∆Q and B+A∗∆Q.
Note: there is also a parameter ixy:
ixy = 1 means normal solve was in x-direction,
ixy = 2 means normal solve was in y-direction,In this case asdq represents B−∆Q or B+∆Q andthe routine must return A−B∗∆Q and A+B∗∆Q.
Randy LeVeque, University of Washington Clawpack Tutorial #2, WAVES 2011, July 2011