Closed campreilly closed 9 years ago
Could this be related to the work that we did on Issue #36? That issue says,
"If the target is directly above or directly below the source, it is unclear if the eigenray calculation can accurately predict the propagation loss. In this case, all of the azimuths will contribute to the Gaussian beam."
Created a stand-alone test and got these results. Using the same setup that you have, but I have two targets separated from the source by +/- 5 meters.
=== shadow_eigenrays_test ===
creating ocean
computing max_time
propagating wavefront for 1.215
___eigenray for target(0,0) found___
count = 1 time = 0.00316782
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.1831, 0)
srf = 0 bot = 0
___eigenray for target(1,0) found___
count = 1 time = 0.00316782
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (-80.1831, 0)
srf = 0 bot = 0
___eigenray for target(0,0) found___
count = 2 time = 0.00950694
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (-80.1831, 0)
srf = 1 bot = 0
___eigenray for target(1,0) found___
count = 2 time = 0.015838
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (-80.1831, 0)
srf = 1 bot = 0
___eigenray for target(1,0) found___
count = 3 time = 0.237597
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.1831, 0)
srf = 0 bot = 1
___eigenray for target(0,0) found___
count = 3 time = 0.243934
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.1831, 0)
srf = 0 bot = 1
___eigenray for target(1,0) found___
count = 4 time = 0.250271
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.1831, 0)
srf = 1 bot = 1
___eigenray for target(0,0) found___
count = 4 time = 0.256604
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.1831, 0)
srf = 1 bot = 1
___eigenray for target(1,0) found___
count = 5 time = 0.491033
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.183, 0)
srf = 1 bot = 2
___eigenray for target(0,0) found___
count = 5 time = 0.497369
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.183, 0)
srf = 1 bot = 2
___eigenray for target(1,0) found___
count = 6 time = 0.503703
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.183, 0)
srf = 2 bot = 2
___eigenray for target(0,0) found___
count = 6 time = 0.51004
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.183, 0)
srf = 2 bot = 2
Finished propagation
Ran again with all the same parameters that you used and placed both targets on top of the source, which appear to give the correct results. (Note DE +/-90 are not value launch angles for eigenrays). Only the src->bottom->surface->target appears to have been shadowed.
=== shadow_eigenrays_test ===
creating ocean
computing max_time
propagating wavefront for 1.22
___eigenray for target(0,0) found___
count = 1 time = 0.0126707
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (-80.1831, 0)
srf = 1 bot = 0
___eigenray for target(1,0) found___
count = 1 time = 0.0126707
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (-80.1831, 0)
srf = 1 bot = 0
___eigenray for target(0,0) found___
count = 2 time = 0.240768
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.1831, 0)
srf = 0 bot = 1
___eigenray for target(1,0) found___
count = 2 time = 0.240768
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.1831, 0)
srf = 0 bot = 1
___eigenray for target(0,0) found___
count = 3 time = 0.253438
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.1831, 0)
srf = 1 bot = 1
___eigenray for target(1,0) found___
count = 3 time = 0.253438
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.1831, 0)
srf = 1 bot = 1
___eigenray for target(0,0) found___
count = 4 time = 0.494203
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.183, 0)
srf = 1 bot = 2
___eigenray for target(1,0) found___
count = 4 time = 0.494203
launch angles (de,az): (-77.9156, 0)
arrival angles (de,az): (80.183, 0)
srf = 1 bot = 2
___eigenray for target(0,0) found___
count = 5 time = 0.506875
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.183, 0)
srf = 2 bot = 2
___eigenray for target(1,0) found___
count = 5 time = 0.506875
launch angles (de,az): (80.939, 0)
arrival angles (de,az): (80.183, 0)
srf = 2 bot = 2
Finished propagation
This appears to be an error with the setup of the wavefront. In the monostatic scenario, the De angles are heavily weighted in the horizontal direction, thus leaving very few rays in the vertical directions, +/-90 with the neighbor ray roughly +/-71. As such after only a few time steps the spacing between these rays have grown so much that eigenrays are not being found, do to the lack of neighbor support.
When we change the DE spacing to linear, specifically -90 to +90 by 1, the wavefront produces all of the eigenrays that we would expect. There is a caveat to this as well, the time step of the wavefront cannot be too large or once again we experience shadow, or missing, eigenrays. Tests showed that for a time step of 0.1 many of the eigenrays were shadowed, where as with a time step of 0.01 and smaller, no eigenrays were shadowed.
We came up with an idea where in the monostatic scenarios, the wavefront DE fan can be augmented to include extra rays in the vertical directions. This would resolve this issue and not prevent any loss of data for any bistatic eigenrays that needed to be produced.
Updated the title to reflect the work that still needs to be done. We may want to explore the option of using the GRAB ray fan scheme for this augmentation.
The WaveQ3D model does not seem to be accurately computing eigenrays in 200 meters of water when the source is the same as the target.
Scenario:
Turn on DEBUG_OUTPUT_EIGENRAYS in wave_queue.cc to see eigenrays being created
Problems: