Skip to content

Computing du/dx + dt*dv/dx #1603

@lsawade

Description

@lsawade

Task description

Likely the most invasive step in the attenuation implementation.

For the Runge-Kutta integration, we need strain at the next time step. In specfem3d this is done by taylor expanding the current strain $\partial u_i/\partial x_j$ in time such that

$$\frac{\partial u_i (t+\Delta t)}{\partial x_j} = \frac{\partial u_i (t)}{\partial x_j} + \Delta \frac{\partial \dot{u}_i (t)}{\partial x_j} = \frac{\partial u_i (t)}{\partial x_j} + \Delta \frac{\partial v_i (t)}{\partial x_j}$$

So that we can compute $\epsilon^n$ and $\epsilon^{n+1}$ from the displacement and velocity gradients.

Which are used in the computation of the attenuation memory variable, e.g., for $\kappa$:

$$R^{\ell,n+1}_\kappa = \alpha^\ell \cdot R^{\ell,n}_\kappa + \kappa_{\text{GLL}} \cdot \Psi^\ell_{\kappa,\text{GLL}} \cdot \left(\beta^\ell_{\text{RK}} \cdot S_n + \gamma^\ell_{\text{RK}} \cdot S_{n+1}\right),$$

where, for the computation of $R_\kappa$, $S^{n}$ is the trace of the strain $\epsilon^{n}$.

So this involves the gradient computation of the velocity. With subsequent storage of

Acceptance criteria

  • Future field derivatives can be stored.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions