util.h
其它辅助函数
- Author
Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
- Date
2025-08
Functions
-
char **grt_string_split(const char *string, const char *delim, size_t *size)
指定分隔符,从一串字符串中分割出子字符串数组
- 参数:
string – [in] 原字符串
delim – [in] 分隔符
size – [out] 分割后的子字符串数组长度
- 返回:
子字符串数组
-
char **grt_string_from_file(FILE *fp, size_t *size)
从文本文件中,将每行内容读入字符串数组
- 参数:
fp – [inout] 文件指针
size – [out] 读入的字符串数组长度
- 返回:
字符串数组
-
bool grt_string_composed_of(const char *str, const char *alws)
判断字符串是否由特定的若个字符组成(充分条件)
- 参数:
str – [in] 待检查的字符串
alws – [in] 允许的字符集合
- 返回:
是否符合
-
int grt_string_ncols(const char *string, const char *delim)
指定分隔符,获得字符串的分割出的子字符串数。 相当于是 grt_string_split 函数的简化版本
- 参数:
string – [in] 原字符串
delim – [in] 分隔符
- 返回:
子字符串数
-
const char *grt_get_basename(const char *path)
从路径字符串中找到用/或\分隔的最后一项
- 参数:
path – [in] 路径字符串指针
- 返回:
指向最后一项字符串的指针
-
void grt_trim_whitespace(char *str)
去除字符串首尾空白
- 参数:
str – [inout] 字符串
-
bool grt_is_comment_or_empty(const char *line)
检查是否为注释行或空行
- 参数:
line – [in] 读入一行的字符串
-
ssize_t grt_getline(char **lineptr, size_t *n, FILE *stream)
由于 Windows MSYS2 环境没有 getline 函数(即使定义了 _GNU_SOURCE) 所以这里需要使用自定义的 getline 函数,参数与 POSIX 定义相同
-
void grt_GF_freq2time_write_to_file(const char *command, const GRT_MODEL1D *mod1d, const char *s_output_dir, const char *s_modelname, const char *s_depsrc, const char *s_deprcv, const real_t wI, GRT_FFTW_HOLDER *pt_fh, const size_t nr, char *s_dists[nr], const real_t dists[nr], real_t travtPS[nr][2], const real_t depsrc, const real_t deprcv, const real_t delayT0, const real_t delayV0, const bool calc_upar, const bool doEX, const bool doVF, const bool doHF, const bool doDC, const char *chalst, cplx_t *grn[nr][GRT_SRC_M_NUM][GRT_CHANNEL_NUM], cplx_t *grn_uiz[nr][GRT_SRC_M_NUM][GRT_CHANNEL_NUM], cplx_t *grn_uir[nr][GRT_SRC_M_NUM][GRT_CHANNEL_NUM])
处理单个震中距对应的数据逆变换和SAC保存
- 参数:
command – [in] 模块名
mod1d – [in] 模型结构体指针
s_output_dir – [in] 保存目录(调用前已创建)
s_modelname – [in] 模型名称
s_depsrc – [in] 震源深度字符串
s_deprcv – [in] 接收深度字符串
wI – [in] 虚频率
pt_fh – [inout] FFTW结构体
nr – [in] 震中距数量
s_dists – [in] 输入的震中距字符串数组
dists – [in] 震中距数组
travtPS – [out] 保存不同震中距的初至P、S
depsrc – [in] 震源深度
deprcv – [in] 接收深度
delayT0 – [in] 延迟时间
delayV0 – [in] 参考速度
calc_upar – [in] 是否计算位移偏导
doEX – [in] 是否保存爆炸源结果
doVF – [in] 是否保存垂直力源结果
doHF – [in] 是否保存水平力源结果
doDC – [in] 是否保存剪切力源结果
doDC – [in] 是否保存剪切力源结果
chalst – [in] 要保存的分量字符串
grn – [in] 格林函数频谱结果
grn_uiz – [in] 格林函数对z偏导频谱结果
grn_uir – [in] 格林函数对r偏导频谱结果