|
| | SensorEchosounder (std::string simObjectName, ISimObjectCreator *creator) |
| |
| | SensorEchosounder (std::string simObjectName, const Settings &settings) |
| |
|
| ~SensorEchosounder () override |
| | Flushes and closes the echogram file, and releases the visualisation geometry.
|
| |
|
void | OdeFcn (const double dT, const double *const adX, double *const adXDot) const override |
| | Writes no derivatives: this SimObject declares no states.
|
| |
| void | AcceptedStep (const double dT, const double *const adX) override |
| |
| void | FinalSetup (const double dT, const double *const adX, ISimObjectCreator *const creator) override |
| |
|
const Reading & | HeldReading () const |
| | The reading currently held on the output ports.
|
| |
|
const Settings & | GetSettings () const |
| | The settings the instrument was built with.
|
| |
|
const std::vector< Species > & | GetSpecies () const |
| | The species entering the acoustic model, in file column order.
|
| |
|
const std::vector< double > & | DiskRadiiPerRange () const |
| | The disk radius per range of each distinct beam width, in order of first appearance among the frequencies (D20 (c)).
|
| |
|
int | PingsTaken () const |
| | The number of pings taken so far.
|
| |
|
const std::vector< double > & | Frequencies () const |
| | The operating frequencies, kHz.
|
| |
|
| static double | PerturbRange (double trueRange, const Settings &settings, SensorNoise &noise) |
| |
| static bool | IsValidRaySearch (double rayStepSize, double rayTolerance) |
| |
| static bool | IsValidMaxRange (double maxRange) |
| |
| static double | AltitudeOf (double slantRange, const double beamDirection[3]) |
| |
| static int | BinCountOf (double range, double binSize) |
| |
| static double | SampleRangeOf (int bin, double binSize, double beamRange) |
| |
| static double | DownSampleRangeOf (int bin, double binSize, double bottomRange, double clearance) |
| |
| static double | BottomClearance (double rayTolerance, const double beamDirection[3]) |
| |
| static double | BeamPattern (double offAxisRad, double beamWidthDeg) |
| |
| static double | EquivalentBeamAngle (double beamWidthDeg) |
| |
| static double | DiskRadiusPerRange (double beamWidthDeg) |
| |
| static bool | IsDiskBeam (const double axis[3], double halfWidthRad) |
| |
| static void | DiskConcentrations (const environment::field::IntegrableField &field, const double position[3], const double axis[3], double binSize, double radiusPerRange, std::span< double > concentration) |
| |
| static void | SampleDirections (const double axis[3], int beamSamples, double ringAngleRad, std::vector< std::array< double, 3 > > &directions) |
| |
| static int | DetectBottomBin (const std::vector< double > &svLinear, double binSize, double beamRange, double minRange, double thresholdDb) |
| |
| static double | IntegrateOverWindow (std::span< const double > perBin, double binSize, double beamRange, double windowStart, double windowEnd) |
| |
| static std::string | FieldStatusWarning (const std::string &sensorName, const std::string &fieldName, double depth, marenv::Status status) |
| |
| static double | NoiseFloorLinear (double noiseSvAt1mDb, double absorptionDbPerKm, double range) |
| |
|
|
const double * | OutSeafloorDistance (const double dT, const double *const adX) |
| | The measured slant range to the seafloor, m.
|
| |
|
const double * | OutSeafloorDepth (const double dT, const double *const adX) |
| | The inferred depth of the seafloor, m.
|
| |
|
const double * | OutAltitude (const double dT, const double *const adX) |
| | The measured height above the seafloor, m.
|
| |
|
const double * | OutValid (const double dT, const double *const adX) |
| | One when the last ping found a bottom, zero otherwise.
|
| |
|
const double * | OutPingTime (const double dT, const double *const adX) |
| | The time of the ping the held reading came from, s.
|
| |
|
const double * | OutSa (const double dT, const double *const adX, const int index) |
| | sa over the Integration window at one frequency, m^2/m^2.
|
| |
|
const double * | OutIntegratedBiomass (const double dT, const double *const adX, const int index) |
| | The Integrated biomass of one species field, kg/m^2.
|
| |
| SensorEchosounder::SensorEchosounder |
( |
std::string |
simObjectName, |
|
|
const Settings & |
settings |
|
) |
| |
Constructs the sounder with its settings given directly.
No ports are registered and no file is opened, so OdeFcn, AcceptedStep and FinalSetup all do nothing and the pure parts must be exercised directly. This constructor exists so that the geometry and the acoustic model can be unit tested without a host simulation, which matters because ISimObjectCreator has some thirty pure virtuals and FhSim exports no mock.
- Parameters
-
| simObjectName | The name of this object. |
| settings | The instrument settings. |
| static double SensorEchosounder::DownSampleRangeOf |
( |
int |
bin, |
|
|
double |
binSize, |
|
|
double |
bottomRange, |
|
|
double |
clearance |
|
) |
| |
|
static |
The slant range a bin is evaluated at when the beam ends on the bottom: as SampleRangeOf, but at least clearance short of the hit (FISH-0064, owner ruling R131). The hit is a root of the vertical distance to the seabed within RayTolerance, on either side, so a sample at the centre of a wet part shorter than twice that could lie below the seabed. A sample the clearance moves up may lie in the bin above; it is never behind the transducer. The sample is RayTolerance vertically above the hit, not above the seabed: a vertical beam or a flat seabed keeps it above the seabed. For a tilted beam over a seabed that deepens along its heading with slope g, the move back also shifts the sample horizontally by RayTolerance tan(tilt), so it can still lie about RayTolerance tan(tilt) g below the seabed (1.2 mm for 30 degrees, g = 0.2 and the default tolerance).
- Parameters
-
| bin | The bin index. |
| binSize | The bin size, m. |
| bottomRange | The slant range of the bottom hit, where the beam ends, m. |
| clearance | The slant distance kept from the hit, m (BottomClearance()). |
- Returns
- min(SampleRangeOf(bin, binSize, bottomRange), max(0, bottomRange - clearance)), m.