model.h
GRT_MODEL1D 结构体相关操作函数
- Author
Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
- Date
2024-07-24
Functions
-
void grt_print_mod1d(const GRT_MODEL1D *mod1d)
打印 GRT_MODEL1D 模型参数信息,主要用于调试程序
- 参数:
mod1d – [in]
GRT_MODEL1D结构体指针
-
void grt_free_mod1d(GRT_MODEL1D *mod1d)
释放
GRT_MODEL1D结构体指针- 参数:
mod1d – [out]
GRT_MODEL1D结构体指针
-
GRT_MODEL1D *grt_init_mod1d(size_t n)
初始化 GRT_MODEL1D 模型内存空间
- 参数:
n – [in] 模型层数
- 返回:
GRT_MODEL1D结构体指针
-
GRT_MODEL1D *grt_copy_mod1d(const GRT_MODEL1D *mod1d1)
复制
GRT_MODEL1D结构体- 参数:
mod1d1 – [in]
GRT_MODEL1D源结构体指针- 返回:
复制好的
GRT_MODEL1D结构体指针
-
void grt_attenuate_mod1d(GRT_MODEL1D *mod1d, cplx_t omega)
根据不同的 omega, 计算衰减系数,更新弹性模量
- 参数:
mod1d – [inout]
MODEL1D结构体指针omega – [in] 复数频率
-
void grt_mod1d_xa_xb(GRT_MODEL1D *mod1d, const real_t k)
根据记录好的圆频率和波数,计算相速度和每层的 xa, xb, caca, cbcb
- 参数:
mod1d – [inout] 模型结构体指针
k – [in] 波数
-
void grt_realloc_mod1d(GRT_MODEL1D *mod1d, size_t n)
扩容
GRT_MODEL1D结构体- 参数:
mod1d – [inout]
MODEL1D结构体指针n – [in] 新层数
-
GRT_MODEL1D *grt_read_mod1d_from_file(const char *command, const char *modelpath, real_t depsrc, real_t deprcv, bool allowLiquid)
从文件中读取模型文件
- 参数:
command – [in] 命令名称
modelpath – [in] 模型文件路径
depsrc – [in] 震源深度
deprcv – [in] 接收深度
allowLiquid – [in] 是否允许液体层
- 返回:
GRT_MODEL1D结构体指针
-
void grt_get_model_diglen_from_file(const char *command, const char *modelpath, size_t diglen[6])
从模型文件中判断各个量的大致精度(字符串长度),以确定浮点数输出位数
- 参数:
command – [in] 命令名称
modelpath – [in] 模型文件路径
diglen – [out] 每一列的最大字符串长度
-
bool grt_check_vel_in_mod(const GRT_MODEL1D *mod1d, const real_t vel, const real_t tol)
浮点数比较,检查模型中是否存在该速度(不论Vp,Vs)
- 参数:
mod1d – [in] 模型
vel – [in] 输入速度
tol – [in] 浮点数比较精度
- 返回:
是否存在
-
void grt_get_mod1d_vmin_vmax(const GRT_MODEL1D *mod1d, real_t *vmin, real_t *vmax)
计算最大最小速度(非零值)
- 参数:
mod1d – (in)
GRT_MODEL1D结构体指针vmin – (out)最小速度
vmax – (out)最大速度
-
struct GRT_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
读取的模型首列为每层顶界面深度
-
cplx_t omega
圆频率
-
cplx_t c_phase
当前相速度
-
cplx_t *mu
mu[n] \( V_b^2 * \rho \)
-
cplx_t *lambda
lambda[n] \( V_a^2 * \rho - 2*\mu \)
-
cplx_t *delta
delta[n] \( (\lambda+\mu)/(\lambda+3*\mu) \)
-
cplx_t *atna
-
cplx_t *atnb
-
cplx_t *xa
-
cplx_t *xb
-
cplx_t *caca
-
cplx_t *cbcb
-
int stats
-
cplx_t R_EV[2][2]
-
cplx_t R_EVL
-
cplx_t uiz_R_EV[2][2]
-
cplx_t uiz_R_EVL
-
cplx_t src_coef[GRT_SRC_M_NUM][GRT_QWV_NUM][2]
震源系数 \( P_m, SV_m, SH_m \)
-
size_t n