Jpp 20.0.0-rc.9-29-gccc23c492-D
the software that should make you happy
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Private Attributes | Friends | List of all members
JACOUSTICS::JGEOMETRY::JString Struct Reference

String geometry. More...

#include <JGeometry.hh>

Inheritance diagram for JACOUSTICS::JGEOMETRY::JString:

Public Member Functions

 JString ()
 Default constructor.
 
 JString (const JVector3D &position, const JMechanics &mechanics)
 Constructor.
 
template<class T >
 JString (const JVector3D &position, const JMechanics &mechanics, T __begin, T __end)
 Constructor.
 
const JMechanicsgetMechanics () const
 Get mechanical model parameters.
 
JFlooroperator[] (size_t floor)
 Get floor data.
 
bool hasFloor (size_t floor) const
 Check if this string has receiver at given floor.
 
double getHeight (const size_t floor) const
 Get height of receiver at given floor with respect to reference position.
 
JPosition3D getPosition (const JMODEL::JString &parameters, const size_t floor) const
 Get position of receiver at given floor according to given string model parameters.
 
JPosition3D getPosition (const size_t floor) const
 Get position of receiver at given floor.
 
double getDistance (const JMODEL::JString &parameters, const JVector3D &position, const size_t floor) const
 Get distance between given position and floor according to given string model parameters.
 
JMODEL::JString getGradient (const JMODEL::JString &parameters, const JVector3D &position, const size_t floor) const
 Get model gradient of distance between given position and floor according to given string model parameters.
 

Static Public Member Functions

static double getLength (const JMODEL::JString &parameters, const JMechanics &mechanics, const double height)
 Get approximate length of string.
 
static double getHeight (const JMODEL::JString &parameters, const JMechanics &mechanics, const double length, const double precision=PRECISION_M)
 Get approximate height of string.
 
static JPosition3D getPosition (const JMODEL::JString &parameters, const JMechanics &mechanics, const double height)
 Get position at given height according to given string model parameters and mechanics.
 

Public Attributes

JPosition3D hydrophone
 Hydrophone.
 
bool has_hydrophone
 

Static Public Attributes

static constexpr double PRECISION_M = 1.0e-4
 precision of height evaluation [m]
 

Private Attributes

JMechanics mechanics
 Mechanical data.
 

Friends

std::ostream & operator<< (std::ostream &out, const JString &string)
 Write string parameters to output stream.
 

Detailed Description

String geometry.

This data structure provides for the implementation of the dynamical geometry of a detector string.
In this, the position of floor > 0 corresponds to the piezo sensor which is located inside the optical module and
the position of floor = 0 to the hydrophone which is optionally mounted on the anchor.
The reference position of a string corresponds to the top of the T-bar located on the anchor.
The position of a piezo sensor depends on the tilt of the string and the mechanical model.
The position of the hydrophone is fixed. Its value is relative to the reference position of the string.

Definition at line 140 of file JGeometry.hh.

Constructor & Destructor Documentation

◆ JString() [1/3]

JACOUSTICS::JGEOMETRY::JString::JString ( )
inline

Default constructor.

Definition at line 231 of file JGeometry.hh.

231 :
232 has_hydrophone(false)
233 {}

◆ JString() [2/3]

JACOUSTICS::JGEOMETRY::JString::JString ( const JVector3D & position,
const JMechanics & mechanics )
inline

Constructor.

The given position corresponds to the reference position of the string from which the positions of the piezo sensors and hydrophone are determined.

Parameters
positionposition
mechanicsmechanical model parameters

Definition at line 245 of file JGeometry.hh.

246 :
247 JPosition3D(position),
248 has_hydrophone(false),
250 {}
JMechanics mechanics
Mechanical data.
Definition JGeometry.hh:492

◆ JString() [3/3]

template<class T >
JACOUSTICS::JGEOMETRY::JString::JString ( const JVector3D & position,
const JMechanics & mechanics,
T __begin,
T __end )
inline

Constructor.

The given position corresponds to the reference position of the string from which the positions of the piezo sensors and hydrophone are determined.

The template parameter should correspond to a data type which implements the following policy methods.

    int                       getFloor();
    JGEOMETRY3d::JPosition3D  getPosition();

In this, the position should correspond to the center of the optical module.

Note that the position of the piezo is offset by JDETECTOR::getPiezoPosition with respect to the center of the optical module.
The position of the hydrophone should separately be set.

Parameters
positionposition
mechanicsmechanical model parameters
__beginbegin of optical modules
__endend of optical modules

Definition at line 275 of file JGeometry.hh.

278 :
279 JPosition3D(position),
280 has_hydrophone(false),
282 {
283 for (T i = __begin; i != __end; ++i) {
284 (*this)[i->getFloor()] = JFloor(this->getDistance(i->getPosition() + JDETECTOR::getPiezoPosition()),
285 JVector2D(i->getX() - this->getX(),
286 i->getY() - this->getY()));
287 }
288 }
double getDistance(const JMODEL::JString &parameters, const JVector3D &position, const size_t floor) const
Get distance between given position and floor according to given string model parameters.
Definition JGeometry.hh:400

Member Function Documentation

◆ getLength()

static double JACOUSTICS::JGEOMETRY::JString::getLength ( const JMODEL::JString & parameters,
const JMechanics & mechanics,
const double height )
inlinestatic

Get approximate length of string.

Parameters
parametersparameters
mechanicsmechanics
heightheight
Returns
length

Definition at line 158 of file JGeometry.hh.

161 {
162 const double T2 = parameters.getLengthSquared();
163
164 const double x = 1.0 - mechanics.a*height;
165
166 return sqrt(1.0 + T2) * height + T2*mechanics.b * log(x) + 0.5*T2*mechanics.a*mechanics.b*mechanics.b * (1.0/x - 1.0);
167 }
double a
0 <= a < (maximal height)⁻1; [m^-1]
double b
0 <= b; [m]

◆ getHeight() [1/2]

static double JACOUSTICS::JGEOMETRY::JString::getHeight ( const JMODEL::JString & parameters,
const JMechanics & mechanics,
const double length,
const double precision = PRECISION_M )
inlinestatic

Get approximate height of string.

Parameters
parametersparameters
mechanicsmechanics
lengthlength
precisionprecision
Returns
height

Definition at line 179 of file JGeometry.hh.

183 {
184 const size_t MAXIMUM_NUMBER_OF_ITERATIONS = 10;
185
186 const double T2 = parameters.getLengthSquared();
187
188 double z = length; // start value
189
190 for (size_t i = 0; i != MAXIMUM_NUMBER_OF_ITERATIONS; ++i) {
191
192 const double ls = getLength(parameters, mechanics, z) - length;
193
194 if (fabs(ls) <= precision) {
195 break;
196 }
197
198 const double vs = 1.0 - mechanics.a*mechanics.b / (1.0 - mechanics.a*z);
199
200 z -= ls / (1.0 + 0.5*T2 * vs*vs);
201 }
202
203 return z;
204 }
static double getLength(const JMODEL::JString &parameters, const JMechanics &mechanics, const double height)
Get approximate length of string.
Definition JGeometry.hh:158

◆ getPosition() [1/3]

static JPosition3D JACOUSTICS::JGEOMETRY::JString::getPosition ( const JMODEL::JString & parameters,
const JMechanics & mechanics,
const double height )
inlinestatic

Get position at given height according to given string model parameters and mechanics.

Parameters
parametersparameters
mechanicsmechanics
heightheight
Returns
position

Definition at line 215 of file JGeometry.hh.

218 {
219 const double h1 = height * (1.0 + parameters.vs);
220 const double z1 = mechanics.getHeight(h1);
221
222 return JPosition3D(parameters.tx * z1 + parameters.tx2 * h1*h1,
223 parameters.ty * z1 + parameters.ty2 * h1*h1,
224 getHeight(parameters, mechanics, h1));
225 }
static double getHeight(const JMODEL::JString &parameters, const JMechanics &mechanics, const double length, const double precision=PRECISION_M)
Get approximate height of string.
Definition JGeometry.hh:179
double getHeight(const double height) const
Get effective height for given actual height.
Definition JMechanics.hh:70

◆ getMechanics()

const JMechanics & JACOUSTICS::JGEOMETRY::JString::getMechanics ( ) const
inline

Get mechanical model parameters.

Returns
mechanical model parameters

Definition at line 296 of file JGeometry.hh.

297 {
298 return mechanics;
299 }

◆ operator[]()

JFloor & JACOUSTICS::JGEOMETRY::JString::operator[] ( size_t floor)
inline

Get floor data.

Parameters
floorfloor number
Returns
floor data

Definition at line 308 of file JGeometry.hh.

309 {
310 if (floor >= this->size()) {
311 this->resize(floor + 1);
312 }
313
314 return static_cast<std::vector<JFloor>&>(*this)[floor];
315 }

◆ hasFloor()

bool JACOUSTICS::JGEOMETRY::JString::hasFloor ( size_t floor) const
inline

Check if this string has receiver at given floor.

Parameters
floorfloor
Returns
true if receiver present; else false

Definition at line 324 of file JGeometry.hh.

325 {
326 if (floor == 0)
327 return has_hydrophone;
328 else
329 return (floor < this->size());
330 }

◆ getHeight() [2/2]

double JACOUSTICS::JGEOMETRY::JString::getHeight ( const size_t floor) const
inline

Get height of receiver at given floor with respect to reference position.

Parameters
floorfloor
Returns
height

Definition at line 339 of file JGeometry.hh.

340 {
341 if (!hasFloor(floor)) {
342 THROW(JValueOutOfRange, "Invalid floor " << floor);
343 }
344
345 if (floor == 0)
346 return hydrophone.getZ();
347 else
348 return (*this)[floor].getHeight();
349 }
JPosition3D hydrophone
Hydrophone.
Definition JGeometry.hh:485
bool hasFloor(size_t floor) const
Check if this string has receiver at given floor.
Definition JGeometry.hh:324

◆ getPosition() [2/3]

JPosition3D JACOUSTICS::JGEOMETRY::JString::getPosition ( const JMODEL::JString & parameters,
const size_t floor ) const
inline

Get position of receiver at given floor according to given string model parameters.

Parameters
parametersparameters
floorfloor
Returns
position

Definition at line 359 of file JGeometry.hh.

361 {
362 if (!hasFloor(floor)) {
363 THROW(JValueOutOfRange, "Invalid floor " << floor);
364 }
365
366 if (floor == 0)
367 return this->getPosition() + hydrophone.getPosition();
368 else
369 return this->getPosition() + getPosition(parameters, this->mechanics, (*this)[floor].getHeight()) + (*this)[floor].getPosition();
370 }
static JPosition3D getPosition(const JMODEL::JString &parameters, const JMechanics &mechanics, const double height)
Get position at given height according to given string model parameters and mechanics.
Definition JGeometry.hh:215

◆ getPosition() [3/3]

JPosition3D JACOUSTICS::JGEOMETRY::JString::getPosition ( const size_t floor) const
inline

Get position of receiver at given floor.

Parameters
floorfloor
Returns
position

Definition at line 379 of file JGeometry.hh.

380 {
381 if (!hasFloor(floor)) {
382 THROW(JValueOutOfRange, "Invalid floor " << floor);
383 }
384
385 if (floor == 0)
386 return this->getPosition() + hydrophone.getPosition();
387 else
388 return this->getPosition() + JPosition3D(0.0, 0.0, (*this)[floor].getHeight()) + (*this)[floor].getPosition();
389 }

◆ getDistance()

double JACOUSTICS::JGEOMETRY::JString::getDistance ( const JMODEL::JString & parameters,
const JVector3D & position,
const size_t floor ) const
inline

Get distance between given position and floor according to given string model parameters.

Parameters
parametersparameters
positionposition
floorfloor
Returns
distance

Definition at line 400 of file JGeometry.hh.

403 {
404 return this->getPosition(parameters, floor).getDistance(position);
405 }

◆ getGradient()

JMODEL::JString JACOUSTICS::JGEOMETRY::JString::getGradient ( const JMODEL::JString & parameters,
const JVector3D & position,
const size_t floor ) const
inline

Get model gradient of distance between given position and floor according to given string model parameters.

Parameters
parametersparameters
positionposition
floorfloor
Returns
gradient

Definition at line 416 of file JGeometry.hh.

419 {
420 if (floor == 0) {
421
422 return JMODEL::JString();
423
424 } else if (floor < this->size()) {
425
426 const JPosition3D pos = this->getPosition(parameters, floor);
427 const double height = (*this)[floor].getHeight();
428 const double h1 = height * (1.0 + parameters.vs);
429 const double z1 = mechanics.getHeight(h1);
430
431 const double tx = parameters.tx;
432 const double ty = parameters.ty;
433 const double tz = sqrt(1.0 - tx*tx - ty*ty);
434
435 const double dx = pos.getX() - position.getX();
436 const double dy = pos.getY() - position.getY();
437 const double dz = pos.getZ() - position.getZ();
438
439 const double D = sqrt(dx*dx + dy*dy + dz*dz);
440 const double vw = 1.0 - mechanics.a * mechanics.b / (1.0 - mechanics.a*h1);
441 const double vs = 1.0 + 0.5 * parameters.getLengthSquared() * vw;
442
443 return JMODEL::JString(z1 * dx / D - height * (tx / tz) * dz / D,
444 z1 * dy / D - height * (ty / tz) * dz / D,
445 h1*h1 * dx / D,
446 h1*h1 * dy / D,
447 height * vw * (tx * dx + ty * dy) / D + h1 * (dz / vs) / D);
448
449 } else {
450
451 THROW(JValueOutOfRange, "Invalid floor " << floor);
452 }
453 }

Friends And Related Symbol Documentation

◆ operator<<

std::ostream & operator<< ( std::ostream & out,
const JString & string )
friend

Write string parameters to output stream.

Parameters
outoutput stream
stringstring
Returns
output stream

Definition at line 463 of file JGeometry.hh.

464 {
465 using namespace std;
466
467 for (size_t i = 0; i != string.size(); ++i) {
468 if (string.hasFloor(i)) {
469 out << setw(2) << i << ' '
470 << FIXED(7,3) << string[i] << " | "
471 << string.getPosition(i) << ' '
472 << string.mechanics << endl;
473 }
474 }
475
476 return out;
477 }

Member Data Documentation

◆ PRECISION_M

constexpr double JACOUSTICS::JGEOMETRY::JString::PRECISION_M = 1.0e-4
staticconstexpr

precision of height evaluation [m]

Definition at line 148 of file JGeometry.hh.

◆ hydrophone

JPosition3D JACOUSTICS::JGEOMETRY::JString::hydrophone

Hydrophone.

The position of the hydrophone is relative to the reference position of the string.

Definition at line 485 of file JGeometry.hh.

◆ has_hydrophone

bool JACOUSTICS::JGEOMETRY::JString::has_hydrophone

Definition at line 486 of file JGeometry.hh.

◆ mechanics

JMechanics JACOUSTICS::JGEOMETRY::JString::mechanics
private

Mechanical data.

Definition at line 492 of file JGeometry.hh.


The documentation for this struct was generated from the following file: