# QuakeNN

## Description

**Overview:**

QuakeNN is a Python-based machine learning software designed to solve forward and inverse problems in earthquake dynamics. It employs a tool called Physics-Informed Neural Networks (PINNs) to solve these problems. Currently, the software focuses on two key problems: (1) fault friction in a simple spring-block model with a highly non-linear friction law, and (2) acoustic and vector wave equations. Future developments will expand the software's capabilities to handle more complex models and integrate other tools, such as operator learning, to accelerate the modeling process.

**Features:**

Solving forward problem with adaptive time-stepping PINNs

Solving forward problem with data-driven PINNs

Estimating time-independent stiffness term with synthetic measurements

Estimating time-dependent friction with synthetic measurements

Estimating frictional stability parameters with synthetic measurements

**Contributing:**

The QuakeNN GitHub source code repository can be found here:

**https://github.com/napatt2/QuakeNN.git**

**Running QuakeNN:**

This app requires the user to specify input parameters in a `params.json` file for successful execution.

Descriptions of each variable are as follows:

- horizontal: Non-dimensional frequency related to the coil spring connecting blocks.

- vertical: Non-dimensional frequency related to the leaf spring connecting blocks to the driving plate.

- psi: Non-dimensional spring constant.

- f: Scaled steady-state friction coefficient.

- epsilon_1: A ratio of the stress parameters in the rate-and-state friction law \((b-a)/a\) for the middle blocks.

- epsilon_2: A ratio of the stress parameters in the rate-and-state friction law \((b-a)/a\) for the side blocks.

- epsilon_guess: Initial guess for the ratio of stress parameters in the rate-and-state friction law \((b-a)/a\) for all blocks.

- n_middle: Number of middle blocks out of 10.

- t_start: Initial time.

- t_end: Final time.

- unit: Size of each layer in the neural network.

- layer: Number of layers in the neural network.

- epoch: Number of training iterations.

- learning_rate: Learning rate.

- num_res: Number of residual points in the equation loss.

- num_test: Number of testing points in the domain.