eigenfn.h

使用 广义反射透射系数矩阵 将某层的垂直波函数传播到整个模型的物理层上下两侧, 再计算任意深度的本征函数

Author

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

Date

2025-07

Functions

void grt_get_mod_potential_Up_Down_Rayl(MODEL1D_STATE *mstat, const size_t iref, const cplx_t potRaylLove[GRT_RAYL_DIM], const cplx_t potRaylLoveUp[GRT_RAYL_DIM], cplx_t (*mod_potRaylLove_Down)[GRT_RAYL_DIM], cplx_t (*mod_potRaylLove_Up)[GRT_RAYL_DIM])

已知某个界面 z_j+ 上的垂直波函数,计算模型每个分界面 z_j+ 和 z_j- 的垂直波函数 P-SV

参数:
  • mstat[inout] 模型结构体指针

  • iref[in] 已知垂直波函数的层位

  • potRaylLove[in] 已知 z_iref+ 垂直波函数

  • potRaylLoveUp[in] 已知 z_iref- 垂直波函数

  • mod_potRaylLove_Down[out] 每层 z_j+ 的垂直波函数

  • mod_potRaylLove_Up[out] 每层 z_j- 的垂直波函数

void grt_get_mod_potential_Up_Down_Love(MODEL1D_STATE *mstat, const size_t iref, const cplx_t potRaylLove[GRT_LOVE_DIM], cplx_t (*mod_potRaylLove_Down)[GRT_LOVE_DIM], cplx_t (*mod_potRaylLove_Up)[GRT_LOVE_DIM])

已知某个界面 z_j+ 上的垂直波函数,计算模型每个分界面 z_j+ 和 z_j- 的垂直波函数 SH

void grt_get_mod_potential_Up_Down(MODEL1D_STATE *mstat, const DISPER_TYPE wtype, const size_t ncols, const size_t iref, const cplx_t potRaylLove[ncols], const cplx_t potRaylLoveUp[ncols], cplx_t (*mod_potRaylLove_Down)[ncols], cplx_t (*mod_potRaylLove_Up)[ncols])

合并 get_mod_potential_Up_Down_Rayl(Love)

void grt_get_eigenfn_single_depth_Rayl(const MODEL1D_STATE *mstat, const cplx_t (*mod_potRaylLove_Down)[GRT_RAYL_DIM], const cplx_t (*mod_potRaylLove_Up)[GRT_RAYL_DIM], cplx_t T0[GRT_RAYL_DIM][GRT_RAYL_DIM], const bool reuseT, const real_t zsamp, const size_t ziref, cplx_t eigenfn[4])

计算某个深度处的本征函数 P-SV

参数:
  • mstat[in] 模型结构体指针

  • mod_potRaylLove_Down[in] 每层 z_j+ 的垂直波函数

  • mod_potRaylLove_Up[in] 每层 z_j- 的垂直波函数

  • T0[inout] 介质层矩阵

  • reuseT[in] 是否可直接使用传入的 T0

  • zsamp[in] 采样点深度

  • ziref[in] 采样点层位

  • eigenfn[out] 采样点本征函数

void grt_get_eigenfn_single_depth_Love(const MODEL1D_STATE *mstat, const cplx_t (*mod_potRaylLove_Down)[GRT_LOVE_DIM], const cplx_t (*mod_potRaylLove_Up)[GRT_LOVE_DIM], cplx_t T0[GRT_LOVE_DIM][GRT_LOVE_DIM], const bool reuseT, const real_t zsamp, const size_t ziref, cplx_t eigenfn[4])

计算某个深度处的本征函数 SH

void grt_get_eigenfn_depths_Rayl(const MODEL1D_STATE *mstat, const cplx_t (*mod_potRaylLove_Down)[GRT_RAYL_DIM], const cplx_t (*mod_potRaylLove_Up)[GRT_RAYL_DIM], const EIGENFN_INFO *eigfnmet, EIGENFN *eigfn)

计算多个深度处的本征函数 P-SV

参数:
  • mstat[in] 模型结构体指针

  • mod_potRaylLove_Down[in] 每层 z_j+ 的垂直波函数

  • mod_potRaylLove_Up[in] 每层 z_j- 的垂直波函数

  • eigfnmet[in] 本征函数数据结构体指针

  • eigfn[out] 某频率某本征值的本征函数及相关

void grt_get_eigenfn_depths_Love(const MODEL1D_STATE *mstat, const cplx_t (*mod_potRaylLove_Down)[GRT_LOVE_DIM], const cplx_t (*mod_potRaylLove_Up)[GRT_LOVE_DIM], const EIGENFN_INFO *eigfnmet, EIGENFN *eigfn)

计算多个深度处的本征函数 SH

void grt_get_eigenfn_depths(const MODEL1D_STATE *mstat, const DISPER_TYPE wtype, const size_t ncols, const cplx_t (*mod_potRaylLove_Down)[ncols], const cplx_t (*mod_potRaylLove_Up)[ncols], const EIGENFN_INFO *eigfnmet, EIGENFN *eigfn)

合并 get_eigenfn_depths_Rayl(Love)