Eigenray search

Eigenray search is perhaps one of the most difficult problems to tackle within the context of ray tracing. Stated simply as the task of calculating a set of rays, which connect the source to the receiver, it is important to keep in mind that in general rays can be sent backwards to the source. Therefore, if a ray misses the receiver when propagating forward it still has the chance to hit the receiver on its way back to the source. Further complications arise when the rays can be absorbed by the boundaries, or when small variations of the launching angle lead to non-linear variations of ray trajectories (a situation, typical of the placing of objects inside the waveguide). In order to provide a robust method of eigenray search TRACEO uses two different approaches to the problem, namely:
  1. If all rays are propagating forwards, TRACEO interpolates ray depth at each array range for every launching angle. This procedure generates a matrix of the form:

    \begin{displaymath}
\left[
\begin{array}{cccccc}
& r_1 & r_2 & r_3 & \ldots & ...
... & z_3(\theta_n) & \ldots & z_m(\theta_n)
\end{array} \right]
\end{displaymath}

    where $z_i(\theta_j)$ represents ray depth at range $i$ and launching angle $j$. Then, at the $i$th range, with the hydrophone located at depth $z_h$, TRACEO calculates the function

    \begin{displaymath}f(\theta) = z_h -z_i(\theta) \end{displaymath}

    using the correspond row of the matrix; if an eigenray exists in the interval $i$ and $i+1$, the function $f(\theta)$ will switch signs between $\theta_i$ and $\theta_{i+1}$; in such case the Regula Falsi method is used to find the zero of the function. Once the zero is found the ray is calculated, and written to the output file as an eigenray. In order to avoid an infinite loop the eigenray search is interrupted if the number of iterations is greater than a given limit. Particular care is taken in order to deal with rays, which for any reason do not reach the given array range. The search is interrupted if a ``returning'' ray is detected. The Regula Falsi method is computationally accurate and efficient, as long as the function $z(\theta)$ can be properly computed, which won't be the case for returning rays.
  2. As an alternative to the previous method TRACEO can use a less accurate (but stable) search of eigenrays by proximity. At each range ray depth $z$ is calculated, and for each depth (if there is more than one) TRACEO calculates the difference

    \begin{displaymath}\left\vert z_h -z \right\vert  , \end{displaymath}

    where $z_h$ represents hydrophone depth; if the difference is less than a given threshold TRACEO writes the ray to the output file as an eigenray. Certainly, the accuracy of the method depends on the choice of the threshold, and on the number of launching angles (the more, the better). Until a better approach is idealized for dealing with returning rays the proximity method seems to offer a reasonable compromise between accuracy and stability.
Eigenrays are not grouped by TRACEO according the coordinates of the array; they are witten progressively, one after another, to the output file. It is up to the user to group them according to the position of each hydrophone.

Orlando Camargo Rodríguez 2012-06-21