Modeling Rate-and-State Friction with Python

Brief Description

Friction plays a crucial role in a broad spectrum of natural and technological applications ranging from earthquakes to materials handling. Researchers working to understand frictional dynamics often develop their own software to solve specific problems with constitutive laws that include history and strain rate dependence, which has limited interdisciplinary comparison and community standards. We address these shortcomings with a Python implementation of the rate-and-state friction constitutive laws, including tools to handle multiple state variables, dynamic instability, and variations in friction rate dependence with slip velocity.


Since the 1960’s the idea of static and kinetic friction has been revised to encompass velocity and history dependence of friction in the “rate and state” friction framework. This theory is used to understand everything from earthquakes to industrial tool chatter. Until recently there were no well tested and documented packages to solve these coupled, non-linear constitutive equations. Scientists typically had their own implementation that used numerical methods written around the equations instead of standard libraries to solve the system. Furthermore, few of these programs were publicly available and well documented.


We have developed a forward modeling tool ( that allows frictional forward models to be run from a GUI interface as a learning or exploration tool, as well as directly through a simple API for more serious research and development tasks.

Python allows us to use optimized numerical tools and thus focus on solving the problem at hand - how friction evolves when an elastic-frictional system is perturbed. We also incorporate more complex effects like radiation damping and inertia in addition to allowing user-defined friction relations.


The modular and scriptable nature of rsfmodel has allowed us to reevaluate some long-held assumptions and understandings of frictional mechanics that have ultimately led our research group down new paths to understanding the problem of slow earthquakes. Without such a versatile tool our studies would be much more difficult.


The rsfmodel tool can be utilized at every level from the classroom to serious research to analyze how the complex and still poorly understood second and third order effects of friction work. This tool is a way to encourage more experimental and modeling work to use Python and Jupyter notebooks to document the work and publish a reproducible study with documented and tested code.