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
00021 class USML_DECLSPEC reflect_loss_constant : public reflect_loss_model {
00022
00023 public:
00024
00031 reflect_loss_constant( double amplitude, double phase=0.0 ) :
00032 _amplitude(amplitude), _phase(phase) {}
00033
00044 virtual void reflect_loss(
00045 const wposition1& location,
00046 const seq_vector& frequencies, double angle,
00047 vector<double>* amplitude, vector<double>* phase=NULL )
00048 {
00049 noalias(*amplitude) = scalar_vector<double>(frequencies.size(),_amplitude);
00050 if ( phase ) {
00051 noalias(*phase) = scalar_vector<double>(frequencies.size(),_phase);
00052 }
00053 }
00054
00055 private:
00056
00058 double _amplitude ;
00059
00061 double _phase ;
00062
00063 } ;
00064
00066 }
00067 }