fsm.h
- Author
Zhu Dengda (zhudengda@mail.iggcas.ac.cn)
- Date
2023-05
Functions
-
void set_fsm_num_threads(MYINT num_threads)
定义OpenMP多线程数
- 参数:
num_threads – (in)线程数
-
MYINT FastSweeping(const double *rs, MYINT nr, const double *ts, MYINT nt, const double *ps, MYINT np, double rr, double tt, double pp, MYINT maxodr, const MYREAL *Slw, MYREAL *TT, bool sphcoord, MYINT rfgfac, MYINT rfgn, bool printbar, double eps, MYINT maxLoops, bool isparallel)
使用Fast Sweeping Method计算全局走时场
- 参数:
rs – (in)维度1坐标数组
nr – (in)rs长度
ts – (in)维度2坐标数组
nt – (in)ts长度
ps – (in)维度2坐标数组
np – (in)ps长度
rr – (in)源点维度1坐标
tt – (in)源点维度2坐标
pp – (in)源点维度3坐标
maxodr – (in)使用的最大差分阶数
Slw – (in)展平的三维慢度场
TT – (inout)展平的三维走时场,如果初始值有非零值,会被直接加入堆中,此时源点不再使用
sphcoord – (in)是否使用球坐标
rfgfac – (in)对于源点附近的格点间加密倍数,>1
rfgn – (in)对于源点附近的格点间加密处理的辐射半径,>=1
printbar – (in)是否打印进度条
eps – (in)Sweep后的最大更新量达到收敛条件
maxLoops – (in)Fast Sweeping Method整体迭代次数(对于3D模型,向8个方向各Sweep一次为迭代一次)
isparallel – (in)是否使用并行FSM
- 返回:
nsweep, sweep次数
-
MYINT FastSweeping_with_initial(const double *rs, MYINT nr, const double *ts, MYINT nt, const double *ps, MYINT np, MYINT maxodr, const MYREAL *Slw, MYREAL *TT, char *FMM_stat, bool sphcoord, bool printbar, double eps, MYINT maxLoops, bool isparallel)
在有初始走时的情况下使用Fast Marching Method计算全局走时场
- 参数:
rs – (in)维度1坐标数组
nr – (in)rs长度
ts – (in)维度2坐标数组
nt – (in)ts长度
ps – (in)维度2坐标数组
np – (in)ps长度
maxodr – (in)使用的最大差分阶数
Slw – (in)展平的三维慢度场
TT – (inout)展平的三维走时场
FMM_stat – (out)记录每个节点的状态(alive, close, far)
sphcoord – (in)是否使用球坐标
printbar – (in)是否打印进度条
eps – (in)Sweep后的最大更新量达到收敛条件
maxLoops – (in)Fast Sweeping Method整体迭代次数(对于3D模型,向8个方向各Sweep一次为迭代一次)
isparallel – (in)是否使用并行FSM
- 返回:
nsweep, sweep次数