関数ray_traveltime_1Dscalar_givenLocations マニュアル

(The documentation of function ray_traveltime_1Dscalar_givenLocations)

Last Update: 2021/12/6


◆機能・用途(Purpose)

与えられた1次元速度構造のもとで2地点間の走時を計算する。
Calculate the travel time between two points using a given 1D velocity structure.


◆形式(Format)

#include <ray/calculate1Dscalar.h>
inline double ray_traveltime_1Dscalar_givenLocations
(const double x1,const double z1,const double x2,const double z2,
 const struct _1DvelocityStructure structure)


◆引数(Arguments)

x1 計算に用いる一方の地点の水平位置。
The horizontal location of one point used for the calculation.
z1 \(x_1\)に対応する地点の深さ。
The depth of the point corresponding to \(x_1\).
x2 計算に用いる他方の地点の水平位置。
The horizontal location of the other point used for the calculation.
z2 \(x_2\)に対応する地点の深さ。
The depth of the point corresponding to \(x_2\).
structure 1次元速度構造。
A 1D velocity structure.


◆戻り値(Return value)

\((x_1,z_1)\)と\((x_2,z_2)\)の間の走時。 2地点を結ぶ波線パラメータが複数存在する場合もあるが、 その中で最短の走時を返す。 2地点を結ぶ波線パラメータが存在しない場合はエラーとなる。
The travel time between the two points \((x_1,z_1)\) and \((x_2,z_2)\). There may be multiple ray parameters between the two points, and the minimum value of the travel time for them is returned. In cases where there is no ray parameter that connects the two points, the program finishes as an error.


◆使用例(Example)

struct _1DvelocityStructure structure;
double traveltime=ray_traveltime_1Dscalar_givenLocations (0.0,1000.0,5000.0,2000.0,structure);


◆検証(Validation)

位置\((x,z)=(0,0)\)から斜め下方に既知の角度で射出された波線上の位置での走時を この関数を使って求め、解析解と比較する。 ここで\(x\)軸は水平面内で波線の伝搬方向に、\(z\)軸は鉛直下向きに取るものとする。 なお解析解自体の検証は関数ray_horizontal_distance_1Dscalar, ray_traveltime_1Dscalarにおいて実施済みである。
The travel times on the ray starting from \((x,z)=(0,0)\) with a known take-off angle are calculated by this function and are compared with those by analytical solutions. Here, \(x\) is taken horizontally in the ray propagation direction and \(z\) is taken downward. Note that the analytical solutions have already been checked in the validations of functions ray_horizontal_distance_1Dscalar and ray_traveltime_1Dscalar.

速度構造として以下のものを使用する。 速度勾配が複雑に変化する構造であり、 この構造のもとで解析解とこの関数を用いた結果が偶然一致するとは考えにくい。
The velocity structure shown below is used for this check. Owing to the complicated velocity slope changes, it is unlikely that the travel times computed by this function are “by chance” consistent with the analytical solution.

深さ [m]
Depth [m]
速度 [m/s]
Velocity [m/s]
02000
10002200
30003200
50004000
60005000
80005100
110006900
130007000
150007500

この速度構造のもとで\((x,z)=(0,0)\)から下記の地点までの走時を求める。 これらは\((x,z)=(0,0)\)を出発した波線パラメータ\(p=1/7250\) [s/m]の波が 通過する地点であり、位置\((x,z)=(0,0)\)とこれらの地点を結ぶ波線パラメータが 第2列に示す値であることが関数rayParameters_1Dscalarの検証において分かっている。 この表において★は\((x,z)=(0,0)\)から到達地点まで単調に深くなる波線であり、 ほかは一旦深部まで潜ってから戻ってくる波線である (関数survey_ray_type_1Dscalarにより判定)。
Using this structures, traveltimes from \((x,z)=(0,0)\) to the destination points shown below are calculated. These destination points are locations where the ray started from \((x,z)=(0,0)\) with a ray parameter \(p=1/7250\) [s/m] passes through. All the ray parameters connecting the origin \((x,z)=(0,0)\) and these destination points are shown in the 2nd column, which were obtained in the validation of function rayParameters_1Dscalar. In this table, stars (★) represent a ray that increases its depth monochromatically, while the other rays go deeper and then returns back, according to function survey_ray_type_1Dscalar.

波線の到達地点の\((x,z)\)座標[m]
The \((x,z)\) coordinate of the destination location of the ray [m]
推定された波線パラメータの逆数[m/s]
The inverse of the estimated ray parameters [m/s]
(302.662843, 1000.0) 7249.999998★
(661.989115, 2000.0) 7250.000004★
(1107.808505, 3000.0) 7250.000001★
(1639.115527, 4000.0) 7250.000000★
(2255.011559, 5000.0) 7249.999999★
(3051.704870, 6000.0) 7250.000000★
(4013.250441, 7000.0) 7250.000000★
(4993.468906, 8000.0) 7250.000000★
(6114.597955, 9000.0) 7250.000000★
(7601.944169, 10000.0) 7250.000000★
(9872.619722, 11000.0) 7250.000000★
(13101.511010, 12000.0) 7250.000000★
(16631.873715, 13000.0) 7250.000000★
(31731.542585, 13000.0) 7002.045022★, 7250.000000, 7008.049413
(35261.905290, 12000.0) 7250.000000, 7090.912958, 6956.175570
(38490.796577, 11000.0) 7250.000000, 7178.141855, 6931.476229
(40761.472130, 10000.0) 7249.999998, 7221.445871, 6927.875722
(42248.818345, 9000.0) 7249.999996, 7237.401867, 6927.220636
(43369.947394, 8000.0) 7250.000033, 7246.376812, 6926.907547
(44350.165859, 7000.0) 7253.454800, 7250.000031, 6926.678607
(45311.711430, 6000.0) 7260.554564, 7249.999997, 6926.459368, 5100.045011, 5096.119175
(46108.404741, 5000.0) 7265.798440, 7250.000001, 6926.306465, 5100.355535, 5089.309499
(46724.300773, 4000.0) 7269.268220, 7249.999998, 6926.210081, 5100.552120, 5086.835515
(47255.607794, 3000.0) 7272.101704, 7249.999996, 6926.133433, 5100.723526, 5085.064553
(47701.427184, 2000.0) 7274.358576, 7249.999998, 6926.073693, 5100.863952, 5083.788325
(48060.753457, 1000.0) 7276.091641, 7250.000003, 6926.028608, 5100.972775, 5082.881320


●走時の解析解 (Analytical solutions for the travel times)

波の出発地点と到達地点の位置および波線パラメータを与えれば 計算式の(26)式によって走時を計算できる。 例えば\((x,z)=(0,0)\)から\((x,z)=(302.662843,1000.0)\)までの走時を求めるには (26)式において
とすれば良い。 なお速度勾配が変わるところでは深さ範囲を区切って計算する必要がある。 また波線パラメータの逆数がちょうど速度と一致する深さにおいて 波線が水平になることに注意して計算する。 ここではymaeda_opentoolsの関数を使用せず、 (26)式に基づいて上記の方法での計算をawkで行った。 また波線パラメータは関数rayParameters_1Dscalarで求めた上の表の値を用いたが、 1/7250 [s/m]に対応する値については 関数rayParameters_1Dscalarで求めた丸め誤差を含む値ではなく 理論値である1/7250 [s/m]を用いた。
Given the locations of origin and destination points and a ray parameter, the travel time is calculated with eq. (26) of Formula. For example, the travel time from \((x,z)=(0,0)\) to \((x,z)=(302.662843,1000.0)\) is calculated by using:
in eq. (26). The calculation must be separated to sections of depths at points where the velocity slope changes. Also note that the ray is become horizontal at a depth where the inverse of the ray parameter is equal to the velocity. Here, functions in ymaeda_opentools are not used; these values were calculated by awk using eq. (26) with the approach explained above. For the ray parameters, the values obtained by function rayParameters_1Dscalar, shown above, were used; however, a theoretical value of 1/7250 [s/m] was used instead of the corresponding value obtained by the function rayParameters_1Dscalar which holds a rounding error.


●走時の数値解 (Numerical solutions for the travel times)

\((x,z)=(0,0)\)から上の表に示した各地点までの走時を 関数ray_traveltime_1Dscalar_givenLocationsを用いて計算した。 この計算においては波線パラメータは明示的に与える必要はなく、 2地点間を結ぶ波線パラメータの中で走時の最小値を与えるものが採択される。
The travel times from \((x,z)=(0,0)\) to individual destination points shown in the table above were calculated with the function ray_traveltime_1Dscalar_givenLocations. Note that the ray parameter needs not be specified, and when there are multiple ray parameters that connect the two points, the one that gives the smallest travel time is adopted.


●比較 (Comparison)

得られた解析解(ymaeda_opentools不使用)と 数値解(この関数を使用)の比較を下表に示す。
The table below shows a comparison of the analytical solutions (obtained without using ymaeda_opentools) and analytical ones (obtained using this function).

波線の到達地点の\((x,z)\)座標[m]
The \((x,z)\) coordinate of the destination location of the ray [m]
解析解で使用する波線パラメータの逆数[m/s]
The inverse of the ray parameter used for the analytical solution [m/s]
走時(解析解) [s]
The travel time (analytical solution) [s]
走時(数値解) [s]
The travel time (numerical solution) [s]
(302.662843, 1000.0) 7250.000000★ 0.497883 0.497883
(661.989115, 2000.0) 7250.000000★ 0.933013 0.933013
(1107.808505, 3000.0) 7250.000000★ 1.304962 1.304962
(1639.115527, 4000.0) 7250.000000★ 1.638346 1.638346
(2255.011559, 5000.0) 7250.000000★ 1.947643 1.947643
(3051.704870, 6000.0) 7250.000000★ 2.232573 2.232573
(4013.250441, 7000.0) 7250.000000★ 2.508651 2.508651
(4993.468906, 8000.0) 7250.000000★ 2.784573 2.784573
(6114.597955, 9000.0) 7250.000000★ 3.062885 3.062885
(7601.944169, 10000.0) 7250.000000★ 3.361569 3.361569
(9872.619722, 11000.0) 7250.000000★ 3.737091 3.737091
(13101.511010, 12000.0) 7250.000000★ 4.225197 4.225197
(16631.873715, 13000.0) 7250.000000★ 4.751244 4.751244
(31731.542585, 13000.0) 7002.045022★ 6.889079 6.883021
7250.000000 6.883021
7008.049413 6.889186
(35261.905290, 12000.0) 7250.000000 7.409068 7.396567
7090.912958 7.410052
6956.175570 7.396567
(38490.796577, 11000.0) 7250.000000 7.897175 7.871687
7178.141855 7.897235
6931.476229 7.871687
(40761.472130, 10000.0) 7250.000000 8.272696 8.243838
7221.445871 8.272699
6927.875722 8.243837
(42248.818345, 9000.0) 7250.000000 8.571381 8.541702
7237.401867 8.571381
6927.220636 8.541702
(43369.947394, 8000.0) 7250.000000 8.849693 8.819606
7246.376812 8.849693
6926.907547 8.819606
(44350.165859, 7000.0) 7253.454800 9.125614 9.095225
7250.000000 9.125614
6926.678607 9.095225
(45311.711430, 6000.0) 7260.554564 9.401693 9.371013
7250.000000 9.401693
6926.459368 9.371013
5100.045011 10.557822
5096.119175 10.557763
(46108.404741, 5000.0) 7265.798440 9.686623 9.655738
7250.000000 9.686623
6926.306465 9.655738
5100.355535 10.816666
5089.309499 10.816213
(46724.300773, 4000.0) 7269.268220 9.995919 9.964904
7250.000000 9.995920
6926.210081 9.964904
5100.552120 11.113090
5086.835515 11.112394
(47255.607794, 3000.0) 7272.101704 10.329303 10.298184
7250.000000 10.329304
6926.133433 10.298184
5100.723526 11.436773
5085.064553 11.435868
(47701.427184, 2000.0) 7274.358576 10.701251 10.670051
7250.000000 10.701252
6926.073693 10.670051
5100.863952 11.801464
5083.788325 11.800391
(48060.753457, 1000.0) 7276.091641 11.136381 11.105120
7250.000000 11.136383
6926.028608 11.105120
5100.972775 12.231289
5082.881320 12.230087

表の解析解の中で太字で示したものが各到達地点における走時の最小値である。 これを数値解と比較すると最大でも0.000001 [s]のずれで一致している。 したがってこの関数で走時を正しく計算できたと判断できる。
The bold value of the analytical solutions in the table shows the minimum travel time at each destination point. These values are consistent with the numerical solutions with the maximum error of 0.000001 [s], indicating that the travel times were correctly calculated by this function.