World Ocean Simulation System (WOSS) library
woss::ShdResReader Class Reference

Class for reading and manipulating results provided by any acoustic toolbox SHD file. More...

#include <ac-toolbox-shd-reader.h>

Inheritance diagram for woss::ShdResReader:
Inheritance graph
Collaboration diagram for woss::ShdResReader:
Collaboration graph

Public Member Functions

 ShdResReader (const Woss &woss)
virtual ~ShdResReader () override=default
virtual bool initialize () override
virtual std::unique_ptr< PressurereadAvgPressure (double frequency, double tx_depth, double start_rx_depth, double start_rx_range, double end_rx_depth, double end_rx_range) override
virtual std::unique_ptr< PressurereadPressure (double frequency, double tx_depth, double rx_depth, double rx_range) const override
virtual std::unique_ptr< TimeArrreadTimeArr (double frequency, double tx_depth, double rx_depth, double rx_range) const override
Public Member Functions inherited from woss::ResReader
 ResReader (const Woss &woss)
virtual ~ResReader ()=default
const WossgetWossRef () const
ResReadersetFileName (const std::string &name)
std::string getFileName () const

Protected Member Functions

std::complex< double > readMapAvgPressure (double frequency, double tx_depth, double start_rx_depth, double start_rx_range, double end_rx_depth, double end_rx_range, double theta=0.0)
std::complex< double > accessMap (double frequency, double tx_depth, double rx_depth, double rx_range, double theta=0.0) const
bool getShdFile ()
bool getShdHeader ()

Protected Attributes

bool shd_header_collected
bool shd_file_collected
std::ifstream file_reader
ShdData shd_file
ShdData_v1 shd_file_v1
double last_tx_depth
double last_start_rx_depth
double last_start_rx_range
double last_end_rx_depth
double last_end_rx_range
std::complex< double > last_ret_value
Protected Attributes inherited from woss::ResReader
const Wosswoss_ref
std::string file_name

Detailed Description

Class for reading and manipulating results provided by any acoustic toolbox SHD file.

Class ShdResReader stores Pressure provided by any acoustic toolbox SHD file in a ShdData. It also offers Pressure manipulation and TimeArr conversion methods.

Constructor & Destructor Documentation

◆ ShdResReader()

ShdResReader::ShdResReader ( const Woss & woss)

ShdResReader constructor

Parameters
wossconst pointer to a const Woss object

References file_reader, last_end_rx_depth, last_end_rx_range, last_ret_value, last_start_rx_depth, last_start_rx_range, last_tx_depth, woss::ResReader::ResReader(), shd_file, shd_file_collected, shd_file_v1, and shd_header_collected.

Here is the call graph for this function:

◆ ~ShdResReader()

virtual woss::ShdResReader::~ShdResReader ( )
overridevirtualdefault

Member Function Documentation

◆ accessMap()

std::complex< double > ShdResReader::accessMap ( double frequency,
double tx_depth,
double rx_depth,
double rx_range,
double theta = 0.0 ) const
protected

Gets the Pressure value from ShdData Pressure array associated to given parameters

Parameters
frequencyfrequency [hZ]
tx_depthtransmitter depth [m]
rx_depthstart receiver depth [m]
rx_rangestart receiver range [m]
thetatheta value
Returns
a valid Pressure value; a not valid Pressure if shd_file hasn't been read yet

References woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_0, woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_1, woss::BellhopWoss::getBellhopShdSyntax(), shd_file, shd_file_v1, and woss::ResReader::woss_ref.

Referenced by readPressure(), and readTimeArr().

Here is the call graph for this function:

◆ getShdFile()

bool ShdResReader::getShdFile ( )
protected

Process the SHD file data

Returns
true if method was successful, false otherwise

References woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_0, woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_1, woss::ResReader::file_name, file_reader, woss::BellhopWoss::getBellhopShdSyntax(), woss::Pressure::getTxLossDb(), shd_file, shd_file_collected, shd_file_v1, and woss::ResReader::woss_ref.

Referenced by initialize().

Here is the call graph for this function:

◆ getShdHeader()

bool ShdResReader::getShdHeader ( )
protected

Process the SHD file header

Returns
true if method was successful, false otherwise

References woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_0, woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_1, woss::ResReader::file_name, file_reader, woss::BellhopWoss::getBellhopShdSyntax(), shd_file, shd_file_v1, shd_header_collected, and woss::ResReader::woss_ref.

Referenced by initialize().

Here is the call graph for this function:

◆ initialize()

bool ShdResReader::initialize ( )
overridevirtual

Initializes the ShdResReader object, reads SHD file, and stores read Pressure values

Returns
true if method was successful, false otherwise

Implements woss::ResReader.

References woss::ResReader::file_name, getShdFile(), and getShdHeader().

Here is the call graph for this function:

◆ readAvgPressure()

std::unique_ptr< Pressure > ShdResReader::readAvgPressure ( double frequency,
double tx_depth,
double start_rx_depth,
double start_rx_range,
double end_rx_depth,
double end_rx_range )
overridevirtual

Gets the average Pressure value in given rx range-depth box

Parameters
frequencyfrequency [hZ]
tx_depthtransmitter depth [m]
start_rx_depthstart receiver depth [m]
start_rx_rangestart receiver range [m]
end_rx_depthend receiver depth [m]
end_rx_rangeend receiver range [m]
Returns
a std::unique_ptr to a valid Pressure value; a not valid Pressure if shd_file hasn't been read yet

Implements woss::ResReader.

References woss::Pressure::createNotValid(), woss::DefHandler::createPressure(), woss::Singleton< DefHandler >::instance(), readMapAvgPressure(), and shd_file_collected.

Here is the call graph for this function:

◆ readMapAvgPressure()

std::complex< double > ShdResReader::readMapAvgPressure ( double frequency,
double tx_depth,
double start_rx_depth,
double start_rx_range,
double end_rx_depth,
double end_rx_range,
double theta = 0.0 )
protected

Gets the average Pressure value in given rx range-depth box from ShdData Pressure array

Parameters
frequencyfrequency [hZ]
tx_depthtransmitter depth [m]
start_rx_depthstart receiver depth [m]
start_rx_rangestart receiver range [m]
end_rx_depthend receiver depth [m]
end_rx_rangeend receiver range [m]
thetatheta value
Returns
a valid Pressure value; a not valid Pressure if shd_file hasn't been read yet

References woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_0, woss::BELLHOP_CREATOR_SHD_FILE_SYNTAX_1, woss::BellhopWoss::getBellhopShdSyntax(), last_end_rx_depth, last_end_rx_range, last_ret_value, last_start_rx_depth, last_start_rx_range, last_tx_depth, shd_file, shd_file_v1, and woss::ResReader::woss_ref.

Referenced by readAvgPressure().

Here is the call graph for this function:

◆ readPressure()

std::unique_ptr< Pressure > ShdResReader::readPressure ( double frequency,
double tx_depth,
double rx_depth,
double rx_range ) const
overridevirtual

Gets a Pressure value of given range, depths

Parameters
frequencyfrequency [hZ]
tx_depthtransmitter depth [m]
rx_depthreceiver depth [m]
rx_rangereceiver range [m]
Returns
a std::unique_ptr to a valid Pressure value; a not valid Pressure if shd_file hasn't been read yet

Implements woss::ResReader.

References accessMap(), woss::Pressure::createNotValid(), woss::DefHandler::createPressure(), woss::Singleton< DefHandler >::instance(), and shd_file_collected.

Here is the call graph for this function:

◆ readTimeArr()

std::unique_ptr< TimeArr > ShdResReader::readTimeArr ( double frequency,
double tx_depth,
double rx_depth,
double rx_range ) const
overridevirtual

SHD files don't hold any time arrivals information. A special TimeArr is constructed from Pressure associated to given paramaters.

Parameters
frequencyfrequency [hZ]
tx_depthtransmitter depth [m]
rx_depthreceiver depth [m]
rx_rangereceiver range [m]
Returns
a std::unique_ptr to a TimeArr that holds a single Pressure value and no delay information

Implements woss::ResReader.

References accessMap(), woss::Pressure::createNotValid(), woss::DefHandler::createTimeArr(), woss::Singleton< DefHandler >::instance(), and shd_file_collected.

Here is the call graph for this function:

Member Data Documentation

◆ file_reader

std::ifstream woss::ShdResReader::file_reader
protected

Input file stream

Referenced by getShdFile(), getShdHeader(), and ShdResReader().

◆ last_end_rx_depth

double woss::ShdResReader::last_end_rx_depth
protected

Referenced by readMapAvgPressure(), and ShdResReader().

◆ last_end_rx_range

double woss::ShdResReader::last_end_rx_range
protected

Referenced by readMapAvgPressure(), and ShdResReader().

◆ last_ret_value

std::complex<double> woss::ShdResReader::last_ret_value
protected

Referenced by readMapAvgPressure(), and ShdResReader().

◆ last_start_rx_depth

double woss::ShdResReader::last_start_rx_depth
protected

Referenced by readMapAvgPressure(), and ShdResReader().

◆ last_start_rx_range

double woss::ShdResReader::last_start_rx_range
protected

Referenced by readMapAvgPressure(), and ShdResReader().

◆ last_tx_depth

double woss::ShdResReader::last_tx_depth
protected

Referenced by readMapAvgPressure(), and ShdResReader().

◆ shd_file

ShdData woss::ShdResReader::shd_file
protected

Struct that holds Pressure data read from SHD file

Referenced by accessMap(), getShdFile(), getShdHeader(), readMapAvgPressure(), and ShdResReader().

◆ shd_file_collected

bool woss::ShdResReader::shd_file_collected
protected

Boolean associated to the reading of SHD file data

Referenced by getShdFile(), readAvgPressure(), readPressure(), readTimeArr(), and ShdResReader().

◆ shd_file_v1

ShdData_v1 woss::ShdResReader::shd_file_v1
protected

Struct that holds Pressure data read from SHD file with V1 syntax

Referenced by accessMap(), getShdFile(), getShdHeader(), readMapAvgPressure(), and ShdResReader().

◆ shd_header_collected

bool woss::ShdResReader::shd_header_collected
protected

Boolean associated to the reading of SHD file header

Referenced by getShdHeader(), and ShdResReader().


The documentation for this class was generated from the following files: