# PyClaw¶

In this section of the documentation, PyClaw refers a Python version of the hyperbolic PDE solvers that allows solving the problem in Python (e.g. in a Jupyter notebook) without explicitly using any Fortran code. Versions of the solvers are written in Python. However, they use Riemann solvers that are converted from the Fortran versions into Python-callable versions using f2py, to facilitate using the same large set of solvers from either Fortran or Python. Note that in order for this to work the solvers must be precompiled, as is done when using pip install, for example (see pip install instructions).

See Which Clawpack solver should I use? for more information about the different capabilities of PyClaw relative to Classic, AMRClaw, and GeoClaw.

**Note:** The clawpack/pyclaw directory also contains some
Python tools that are used many places in
Clawpack, e.g. when plotting with visclaw or when compiling and
running Fortran code using a Makefile and setrun.py file
(when using Classic, AMRClaw, and GeoClaw).
These modules are mostly used “under the hood”.
Other Python tools of use in the Fortran versions
are described elsewhere; see e.g. Plotting with Visclaw or GeoClaw Description and Detailed Contents.
All of these modules are pure Python and should work fine as long
as the top level of Clawpack is on your Python path.

## PyClaw installation¶

Using pip install is the recommended approach, see pip install instructions.

## Examples¶

Next, try running an example Jupyter notebook.

Alternatively, to run an example from the **IPython prompt**:

```
from clawpack.pyclaw import examples
claw = examples.shock_bubble_interaction.setup()
claw.run()
claw.plot()
```

To run an example and plot the results directly from the command line, go to the directory where Clawpack is installed and then:

```
cd pyclaw/examples/euler_2d
python shock_bubble_interaction.py iplot=1
```

## Features¶

A

hyperbolic PDE solverin 1D, 2D, and 3D, including mapped grids and surfaces, built on Clawpack;

Massively parallel– the same simple script that runs on your laptop will scale efficiently on the world’s biggest supercomputers (see Running in parallel);

High order accurate, with WENO reconstruction and Runge-Kutta time integration (see Using PyClaw’s solvers: Classic and SharpClaw);Simple and intuitive thanks to its Python interface.

PyClaw makes use of the additional Clawpack packages, Riemann and VisClaw for Riemann solvers and visualization, respectively.

If you have any issues or need help using PyClaw, contact us.

# PyClaw Documentation¶

See also the Gallery of PyClaw Applications for some examples of how PyClaw can be used.

- Testing a PyClaw installation and running an example
- PyClaw Basics
- Going Further
- Understanding Pyclaw Classes
- Developers’ Guide
- Guide for updating this documentation
- Guide for doing a Clawpack release
- Regression testing
- Keeping track of repository versions with Git
- Guidelines for contributing
- Installation instructions for developers
- Modifying code
- Catching errors with Pyflakes and Pylint
- Checking test coverage
- Trouble-Shooting Tips

- Troubleshooting
- About PyClaw

# PyClaw Modules reference documentation¶

# Riemann Solvers reference documentation¶

The Riemann solvers now comprise a separate package. For convenience, documentation of the available pure python Riemann solvers is included here. Many other Fortran-based Riemann solvers are available.

# Indices and tables¶

# Citing PyClaw¶

If you use PyClaw in work that will be published, please cite the Clawpack software (see Citing this work) and also mention specifically that you used PyClaw, and cite the paper:

```
@article{pyclaw-sisc,
Author = {Ketcheson, David I. and Mandli, Kyle T. and Ahmadia, Aron J. and Alghamdi, Amal and {Quezada de Luna}, Manuel and Parsani, Matteo and Knepley, Matthew G. and Emmett, Matthew},
Journal = {SIAM Journal on Scientific Computing},
Month = nov,
Number = {4},
Pages = {C210--C231},
Title = {{PyClaw: Accessible, Extensible, Scalable Tools for Wave Propagation Problems}},
Volume = {34},
Year = {2012}}
```

If you use the Classic (2nd-order) solver, you may also wish to cite:

```
@article{leveque1997,
Author = {LeVeque, Randall J.},
Journal = {Journal of Computational Physics},
Pages = {327--353},
Title = {{Wave Propagation Algorithms for Multidimensional Hyperbolic Systems}},
Volume = {131},
Year = {1997}}
```

If you use the SharpClaw (high order WENO) solver, you may also wish to cite:

```
@article{KetParLev13,
Author = {Ketcheson, David I. and Parsani, Matteo and LeVeque,
Randall J.},
Journal = {SIAM Journal on Scientific Computing},
Number = {1},
Pages = {A351--A377},
Title = {{High-order Wave Propagation Algorithms for Hyperbolic Systems}},
Volume = {35},
Year = {2013}}
```