USML
profile_model Class Referenceabstract
Collaboration diagram for profile_model:

Detailed Description

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.

Constructor & Destructor Documentation

profile_model ( attenuation_model attmodel = NULL)
inline

Constructor - Initialize component models within ocean profile.

Parameters
attmodelIn-water attenuation model. Use Thorp model if none specified.
virtual ~profile_model ( )
inlinevirtual

Destructor - Delete attenuation model.

Member Function Documentation

void adjust_speed ( const wposition location,
matrix< double > *  speed,
wvector gradient = NULL 
)
protectedvirtual

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.

References:
S.M. Reilly, M.S. Goodrich, "Geodetic Acoustic Rays in the Time Domain, Comprehensive Test Results", Alion Science and Technology, Norfolk, VA, September, 2006.
Parameters
locationLocation at which to compute attenuation.
speedSpeed of sound (m/s) at each location (in/out).
gradientSound speed gradient at each location (in/out).
void attenuation ( attenuation_model attmodel)
inline

Define a new in-water attenuation model.

Parameters
attmodelIn-water attenuation model.
virtual void attenuation ( const wposition location,
const seq_vector frequencies,
const matrix< double > &  distance,
matrix< vector< double > > *  attenuation 
)
inlinevirtual

Computes the broadband absorption loss of sea water.

Parameters
locationLocation at which to compute attenuation.
frequenciesFrequencies over which to compute loss. (Hz)
distanceDistance travelled through the water (meters).
attenuationAbsorption loss of sea water in dB (output).

Implements 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.

Parameters
flatMake 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.

Parameters
locationLocation at which to compute attenuation.
speedSpeed of sound (m/s) at each location (output).
gradientSound speed gradient at each location (output).

Implemented in profile_grid_fast, profile_munk, profile_linear, profile_catenary, profile_n2, and profile_grid< DATA_TYPE, NUM_DIMS >.

Member Data Documentation

attenuation_model* _attenuation
protected

Reference to the in-water attenuation model.

bool _flat_earth
protected

Anti-correction term to make the earth seem flat.