model.h
MODEL1D 结构体相关操作函数
- Author
Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
- Date
2024-07-24
Functions
-
void grt_realloc_mod1d(MODEL1D *mod1d, size_t n)
扩容
MODEL1D结构体- 参数:
mod1d – [inout]
MODEL1D结构体指针n – [in] 新层数
-
MODEL1D *grt_read_mod1d_from_file(const char *modelpath, real_t depsrc, real_t deprcv, bool allowLiquid)
从文件中读取模型文件
- 参数:
modelpath – [in] 模型文件路径
depsrc – [in] 震源深度
deprcv – [in] 接收深度
allowLiquid – [in] 是否允许液体层
- 返回:
MODEL1D结构体指针
-
void grt_set_mod1d_boundary(MODEL1D *mod1d, GRT_BOUND_TYPE topbound, GRT_BOUND_TYPE botbound)
设置模型的边界条件,并对底界面做检查
- 参数:
mod1d – [inout]
MODEL1D结构体指针topbound – [in] 顶层边界条件
botbound – [in] 底层边界条件
-
MODEL1D_STATE *grt_init_mod1d_state(MODEL1D *mod1d)
初始化
MODEL1D_STATE内存空间- 参数:
mod1d – [in]
MODEL1D结构体指针
- 返回:
MODEL1D_STATE结构体指针
-
MODEL1D_STATE *grt_copy_mod1d_state(const MODEL1D_STATE *mstat1)
复制
MODEL1D_STATE结构体,但其中 mod1d 指针不变- 参数:
mstat1 – [in]
MODEL1D_STATE结构体指针
- 返回:
MODEL1D_STATE结构体指针
-
void grt_update_mod1d_state_omega(MODEL1D_STATE *mstat, const cplx_t omega, const bool isElastic)
根据给定频率,设置衰减后的弹性参数;若omega实部小于0则视为弹性介质
- 参数:
mstat – [inout]
MODEL1D_STATE结构体指针omega – [in] 圆频率
isElastic – [in] 是否为忽略层内的Q值
-
void grt_update_mod1d_state_k(MODEL1D_STATE *mstat, const real_t k)
根据记录好的圆频率,给定波数,计算相速度和每层的 xa, xb, caca, cbcb
- 参数:
mstat – [inout]
MODEL1D_STATE结构体指针k – [in] 波数
-
void grt_free_mod1d_state(MODEL1D_STATE *mstat)
释放
MODEL1D_STATE结构体指针- 参数:
mstat – [out]
MODEL1D_STATE结构体指针
-
struct MODEL1D
- #include <model.h>
1D 模型结构体,包括多个水平层,以及复数形式的弹性参数
Public Members
-
size_t n
层数,注意包括了震源和接收点的虚拟层,(n>=3)
-
size_t isrc
震源所在虚拟层位, isrc>=1
-
size_t ircv
接收点所在虚拟层位, ircv>=1, ircv != isrc
-
bool ircvup
接收点位于浅层, ircv < isrc
-
bool io_depth
读取的模型首列为每层顶界面深度
-
bool srcrcv_isInserted
震源和台站是否已经以虚拟层的形式插入
-
bool *isLiquid
每层是否为液体层
-
GRT_BOUND_TYPE topbound
顶界面的边界条件
-
GRT_BOUND_TYPE botbound
底界面的边界条件
-
size_t n
-
struct MODEL1D_STATE