• Stars
    star
    265
  • Rank 154,577 (Top 4 %)
  • Language
    HTML
  • License
    BSD 3-Clause "New...
  • Created over 9 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

An interactive book about the Riemann problem for hyperbolic PDEs, using Jupyter notebooks.

Build Status

Riemann Problems and Jupyter Solutions

by David I. Ketcheson, Randall J. LeVeque, and Mauricio del Razo Sarmina

This repository contains source files for a book that illustrates Riemann solutions and approximate Riemann solvers in Jupyter notebooks. The print version of the book is available from SIAM, and also as an ebook. You can view a pdf version of the contents, preface, and index.

Riemann Problems and Jupyter Solutions
    Theory and Approximate Solvers for Hyperbolic PDEs
by David I. Ketcheson, Randall J. LeVeque, and Mauricio J. del Razo
SIAM, 2020.   ISBN: 978-1-611976-20-5
ebook: DOI 10.1137/1.9781611976212

See https://bookstore.siam.org/fa16/bonus for additional information and links to the html rendered notebooks. These are static views (no execution or interactive widgets), but some notebooks include animations that will play.

The recommended way to fully experience the book is by running the Jupyter notebooks:

Start from the table of contents given in the notebook Index.ipynb, which is also shown below. The notebook Index2.ipynb lists some notebooks that are not in the SIAM book, some of which are still under development. Additional notebooks may appear in the future.

Branches

The FA16 branch of this repository corresponds to notebooks as converted into the SIAM book. The master branch may be updated in the future.

Installation

To install the dependencies, first install a Fortran compiler. Then do the following in a terminal:

pip install clawpack
git clone https://github.com/clawpack/riemann_book
cd riemann_book
pip install -r requirements.txt
jupyter nbextension enable --py widgetsnbextension
pip install jupyter_contrib_nbextensions
jupyter contrib nbextension install --user
jupyter nbextension enable equation-numbering/main

You can test your installation by running

python test.py

A table of contents and suggested order for reading the notebooks is given in Index.ipynb.

If you want to compile the PDF locally, you must also install the package bookbook.

Docker

Rather than installing all the dependencies, if you have Docker installed you can use

$ docker pull clawpack/rbook

to obtain a docker image that has all the notebooks and dependencies installed. This was built using the Dockerfile in this repository, which could be modified to build a new image also containing other material, if desired. See Docker.md for further instructions.

Execute in the cloud

Binder

Rather than installing anything on your own computer, you can run the notebooks on the cloud using the free binder service.
Simply navigate to this link in a browser:

https://mybinder.org/v2/gh/clawpack/riemann_book/FA16

This may take a few minutes to start up a notebook server on a Jupyterhub. Then navigate to riemann_book and open Index.ipynb to get started.

License

Code

The code in this repository, including all code samples in the notebooks, is released under the 3-Clause BSD License. See LICENSE-CODE for the license and read more at the Open Source Initiative.

Text

The text content of the notebooks is released under the CC-BY-NC-ND License. See LICENSE-TEXT.md for the license and read more at Creative Commons.

Contents

Taken from the notebook Index.ipynb, these are the notebooks that also appear in the printed book:

  • Preface -- Describes the aims and goals, and different ways to use the notebooks.
  • Part I: The Riemann problem and its solution
    • Introduction.ipynb -- Introduces basic ideas with some sample solutions.
    • Advection.ipynb -- The scalar advection equation is the simplest hyperbolic problem.
    • Acoustics.ipynb -- This linear system of two equations illustrates how eigenstructure is used.
    • Burgers.ipynb -- The classic nonlinear scalar problem with a convex flux.
    • Traffic_flow.ipynb -- A nonlinear scalar problem with a nice physical interpretation.
    • Nonconvex_scalar.ipynb -- More interesting Riemann solutions arise when the flux is not convex.
    • Shallow_water.ipynb -- A classic nonlinear system of two equations.
    • Shallow_tracer.ipynb -- Adding a passively advected tracer and a linearly degenerate field.
    • Euler.ipynb -- The classic equations for an ideal gas.
  • Part II: Approximate solvers
    • Approximate_solvers.ipynb -- Introduction to two basic types of approximations.
    • Burgers_approximate.ipynb -- Approximate solvers for a scalar problem.
    • Shallow_water_approximate.ipynb -- Roe solvers, the entropy fix, positivity, HLL, and HLLE.
    • Euler_approximate.ipynb -- Extension of these solvers to gas dynamics.
    • FV_compare.ipynb -- Comparing how different approximate solvers perform when used with PyClaw.

More Repositories

1

clawpack

Package for solving hyperbolic systems of partial differential equations
Python
179
star
2

pyclaw

PyClaw is a Python-based interface to the algorithms of Clawpack and SharpClaw. It also contains the PetClaw package, which adds parallelism through PETSc.
Fortran
156
star
3

geoclaw

Version of Clawpack for geophysical waves and flows
Fortran
76
star
4

riemann

One place for all Clawpack-style Riemann solvers
Fortran
44
star
5

visclaw

Clawpack visualization tools
Python
29
star
6

amrclaw

AMR version of Clawpack
Fortran
26
star
7

doc

General Clawpack documentation and main wiki pages
TeX
13
star
8

apps

Repository of applications of Clawpack and related codes
Jupyter Notebook
11
star
9

classic

Classic single-grid Fortran routines
Fortran
11
star
10

clawutil

General utility programs
Python
10
star
11

clawpack-4.x

The old svn repository from kingkong will move here for future development.
Fortran
8
star
12

fvmhp_materials

Some materials to accompany the text book Finite Volume Methods for Hyperbolic Problems by RJ LeVeque
Berry
8
star
13

seismic

To develop codes for seismic modeling
Fortran
5
star
14

docker-files

Docker files for creating docker images for Clawpack
Roff
4
star
15

adjoint

For code to support AMR flagging based on solution of an adjoint PDE
Python
4
star
16

tsunami-examples

Tsunami modeling examples using GeoClaw
Jupyter Notebook
3
star
17

geoclaw_tutorial_csdms2019

For CSDMS webinar, May 7, 2019
Jupyter Notebook
3
star
18

geoclaw_tutorial_tulane2017

Resources for a GeoClaw tutorial at Tulane University in April, 2017.
Jupyter Notebook
2
star
19

sharpclaw

High order wave propagation methods
Fortran
2
star
20

clawpack.github.com

Clawpack webpages
HTML
2
star
21

new_features_for_v5.7.0

Explanation of new features to be added to various clawpack repositories, aiming for v5.7.0. Includes code that will eventually be split up into multiple PRs.
HTML
2
star
22

geoclaw_tutorial_csdms2024

Materials for the GeoClaw Clinic, CSDMS 2024 Annual Meeting
HTML
2
star
23

geoclawdev-2020

GeoClaw Developers workshop and presentation from May 2020
HTML
1
star
24

gitclaw

Tutorial repository for working with Clawpack on GitHub
Python
1
star