grid spacing in Kirchhoff operator ignored for dynamic=True

未关闭
#838 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 2 天内回复

还没有人认领这个 Issue。

评估

难度
3/5
预计耗时
1-2 天
新手友好度
56/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
numpy, python
领域
backend

调研方向

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.

由索引模型根据 Issue 内容生成。

描述

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.

主要语言
Python
星标
539
派生
126
平均合并
2 天 18 小时
30 天内合并 PR
21

环境准备

  • 没有 Dockerfile 或 Docker Compose 文件
  • 没有 Pull Request 模板
  • 阅读贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

PyLops/pylops 的其他 Issue

查看 PyLops/pylops 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。