Update 12.16.2013

After beginning initial round of testing for integration into development0.04, the usml regression test suite was run. There were 7 failed regression tests. Among these was the eigenray_basic. This test showed that the transmission losses that were produced by the model, were exceeding the accepted variance of 0.1 dB. After further investigation of this anomoly, it was found that the transmission losses were not transitioning smoothly around a bounded azimuthal rayfan (there were discontinuities in the TL plots). This required changes to the way the intensity was calculated.

1) widths in the azimuthal direction now only loop if the az+1 is greater then size of source_az minus one, instead of greater then or equal. This fix prevents the widths for azimuthal contributions from looping prematurely, as the final azimuthal angle is still valid for calculating the correct distance between azimuths.

2) although the corrects added at the start of this branch resolved all issues with az boundary conditions, it failed to address non-bondary conditions, or treated them as the same as boundary conditions. Therefore, it was required that we add additional checks to prohibit the intensity contributions in the azimuthal direction to no longer loop. Doing so, brought the transmission loss calculations back into alignment with the preceived values.

3) two tests were repurposed. The eigenray_de/az_branch_pt tests were redefined to address the two conditions above. This allowed us to investigate in great detail and resolve the issues. The two new tests are eigenray_tl_az and eigenray_tl_grid. Although, eigenray_tl_grid contains in itself a copy of the eigenray_tl_az run, to lesson the time of small azimuthal analysis, an alternate, smaller test was created.

4) after prior assessment, it was determined that the logic in is_closest_ray should only check to see if a point on the wavefront is closer to the target when not on the central depression angle. The reason for this, is that when checking to the left or the right of the central point, it is possible that either the left or right of the purposed CPA could be closer, but on_edge. Since we cannot use on_edge rays for CPAs, it would fail to find the eigenray.

5) finally, in wave_queue.cc, the looping conditions for azimuthal boundaries was not sufficient. Therefore, additional checks were added to ensure that the boundary condition would only be meet when the azimuthal angles really did come full circle.