reflect_loss_rayleigh.h

00001 
00005 #pragma once
00006 
00007 #include <usml/ocean/reflect_loss_model.h>
00008 
00009 namespace usml {
00010 namespace ocean {
00011 
00012 using boost::numeric::ublas::vector;
00013 
00016 
00083 class USML_DECLSPEC reflect_loss_rayleigh : public reflect_loss_model {
00084 
00085     public:
00086 
00088         typedef enum {
00089             CLAY, SILT, SAND, GRAVEL, MORAINE, CHALK, LIMESTONE, BASALT
00090         } bottom_type_enum ;
00091 
00092 
00100         reflect_loss_rayleigh( bottom_type_enum type ) ;
00101 
00109         reflect_loss_rayleigh( size_t type ) ;
00110 
00126         reflect_loss_rayleigh(
00127             double density, double speed, double att_bottom=0.0,
00128             double speed_shear=0.0, double att_shear=0.0 ) ;
00129 
00141         virtual void reflect_loss(
00142             const wposition1& location,
00143             const seq_vector& frequencies, double angle,
00144             vector<double>* amplitude, vector<double>* phase=NULL ) ;
00145 
00146     private:
00147 
00165         complex<double> impedance(
00166             double density, double speed, double attenuation, double angle,
00167             complex< double >* cosA, bool shear ) ;
00168 
00170         static struct bottom_type_table {
00171             bottom_type_enum type ;
00172             double density ;
00173             double speed ;
00174             double att_bottom ;
00175             double speed_shear ;
00176             double att_shear ;
00177         } lookup[] ;
00178 
00179         //**************************************************
00180         // impedance mis-match factors
00181 
00183         const double _density_water ;
00184 
00186         const double _speed_water ;
00187 
00189         const double _density_bottom ;
00190 
00192         const double _speed_bottom ;
00193 
00195         const double _att_bottom ;
00196 
00198         const double _speed_shear ;
00199 
00201         const double _att_shear ;
00202 
00203 } ;
00204 
00206 }  // end of namespace ocean
00207 }  // end of namespace usml

Generated on 4 May 2015 for USML by  doxygen 1.6.1