grid spacing in Kirchhoff operator ignored for dynamic=True

Aperta
#838 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
56/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
numpy, python
Ambito
backend

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Python
Stelle
539
Fork
126
Merge medio
2g 18h
PR unite (30g)
21

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di PyLops/pylops

Tutte le issue di PyLops/pylops

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.