00001
00005 #pragma once
00006
00007 #include <usml/ocean/profile_model.h>
00008
00009 namespace usml {
00010 namespace ocean {
00011
00014
00036 class USML_DECLSPEC profile_linear : public profile_model {
00037
00038
00039
00040
00042 double _soundspeed0 ;
00043
00045 double _gradient0 ;
00046
00048 double _depth1 ;
00049
00051 double _gradient1 ;
00052
00053 public:
00054
00063 virtual void sound_speed( const wposition& location,
00064 matrix<double>* speed, wvector* gradient=NULL ) ;
00065
00066
00067
00068
00080 profile_linear(
00081 double c0, double g0, double z1, double g1,
00082 attenuation_model* attmodel=NULL
00083 ) :
00084 profile_model(attmodel),
00085 _soundspeed0(c0), _gradient0(g0),
00086 _depth1(z1), _gradient1(g1)
00087 { }
00088
00098 profile_linear(
00099 double c0, double g0,
00100 attenuation_model* attmodel=NULL
00101 ) :
00102 profile_model(attmodel),
00103 _soundspeed0(c0), _gradient0(g0),
00104 _depth1(0.0), _gradient1(g0)
00105 { }
00106
00115 profile_linear(
00116 double c0 = 1500.0,
00117 attenuation_model* attmodel=NULL
00118 ) :
00119 profile_model(attmodel),
00120 _soundspeed0(c0), _gradient0(0.0),
00121 _depth1(0.0), _gradient1(0.0)
00122 { }
00123
00124 };
00125
00126 }
00127 }