reflect_loss_eckart.h

00001 
00005 #pragma once
00006 
00007 #include <usml/ocean/reflect_loss_model.h>
00008 #include <usml/ocean/wave_height_pierson.h>
00009 
00010 namespace usml {
00011 namespace ocean {
00012 
00013 using boost::numeric::ublas::vector;
00014 
00017 
00055 class USML_DECLSPEC reflect_loss_eckart: public reflect_loss_model {
00056 
00057 public:
00058 
00064         reflect_loss_eckart( double wind_speed ) :
00065                 _wind_speed2( wind_speed * wind_speed )
00066         {
00067         }
00068 
00080         virtual void reflect_loss(const wposition1& location,
00081                         const seq_vector& frequencies, double angle,
00082                         vector<double>* amplitude, vector<double>* phase = NULL)
00083         {
00084                 noalias(*amplitude) = frequencies ;     // copy sequence into vector
00085                 *amplitude = 8.6e-9 * abs2( (*amplitude) * _wind_speed2 * sin(angle) );
00086                 if ( phase ) {
00087                         noalias(*phase) = scalar_vector<double>( frequencies.size(), M_PI );
00088                 }
00089         }
00090 
00091 private:
00092 
00094         const double _wind_speed2;
00095 };
00096 
00098 }  // end of namespace ocean
00099 }  // end of namespace usml

Generated on 4 May 2015 for USML by  doxygen 1.6.1