pyfmm.traveltime

file:

traveltime.py

author:

Zhu Dengda (zhudengda@mail.iggcas.ac.cn)

date:

2023-04

pyfmm.traveltime.travel_time_source(srcloc: list, xarr: ndarray, yarr: ndarray, zarr: ndarray, slw: ndarray, maxodr: int = 2, sphcoord: bool = False, rfgfac: int = 0, rfgn: int = 0, printbar: bool = False)[源代码]

给定源点坐标,计算全局走时场

备注

最大差分阶数maxodr不建议取3,会有数值不稳定导致结果偏差的情况。默认取2。

警告

源点附近加密网格的方法不稳定,效果时好时坏,不建议使用。

参数:
  • srcloc – 源点坐标,直角坐标系 \((x,y,z)\) 或球坐标系 \((r,\theta,\phi)\)

  • xarr\(x\)\(r\) 节点坐标数组,要求等距升序排列

  • yarr\(y\)\(\theta\) 节点坐标数组,要求等距升序排列

  • zarr\(z\)\(\phi\) 节点坐标数组,要求等距升序排列

  • slw – 形状为(nx, ny, nz)的三维慢度场

  • maxodr – 使用的最大差分阶数, 1 or 2 or 3

  • sphcoord – 是否为球坐标系

  • rfgfac – 对于源点附近的格点间加密倍数,>1

  • rfgn – 对于源点附近的格点间加密处理的辐射半径,>=1

  • printbar – 是否打印进度条

返回:

三维走时场

pyfmm.traveltime.travel_time_iniTT(iniTT: ndarray, xarr: ndarray, yarr: ndarray, zarr: ndarray, slw: ndarray, maxodr: int = 2, sphcoord: bool = False, printbar: bool = False)[源代码]

给定走时场初始状态,计算全局走时场

备注

最大差分阶数maxodr不建议取3,会有数值不稳定导致结果偏差的情况。默认取2。

参数:
  • iniTT – 走时场初始状态

  • xarr\(x\)\(r\) 节点坐标数组,要求等距升序排列

  • yarr\(y\)\(\theta\) 节点坐标数组,要求等距升序排列

  • yarr\(z\)\(\phi\) 节点坐标数组,要求等距升序排列

  • slw – 形状为(nx, ny, nz)的三维慢度场

  • maxodr – 使用的最大差分阶数, 1 or 2 or 3

  • sphcoord – 是否为球坐标系

  • printbar – 是否打印进度条

返回:

三维走时场

pyfmm.traveltime.raytracing(TT: ndarray, srcloc: list, rcvloc: list, xarr: ndarray, yarr: ndarray, zarr: ndarray, seglen: float, segfac: int = 3, sphcoord: bool = False, maxdots: int = 10000)[源代码]

根据给定源点坐标计算的走时场,使用梯度下降法做射线追踪

参数:
  • TT – 走时场

  • srcloc – 源点坐标,直角坐标系 \((x,y,z)\) 或球坐标系 \((r,\theta,\phi)\)

  • rcvloc – 接收点坐标,直角坐标系 \((x,y,z)\) 或球坐标系 \((r,\theta,\phi)\)

  • xarr\(x\)\(r\) 节点坐标数组,要求等距升序排列

  • yarr\(y\)\(\theta\) 节点坐标数组,要求等距升序排列

  • yarr\(z\)\(\phi\) 节点坐标数组,要求等距升序排列

  • seglen – 射线段长度

  • segfac – t < segfac*seglen/v,当射线追踪到在源点附近时,射线直接连接源点

  • sphcoord – 是否使用球坐标

  • maxdots – 射线最大点数

返回:

(接收点走时,形状为(ndots, 3)的射线坐标)

pyfmm.traveltime.get_traveltime(TT: ndarray, rcvloc: list, xarr: ndarray, yarr: ndarray, zarr: ndarray)[源代码]

基于线性插值,从走时场中获取任一点的走时

参数:
  • TT – 走时场

  • rcvloc – 接收点坐标,直角坐标系 \((x,y,z)\) 或球坐标系 \((r,\theta,\phi)\)

  • xarr\(x\)\(r\) 节点坐标数组,要求等距升序排列

  • yarr\(y\)\(\theta\) 节点坐标数组,要求等距升序排列

  • yarr\(z\)\(\phi\) 节点坐标数组,要求等距升序排列

返回:

接收点走时