grid spacing in Kirchhoff operator ignored for dynamic=True

Abierto
#838 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 2 días

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
56/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
numpy, python
Área
backend

Línea de trabajo

Start in waveeqprocessing.Kirchhoff and trace the byot path with dynamic=True, focusing on the traveltime gradients used for source and receiver angles and the offset aperture calculation. Compare their grid spacing and units with _traveltime_table and the aperture docstring. Done means both calculations respect physical grid spacing when dx != dz; the issue names no test, so identify the relevant tests before changing code.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

In waveeqprocessing.Kirchhoff the grid spacing is ignored in byot+dynamic gradients and in the offset aperture

mode='byot'withdynamic=True**): the traveltime gradients used for the source/receiver angles are computed as np.gradient(self.trav_srcs.reshape(*dims, ns), axis=np.arange(self.ndims)), i.e. without the grid spacing, whereas _traveltime_table(analytic/eikonal) usesnp.gradient(..., *dsamp, axis=...). With dx != dz the angles are wrong (arctan2(dT/dx·dx, dT/dz·dz)) One fix could be to pass the parameters in _traveltime_table`.

Offset aperture: aperture = abs(six - rix) / (iz + 1) with six, rix in x-grid
indices and iz in z-grid indices, while the docstring defines the aperture as offset over
depth. With dx != dz the effective physical ratio is scaled by dz/dx. One fix could be to express the
positions in metres (or in units of dz), e.g. six = (srcs[0] - x[0]) / dz.

Lenguaje dominante
Python
Estrellas
539
Forks
126
Merge medio
2 d 18 h
PR fusionados (30 d)
21

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de PyLops/pylops

Todos los issues de PyLops/pylops

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.