scattering_constant.h

00001 
00005 #pragma once
00006 
00007 #include <usml/ocean/scattering_model.h>
00008 
00009 namespace usml {
00010 namespace ocean {
00011 
00012 using namespace usml::ublas;
00013 using namespace usml::types;
00014 
00015 using boost::numeric::ublas::vector;
00016 
00019 
00024 class USML_DECLSPEC scattering_constant: public scattering_model {
00025 
00026 public:
00027 
00034         scattering_constant( double amplitude=-300.0 ) :
00035                 _amplitude( pow(10.0,amplitude/10.0) ) {}
00036 
00048         virtual void scattering(const wposition1& location,
00049                         const seq_vector& frequencies, double de_incident,
00050                         double de_scattered, double az_incident, double az_scattered,
00051                         vector<double>* amplitude)
00052         {
00053                 noalias(*amplitude) = scalar_vector<double>( frequencies.size(), _amplitude );
00054                         // fast assignment of scalar to vector
00055         }
00056 
00072     virtual void scattering( const wposition& location,
00073         const seq_vector& frequencies, double de_incident, matrix<double> de_scattered,
00074         double az_incident, matrix<double> az_scattered,
00075                 matrix< vector<double> >* amplitude )
00076     {
00077                         // fast assignment of scalar to vector of matrices
00078                 noalias(*amplitude) = scalar_matrix< vector<double> >(
00079                                 location.size1(), location.size2(),
00080                                 scalar_vector<double>( frequencies.size(), _amplitude ) );
00081                         // fast assignment of scalar to matrix of vectors
00082     }
00083 
00084 private:
00085 
00087     double _amplitude ;
00088 
00089 };
00090 
00092 }       // end of namespace ocean
00093 }   // end of namespace usml

Generated on 4 May 2015 for USML by  doxygen 1.6.1