Skip to main content
U.S. flag

An official website of the United States government

Extending PyLith to address your earthquake and volcanic deformation modeling needs

Collaborate with developers of the state-of-the-art, open-source, community-code PyLith to add new features and use them to model complex earthquake or volcanic processes. This is your opportunity to expand your software development, numerical modeling, and geoscience skills while furthering your research and contributing to the broader community!

Link to PDF Version.

Project Hypothesis or Objectives:

This opportunity targets a graduate student who needs to expand the existing capabilities of a community modeling code, PyLith (https://geodynamics.org/cig/software/pylith/), in order to make it suitable for addressing the student’s research questions. PyLith provides common bulk and fault rheologies, boundary conditions, and solvers, but cutting edge research problems sometimes require more complex rheologies, alternative implementations for existing modeling features, or features not yet implemented. Current PyLith development focuses on a powerful new approach for modeling the complex physical processes and geologic structure associated with earthquake and volcanic deformation. This opens the door for a graduate student to work closely with the PyLith development team to leverage this new, flexible approach for implementing the governing equations, fault formulation, and boundary conditions to adapt PyLith to meet the demanding modeling needs of the student’s research. In most cases, adapting the code involves adding to a library of finite-element kernels along with accompanying metadata associated with partial differential equations capturing the relevant physics. The student would then use this expanded set of capabilities to simulate earthquake- or volcanic-related crustal deformation processes to answer a specific scientific question of interest. The desired outcome is that the student expands their software development and numerical modeling skills, adds features to PyLith, which can be leveraged by the broader community, and makes a larger scientific step forward than the student would otherwise be able to achieve.

Duration: Up to 12 months

Internship Location: Golden, CO 

Field(s) of Study: Geoscience

Applicable NSF Division: EAR  Earth Sciences

Intern Type Preference: NSF Graduate Research Fellow (GRF) via the Graduate Research Intern Program (GRIP)

Keywords: earthquakes, volcanoes, finite-element modeling, PyLith, Computational Infrastructure for Geodynamics

Expected Outcome:

The expected outcome is that the student expands their software development and numerical modeling skills, adds features to PyLith, which can be leveraged by the broader community, and makes a larger scientific step forward than the student would otherwise be able to achieve.

Special skills/training Required:

Basic understanding of numerical methods (e.g., finite-difference or finite-element methods) for solving partial differential equations. Familiar with object-oriented programming, Python, and C++. Comfortable with software development in a Unix environment (Linux or OS X).

Duties/Responsibilities:

The student would work with the PyLith developers (led by Brad Aagaard, based at the USGS Geologic Hazards Science Center in Golden, CO) to design, implement, and verify a small set of new features and then use PyLith to simulate earthquake or volcanic processes that are the target of the student’s research.

The student and his/her faculty advisor would be responsible for having identified appropriate research questions and general modeling approach. As part of the proposal process, the student would work with the PyLith developers to determine a small set of critical new features required to adapt PyLith to the desired modeling. During the project, the PyLith developers, especially Brad Aagaard, would guide the PyLith-related software development (design, implementation, and testing) conducted by the student and provide expert advice on how to setup, run, and post-process the simulations run using PyLith.