# SHeAr Waves (SHAW) Simulator¶

This project contributes an open-source C++ code using the Kokkos programming model to simulate the generation and propagation of elastic shear waves in an axi-symmetric domain.

## Motivation¶

Seismic modeling and simulation is an active field of research because of its critical importance to understand the generation, propagation and effects of seismic events (aka earthquakes on Earth, moonquakes on the moon, etc), and artificial explosions.

Broadly, one can distinguish between two main types
of seismic waves: shear and pressure.
Shear waves are also called S-waves (or secondary) because they come
after P-waves (or primary). The main difference is that S-waves
are *transversal* (particles oscillate perpendicularly to the direction
of wave propagation), while P-waves are *longitudinal* (particles oscillate
in the same direction as the wave). Both P- and S-waves
are body waves, because they travel through the interior of the Earth
(or some other planet), and their evolution is affected
by the generating source as well as the material properties of the medium,
namely density, stiffness, composition, etc.

Modeling and simulating these systems is challenging because (a) physical models contain a large number of parameters (e.g., anisotropic material properties, signal forms and parametrizations); and (b) simulating at global scale with high-accuracy requires a large computational cost.

We hope our code can help advance this field and foster new research and related work.

## Highlights and features¶

Implementation based on the Kokkos programming model for performance portability

Support for the following material models:

These are 1D models because they only depend on the radial distance. The modularity of the code allows one to easily add new models

Simulating the dynamics in another planet/axisymmetric body is relatively easy: you have to create a mesh suitable for that planet, and a suitable material model

The code implements what we refer to as “rank-1” and “rank-2” formulations:

*rank-1*:this is useful to simulate the wave dynamics due to a

*single forcing term*

*rank-2*:discrete state and forcing are stored using rank-2 tensors (i.e. matrices)

this is useful to

*simultaneously*solve the wave dynamics for*multiple forcing realizations*(e.g. multiple source locations and/or periods). This rank-2 formulation has an advantage from a computational standpoint because it has higher computational intensity, thus benefiting efficient ensemble propagation

## How to cite¶

If you use this code, please cite the github page and the following paper:

```
@article{RIZZI2021113973,
title = {A compute-bound formulation of Galerkin model reduction for linear time-invariant dynamical systems},
journal = {Computer Methods in Applied Mechanics and Engineering},
volume = {384},
pages = {113973},
year = {2021},
issn = {0045-7825},
doi = {https://doi.org/10.1016/j.cma.2021.113973},
url = {https://www.sciencedirect.com/science/article/pii/S0045782521003042},
author = {Francesco Rizzi and Eric J. Parish and Patrick J. Blonigan and John Tencer}
}
```