spreading_hybrid_gaussian Class Reference

Collaboration diagram for spreading_hybrid_gaussian:
Collaboration graph
[legend]

Constructor & Destructor Documentation

spreading_hybrid_gaussian ( wave_queue wave  )  [protected]

Normalize each wavefront cell by the surface area it takes up one meter from source.

\[ A_{DE}(n) = ( DE_{n+1}-DE_n ) \]

\[ A_{AZ}(n,m) = \frac{ ( sin(DE_{n+1})-sin(DE_n) )(AZ_{m+1}-AZ_m) } { DE_{n-1} - DE_n } \]

Note that in this implementation the $ \sqrt{ 2 \pi } $ term from the gaussian() method is folded into the normalization coefficients so that it can be computed a single time, during initialization.

Parameters:
wave Wavefront object associated with this model.
virtual ~spreading_hybrid_gaussian (  )  [inline, protected, virtual]

Virtual destructor.


Member Function Documentation

vector<double> gaussian ( double  d,
double  w,
double  A 
) [inline, protected]

Compute the Gaussian contribution from a single wavefront cell.

\[ \frac{A}{w\sqrt{2\pi}} exp\left( - \frac{d^2}{2w^2} \right) \]

The width of each Gaussian beam consists of two components: a frequency independent cell width and a frequency-dependent evanescent spreading term. If we assume that these two effects combine like the convolution of two Gaussians, then the square of total width will be the sum of squares of each term.

\[ w^2_{total} = w^2_{spread} + w^2_{width} \]

Note that in this implementation the $ \sqrt{ 2 \pi } $ term is folded into the normalization calculation so that it can be computed a single time, during initialization.

Parameters:
d Distance from field point to center of profile.
w Half-width this cell in the wavefront.
A Normalization coefficient.
References:
Weisstein, Eric W. "Convolution." From MathWorld--A Wolfram Web Resource. http://mathworld.wolfram.com/Convolution.html
const vector< double > & intensity ( const wposition1 location,
size_t  de,
size_t  az,
const vector< double > &  offset,
const vector< double > &  distance 
) [protected, virtual]

Estimate intensity as the product of Gaussian contributions in the D/E and AZ directions.

It assumes that the the divergence can be characterized in terms of independent D/E and AZ terms and that Gaussian beam cross terms are unimportant.

Parameters:
location Target location.
de DE index of closest point of approach.
az AZ index of closest point of approach.
offset Offsets in time, DE, and AZ at collision.
distance Offsets in distance units.
Returns:
Intensity of ray at this point.

Implements spreading_model.

void intensity_az ( size_t  de,
size_t  az,
const vector< double > &  offset,
const vector< double > &  distance 
) [private]

Summation of Gaussian beam contributions from all cells in the AZ direction.

Iteration stops when lowest frequency contribution makes less than a THRESHOLD difference relative to the overall result.

Parameters:
de DE index of contributing cell.
az AZ index of contributing cell.
offset Offsets in time, DE, and AZ at collision.
distance Offsets in distance units.
Returns:
Intensity of ray at this point.
void intensity_de ( size_t  de,
size_t  az,
const vector< double > &  offset,
const vector< double > &  distance 
) [private]

Summation of Gaussian beam contributions from all cells in the D/E direction.

Iteration stops when lowest frequency contribution makes less than a THRESHOLD difference relative to the overall result.

Parameters:
de DE index of contributing cell.
az AZ index of contributing cell.
offset Offsets in time, DE, and AZ at collision.
distance Offsets in distance units.
Returns:
Intensity of ray at this point.
double width_az ( size_t  de,
size_t  az,
const vector< double > &  offset 
) [protected, virtual]

Interpolate the half-width of a cell in the AZ direction.

At each DE, compute the distance between the AZ corner and the AZ+1 corner. Use the D/E offset to linearly interpolate between these sides. Then repeat this process with the next (or previous) wavefront and use the time offset to linearly interpolate between times.

Parameters:
de DE index of contributing cell.
az AZ index of contributing cell.
offset Offsets in time, DE, and AZ at collision.
Returns:
Half-width of cell in the AZ direction.

Implements spreading_model.

double width_de ( size_t  de,
size_t  az,
const vector< double > &  offset 
) [protected, virtual]

Interpolate the half-width of a cell in the D/E direction.

At each AZ, compute the distance between the D/E corner and the D/E+1 corner. Use the AZ offset to linearly interpolate between these sides. Then repeat this process with the next (or previous) wavefront and use the time offset to linearly interpolate between times.

Parameters:
de DE index of contributing cell.
az AZ index of contributing cell.
offset Offsets in time, DE, and AZ at collision.
Returns:
Half-width of cell in the DE direction.

Implements spreading_model.


Friends And Related Function Documentation

friend class reverberation_model [friend]
friend class wave_queue [friend]

Reimplemented from spreading_model.

friend class wave_queue_reverb [friend]

Member Data Documentation

vector<double> _beam_width [private]

Combination of cell width and spreading.

(temp workspace)

matrix<bool> _duplicate [private]

Tracks the rays that have already made contributions to the intensity.

vector<double> _intensity_az [private]

Intensity contribution in azimuthal direction.

(temp workspace)

vector<double> _intensity_de [private]

Intensity contribution in D/E direction.

(temp workspace)

matrix<double> _norm_az [private]

Normalization in azimuthal direction.

vector<double> _norm_de [private]

Normalization in depression/elevation direction.

const double OVERLAP = 2.0 [static, private]

Minimum percentage that each Gaussian beam can be expected spread into neighboring beams.

When the frequency is very high, the summation across Gaussian beams can have non-physical "ripples" in it. Follow the GRAB example of 50% overlap.

const double SPREADING_WIDTH = TWO_PI [static, private]

Number of wavelengths that each Gaussian beam can be expected spread into neighboring beams.

Equivalent to the $ 2 \pi \lambda $ minimum width term in the GRAB model.

const double THRESHOLD = 1.002305238 [static, private]

Limits the extent of the search for Gaussian beam contributions.

Iteration stops when new contribution makes less than a 0.01 dB contribution to the overall result.


Generated on 4 May 2015 for USML by  doxygen 1.6.1