A "profile model" computes the environmental parameters of ocean water.
The modeled properties include the sound velocity profile and the attenuation due to sea water absorption. This class implements an attenuation model through delegation. The delegated model is defined separately and added to its host during/after construction. The host is defined as an attenuation_model subclass so that its children can share the attenuation model through this delegation.
profile_model | ( | attenuation_model * | attenuation = NULL |
) | [inline] |
Constructor - Initialize component models within ocean profile.
attenuation | In-water attenuation model. Uses Thorp model if none specified. |
virtual ~profile_model | ( | ) | [inline, virtual] |
Destructor - Delete attenuation model.
void adjust_speed | ( | const wposition & | location, | |
matrix< double > * | speed, | |||
wvector * | gradient = NULL | |||
) | [protected, virtual] |
When the flat earth option is enabled, this routine applies an anti-correction term to the profile.
Used to compare propagation effect to models that have been computed in rectangular coordinates. The corrected sound speed and gradient are given by:
c' = c r / R
dc/dr' = dc/dr r / R + c / R
where:
c, dc/dr = uncorrected sound speed and gradient c', dc/dr' = anti-corrected sound speed and gradient r = radial component of wavefront position R = earth's radius of curvature
An additional horizontal correction must be made to properly compare the results of this model to flat earth models. To convert lat/long changes (dA) into horizontal range (dx), you can not use the average earth radius (R) such that dx = R dA. Instead you must use the radial position (r) at each point in the wavefront such that dx = r dA. This routine does not provide horizontal correction.
location | Location at which to compute attenuation. | |
speed | Speed of sound (m/s) at each location (in/out). | |
gradient | Sound speed gradient at each location (in/out). |
virtual void attenuation | ( | const wposition & | location, | |
const seq_vector & | frequencies, | |||
const matrix< double > & | distance, | |||
matrix< vector< double > > * | attenuation | |||
) | [inline, virtual] |
Computes the broadband absorption loss of sea water.
location | Location at which to compute attenuation. | |
frequencies | Frequencies over which to compute loss. (Hz) | |
distance | Distance travelled through the water (meters). | |
attenuation | Absorption loss of sea water in dB (output). |
Implements attenuation_model.
void attenuation | ( | attenuation_model * | attenuation | ) | [inline] |
Define a new in-water attenuation model.
attenuation | In-water attenuation model. |
void flat_earth | ( | bool | flat | ) | [inline] |
Anti-correction term to make the earth seem flat.
Used to compare propagation effect to models that have been computed in rectangular coordinates.
flat | Make the earth seem flat when true. |
virtual void sound_speed | ( | const wposition & | location, | |
matrix< double > * | speed, | |||
wvector * | gradient = NULL | |||
) | [pure virtual] |
Compute the speed of sound and it's first derivatives at a series of locations.
location | Location at which to compute attenuation. | |
speed | Speed of sound (m/s) at each location (output). | |
gradient | Sound speed gradient at each location (output). |
Implemented in profile_catenary, profile_grid< DATA_TYPE, NUM_DIMS >, profile_grid_fast, profile_linear, profile_lock, profile_munk, and profile_n2.
attenuation_model* _attenuation [private] |
Reference to the in-water attenuation model.
bool _flat_earth [protected] |
Anti-correction term to make the earth seem flat.