1#ifndef __JACOUSTICS__JSOUNDVELOCITY__
2#define __JACOUSTICS__JSOUNDVELOCITY__
64 this->
a += this->
b * (z0 - this->
z0);
121 const double z2)
const override
123 const double eps = 1.0e-8;
125 const double v1 = (*this)(z1);
126 const double v2 = (*this)(z2);
127 const double lv = log(v2/v1);
130 return t_s * fabs((z2 - z1) *
b / lv);
132 return 0.5 * t_s * (v1 + v2);
149 const double z2)
const override
151 const double eps = 1.0e-8;
153 const double ct = (z2 - z1) / D_m;
154 const double v1 = (*this)(z1);
155 const double v2 = (*this)(z2);
158 return fabs(log(v2/v1) / (ct*
b));
160 return 2.0 * D_m / (v1 + v2);
177 const double z2)
const override
179 const double eps = 1.0e-8;
181 const double ct = (z2 - z1) / D_m;
182 const double v1 = (*this)(z1);
183 const double v2 = (*this)(z2);
186 return fabs(log(v2/v1) / ((z2 - z1) *
b));
188 return 2.0 / (v1 + v2);
205 if (getFileStatus(is.str().c_str())) {
209 if (is >> velocity.
a) {
230 out << velocity.
a <<
' ' << velocity.
b <<
' ' << velocity.
z0;
Wrapper class around STL stringstream class to facilitate optional loading of data from file.
void load()
Load data from file with name corresponding to current contents.
Auxiliary classes and methods for acoustic position calibration.
static const JSoundVelocity getSoundVelocity(1541.0, -17.0e-3, -2000.0)
Function object for velocity of sound.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Interface for depth dependend velocity of sound.
Implementation for depth dependend velocity of sound.
virtual double getDistance(const double t_s, const double z1, const double z2) const override
Get distance travelled by sound.
virtual double operator()(const double z) const override
Get velocity of sound at given depth relative to seabed.
friend std::ostream & operator<<(std::ostream &out, const JSoundVelocity &velocity)
Write sound velocity to output.
JSoundVelocity operator[](const double z0) const
Get sound velocity at given depth.
virtual double getTime(const double D_m, const double z1, const double z2) const override
Get propagation time of sound.
JSoundVelocity & set(const double z0)
Set depth.
virtual double getInverseVelocity(const double D_m, const double z1, const double z2) const override
Get inverse velocity of sound.
JSoundVelocity(const double a, const double b, const double z0)
Constructor.
virtual double operator()() const override
Get velocity of sound at seabed.
friend std::istream & operator>>(std::istream &in, JSoundVelocity &velocity)
Read sound velocity from input.