A "boundary model" computes the environmental parameters of the ocean's surface or bottom.
The modeled properties include the depth, reflection properties, and reverberation scattering strength of the interface. This class implements a reflection loss model through delegation. The delegated model is defined separately and added to its host during/after construction. The host is defined as a reflect_loss_model subclass so that it's children can share the reflection loss model through this delegation.
This implementation defines the unit normal using Cartesian coordinates in the directions relative to its location. Given this definition, the normal can be computed from the depth derivatives or slope angles using:
where:
This definition of the unit normal saves processing time during reflection processing.
boundary_model | ( | reflect_loss_model * | reflect_loss = NULL , |
|
scattering_model * | scattering = NULL | |||
) | [inline] |
Initialize reflection loss components for a boundary.
reflect_loss | Reflection loss model. | |
scattering | Reverberation scattering strength model. |
virtual ~boundary_model | ( | ) | [inline, virtual] |
Delete reflection loss model.
virtual void height | ( | const wposition1 & | location, | |
double * | rho, | |||
wvector1 * | normal = NULL , |
|||
bool | quick_interp = false | |||
) | [pure virtual] |
Compute the height of the boundary and it's surface normal at a single location.
Often used during reflection processing.
location | Location at which to compute boundary. | |
rho | Surface height in spherical earth coords (output). | |
normal | Unit normal relative to location (output). | |
quick_interp | Determines if you want a fast nearest or pchip interp |
Implemented in boundary_flat, boundary_grid< DATA_TYPE, NUM_DIMS >, boundary_grid_fast, boundary_lock, and boundary_slope.
virtual void height | ( | const wposition & | location, | |
matrix< double > * | rho, | |||
wvector * | normal = NULL , |
|||
bool | quick_interp = false | |||
) | [pure virtual] |
Compute the height of the boundary and it's surface normal at a series of locations.
location | Location at which to compute boundary. | |
rho | Surface height in spherical earth coords (output). | |
normal | Unit normal relative to location (output). | |
quick_interp | Determines if you want a fast nearest or pchip interp |
Implemented in boundary_flat, boundary_grid< DATA_TYPE, NUM_DIMS >, boundary_grid_fast, boundary_lock, and boundary_slope.
virtual void reflect_loss | ( | const wposition1 & | location, | |
const seq_vector & | frequencies, | |||
double | angle, | |||
vector< double > * | amplitude, | |||
vector< double > * | phase = NULL | |||
) | [inline, virtual] |
Computes the broadband reflection loss and phase change.
location | Location at which to compute attenuation. | |
frequencies | Frequencies over which to compute loss. (Hz) | |
angle | Grazing angle relative to the interface (radians). | |
amplitude | Change in ray strength in dB (output). | |
phase | Change in ray phase in dB (output). |
Implements reflect_loss_model.
void reflect_loss | ( | reflect_loss_model * | reflect_loss | ) | [inline] |
Define a new reflection loss model.
reflect_loss | Reflection loss model. |
virtual void scattering | ( | const wposition & | location, | |
const seq_vector & | frequencies, | |||
double | de_incident, | |||
matrix< double > | de_scattered, | |||
double | az_incident, | |||
matrix< double > | az_scattered, | |||
matrix< vector< double > > * | amplitude | |||
) | [inline, virtual] |
Computes the broadband scattering strength for a collection of scattering angles from a common incoming ray.
Each scattering has its own location, de_scattered, and az_scattered. The result is a broadband reverberation scattering strength for each scattering.
location | Location at which to compute attenuation. | |
frequencies | Frequencies over which to compute loss. (Hz) | |
de_incident | Depression incident angle (radians). | |
de_scattered | Depression scattered angle (radians). | |
az_incident | Azimuthal incident angle (radians). | |
az_scattered | Azimuthal scattered angle (radians). | |
amplitude | Reverberation scattering strength ratio (output). |
Implements scattering_model.
virtual void scattering | ( | const wposition1 & | location, | |
const seq_vector & | frequencies, | |||
double | de_incident, | |||
double | de_scattered, | |||
double | az_incident, | |||
double | az_scattered, | |||
vector< double > * | amplitude | |||
) | [inline, virtual] |
Computes the broadband scattering strength for a single location.
location | Location at which to compute attenuation. | |
frequencies | Frequencies over which to compute loss. (Hz) | |
de_incident | Depression incident angle (radians). | |
de_scattered | Depression scattered angle (radians). | |
az_incident | Azimuthal incident angle (radians). | |
az_scattered | Azimuthal scattered angle (radians). | |
amplitude | Change in ray strength in dB (output). |
Implements scattering_model.
void scattering | ( | scattering_model * | scattering | ) | [inline] |
Define a new reverberation scattering strength model.
scattering | Scattering model for this boundary |
reflect_loss_model* _reflect_loss [private] |
Reference to the reflection loss model.
scattering_model* _scattering [private] |
Reference to the scattering strength model.