Skip to content

Google Summer of Code 2020

Randall J. LeVeque edited this page Feb 20, 2020 · 9 revisions

Introduction

Clawpack (“Conservation Laws Package”) is a collection of finite volume methods for linear and nonlinear hyperbolic systems of conservation laws. Clawpack employs high-resolution Godunov-type methods with limiters in a general framework applicable to many kinds of waves. In other words it is a eco-system of solvers for moving "stuff" from point A to point B accurately and fast. These algorithms include ways to solve solute transport, seismic waves, tsunamis, storm surge, debris flow, traffic flow, and other phenomena. This page contains a list of ideas for students applying to the Google Summer of Code in 2020 that apply to the Clawpack eco-system. We are participating under the NumFOCUS umbrella so students should apply to the NumFOCUS organization. NumFOCUS has a number of tips for your application. Please note that you MUST apply through the NumFOCUS page on the Google Summer of Code website.

Project Ideas

Better Connection to Google Earth Products for Output from GeoClaw

Idea

GeoClaw is a submodule of Clawpack that is widely used for modeling hazardous flows over topography, particularly for tsunamis, storm surge, and dam break problems. It is used for real-world hazard assessment and it is often necessary to present simulation results to emergency management professionals and/or the public in many different forms: maps and technical reports, live presentations, and websites. To this end we have often found visualization on Google Earth to be effective. GeoClaw already has some capabilities for visualizing simulations results on Google Earth (see the documentation, which includes some screen shots), but some of it is hard to use and/or does not have as many features as desired.

The project would involve a combination of refactoring the existing code and developing new or improved tools. In particular we would like to better utilize the fact that GeoClaw simulations are computed using adaptive mesh refinement and so multiple resolutions are available that might be leveraged to visualize the flows more quickly will be the goal in this project.

We would like to have better tools for creating animations from time-dependent simulation results during flooding events that are visualized on the 3D topography available in Google Earth.

We would also like to develop tools and tutorials to enable users to make use of the new features available on earth.google.com, in order to build projects based on simulation results that can be used to tell a story for a website that is available to the public and/or emergency managers in order to help them better understand hazards and the areas at risk.

Here's a screenshot of a test project under development to show strong currents through Deception Pass during a hypothetical tsunami generated by a Cascadia Subduction Zone Magnitude 9 earthquake (colored by flow speed):

Max speed through Deception Pass

The rendering above clearly has some issues: the png image is at the wrong elevation so it seems the land is floating above the image.

Opening the same kml file in Google Earth Pro gives the view below instead, which is better in some ways although the road and bridge are not properly rendered.

Max speed through Deception Pass

Difficulty

Required Knowledge

Good knowledge of Python and matplotlib graphics is required. Some experience working with geophysical data sets and kml files would be desirable, but probably not essential.

Mentors

@donnaaboise, @rjleveque, @mandli

Build Out the YT backend for Plotting

Write a backend that would use the yt package rather the matplotlib to do visualization for all of Clawpack. The particularly difficult here is with the adaptive meshing again.

Difficulty

Required Knowledge

Mentors

@dketch, @mandli

Implement Griddle Framework

Update existing griddle code to work with current versions of yt, Clawpack, and matplotlib.

Details

  • Develop plotting code for existing non-AMR examples to work with Griddle
  • Develop plotting code for AMR examples to work with Griddle using yt (only)
  • Write a translator to take a setplot.py and output a griddle plotting script
  • Develop plotting code for AMR examples to work with Griddle using matplotlib

Optional further goals could include interfacing with more plotting packages or developing Jupyter notebook widgets for sophisticated visualization tasks. Having a small set of representative examples as a basis for a sort of "test driven development" would be great.  We should include some from each of the Clawpack codes.

Difficulty

Required Knowledge

Mentors

@dketch, @mandli