SOFUS ..
Public Member Functions | Static Public Member Functions | List of all members
Aperture< T > Class Template Reference

Aperture class. More...

#include <fnm.hpp>

Public Member Functions

 Aperture ()
 Constructor. More...
 
 Aperture (const size_t nElements, const T width, const T kerf, const T height)
 
 ~Aperture ()
 
void SubToElements ()
 
void Rotate (const T iEuler[3], const T iFocus[3])
 
int ExcitationTypeGet () const
 
void ExcitationTypeSet (const int iExcitationType)
 
const T & FCGet () const
 
void FCSet (const T &fc)
 
const T & BandWidthGet () const
 
void BandWidthSet (const T &value)
 
const bool & NormalizeGet () const
 
void NormalizeSet (const bool &value)
 
void FocusLinesCreate (size_t nLines, sofus::FocusLineList< T > **obj) const
 
int ImpulseTypeGet () const
 
void ImpulseTypeSet (const int iImpulseType)
 
void ExcitationGet (T **data, size_t *nData) const
 
int ExcitationSet (const T *data, const size_t nData)
 
void ImpulseGet (T **data, size_t *nData) const
 
int ImpulseSet (const T *data, const size_t nData)
 
const size_t & NDivWGet () const
 
int NDivWSet (const size_t &nDivW)
 
const size_t & NDivHGet () const
 
int NDivHSet (const size_t &nDivH)
 
void FocusUpdate ()
 
void FocusUpdateRef ()
 
CalcPwFnmVectorized (const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples, int mask=0x1F)
 
CalcPwFnmVecThreaded (const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples, int mask=0x1F)
 
Accessors to read-only attributes
const size_t & NElementsGet () const
 
const size_t & NSubElementsGet () const
 
void ExtentGet (T **coordinates, size_t *nDim, size_t *nLimits) const
 
AreaGet () const
 
void PhasesGet (T **data, size_t *nData) const
 
void SubPhasesGet (T **data, size_t *nData) const
 
void RectanglesGet (T **out, size_t *nElements, size_t *nSubElements, size_t *nParams) const
 
Read-only references for external use
int ElementsRefGet (size_t *nElements, size_t *nSubElements, const sps::element_rect_t< T > **&elements) const
 
int ApodizationsRefGet (size_t *nElements, const T *&apodizations) const
 
Accessor (getters) and Mutators (setters)
void DelaysGet (T **data, size_t *nData) const
 
int DelaysSet (const T *data, const size_t nData)
 
void AttenuationEnabledSet (const bool &iEnabled)
 
const bool & AttenuationEnabledGet () const
 
void AlphaSet (const T &value)
 
const T & AlphaGet () const
 
void BetaSet (const T &value)
 
const T & BetaGet () const
 
void PositionsGet (T **out, size_t *nElements, size_t *nParams) const
 
int PositionsSet (const T *pos, const size_t nPositions, const size_t nDim)
 
void FocusGet (T oFocus[3]) const
 
void FocusSet (const T iFocus[3])
 
void Focus2Get (T oFocus[3]) const
 
void Focus2Set (const T iFocus[3])
 
void CenterFocusGet (T oFocus[3]) const
 
void CenterFocusSet (const T iFocus[3])
 
int FocusingTypeGet () const
 
void FocusingTypeSet (const int iFocusingType)
 
const size_t & NThreadsGet () const
 
int NThreadsSet (const size_t &nThreads)
 
const T & F0Get () const
 
void F0Set (const T &f0)
 
const T & WGet () const
 
void WSet (const T &w)
 
const sysparm_t< T > SysParmGet () const
 
void SysParmSet (const sysparm_t< T > *arg)
 
sofus::AperturePulses< T > * PulsesGet ()
 
const T & DensityGet () const
 
void DensitySet (const T &rho)
 
const T & FsGet () const
 
int FsSet (const T &fs)
 
const T & CGet () const
 
void CSet (const T &c)
 
const T & XmtFNumberGet () const
 
void XmtFNumberSet (const T &fnumber)
 
void ElementsGet (T **out, size_t *nElements, size_t *nParams) const
 
int ElementsSet (const T *pos, const size_t nPositions, const size_t nDim)
 Set element positions. More...
 
void SubElementsGet (T **out, size_t *nElements, size_t *nSubElements, size_t *nParams) const
 
int SubElementsSet (const T *pos, const size_t nElements, const size_t nSubElementsPerElement, const size_t nDim)
 
void ApodizationGet (T **data, size_t *nData) const
 
int ApodizationSet (const T *data, const size_t nData)
 
int ApodizationTypeGet () const
 
void ApodizationTypeSet (const int iApodizationType)
 
FNM Calculation functions
int CalcCwFieldRef (const T *pos, const size_t nPositions, const size_t nDim, std::complex< T > **odata, size_t *nOutPositions)
 
int CalcCwFieldFourRef (const T *pos, const size_t nPositions, const size_t nDim, std::complex< T > **odata, size_t *nOutPositions)
 
int CalcCwEcho (const Aperture< T > *pOther, const T *pos, const size_t nPositions, const size_t nDim, std::complex< T > **odata, size_t *nOutPositions)
 
int CalcCwBack (const T *pos, const size_t nPositions, const size_t nDim, const std::complex< T > *pFieldValues, const size_t nComplexValues, std::complex< T > **odata, size_t *nOutPositions)
 
int CalcCwTimeReversal (const Aperture< T > *pOther, const T *pos, const size_t nPositions, const size_t nDim, const std::complex< T > *pFieldValues, const size_t nComplexValues, std::complex< T > **odata, size_t *nOutPositions, size_t *nSamples)
 
int CalcCwFast (const T *pos, const size_t nPositions, const size_t nDim, std::complex< T > **odata, size_t *nOutPositions)
 
int CalcCwFieldNaiveFast (const T *pos, const size_t nPositions, const size_t nDim, std::complex< T > **odata, size_t *nOutPositions)
 
int CalcCwFieldNaive (const T *pos, const size_t nPositions, const size_t nDim, std::complex< T > **odata, size_t *nOutPositions)
 
CalcPwFnmThreaded (const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples, int mask=0x1F)
 
CalcTransientSingleElementNoDelay (const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples, int mask=0x1F)
 
CalcPwBackScat (const T *pos, const size_t nPositions, const size_t nDim, const T *data, const size_t nData, T **odata, size_t *nSignals, size_t *nSamples)
 
SOFUS accellerated calculation functions
CalcMatchedFilter (const Aperture< T > *other, const T iFocus[3], T **odata, size_t *nSignals, size_t *nSamples, int **sizeAndOffsets, size_t *nFilters, size_t *nTwo, T **data, size_t *nData)
 
CalcSmfApply (const Aperture< T > *other, const T iFocus[3], const T tStart, const T *iData, const size_t nChannels, const size_t nSamples, T **data, size_t *nData)
 
CalcScat (const Aperture< T > *other, const T *pos, const size_t nPositions, const size_t nDim, const T *data, const size_t nData, T **odata, size_t *nSignals, size_t *nSamples)
 
CalcScatThreaded (const Aperture< T > *other, const sofus::FocusLineList< T > *xmtLines, const T *pos, const size_t nPositions, const size_t nDim, const T *data, const size_t nData, T **odata, size_t *nSignals, size_t *nSamples)
 
CalcPwEcho (const Aperture< T > *other, const T *pos, const size_t nPositions, const size_t nDim, const T *data, const size_t nData, T **odata, size_t *nSignals, size_t *nSamples)
 
CalcPwFnmEcho (const Aperture< T > *other, const T *pos, const size_t nPositions, const size_t nDim, const T *data, const size_t nData, T **odata, size_t *nSignals, size_t *nSamples)
 
CalcPwField (const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples)
 
CalcPwFieldRef (const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples)
 
CalcPwFieldThreaded (const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples)
 
Developers corner (do not touch)
void InPlaceOP (T *ioData, size_t nIOdata)
 
Angular spectrum approach (work in progress)
int CalcAsa (const T *y0, const size_t nx, const size_t ny, const T dx, const T dy, const size_t Nx, const size_t Ny, std::complex< T > **p1, size_t *onx, size_t *ony, size_t *onz)
 

Static Public Member Functions

static int ArrayCreate (Aperture< T > **obj)
 
static int FocusedLinearArrayCreate (Aperture< T > **obj, const size_t nElements, const T width, const T kerf, const T height, const size_t nSubH, const T focus)
 
static int MatrixArrayCreate (Aperture< T > **obj, const size_t nRows, const size_t nCols, const T rowWidth, const T rowKerf, const T colWidth, const T colKerf)
 
static int FocusedConvexArrayCreate (fnm::Aperture< T > **obj, const size_t nElements, const T width, const T kerf, const T height, const T radius, const size_t nSubH, const T focus)
 
static sysparm_t< T > * DefaultSysParmGet ()
 

Static Public Attributes

Static variables
static const size_t nVerticesPerElement = 4
 
static const size_t nElementPosParameters = 8
 
static bool normalize
 Normalize responses. More...
 
static const T Neper_dB
 
static const T dB_Neper
 

Detailed Description

template<class T>
class fnm::Aperture< T >

Aperture class.

Template Parameters
Tfloating point type

A class representing an aperture. Consider using (backslash)nosubgrouping

Constructor & Destructor Documentation

◆ Aperture() [1/2]

Aperture ( )

Constructor.

The constructor can be used to create arbitrary transducers using ElementsSet or SubElementsSet after construction.

◆ Aperture() [2/2]

Aperture ( const size_t  nElements,
const T  width,
const T  kerf,
const T  height 
)

Constructor for linear array

Parameters
[in]nElements
[in]width
[in]kerf
[in]height
Deprecated:
The user is encouraged to use Aperture::FocusedLinearArrayCreate instead
See also
Aperture::FocusedLinearArrayCreate
Returns

◆ ~Aperture()

~Aperture ( )

Destructor

Returns

Member Function Documentation

◆ AlphaGet()

const T & AlphaGet ( ) const

Get attenuation alpha parameter

Returns
alpha

◆ AlphaSet()

void AlphaSet ( const T &  value)

Set attenuation alpha parameter

Parameters
[in]value

◆ ApodizationGet()

void ApodizationGet ( T **  data,
size_t *  nData 
) const

Get apodization

Parameters
[out]data
[out]nData

◆ ApodizationSet()

int ApodizationSet ( const T *  data,
const size_t  nData 
)

Set apodization

Parameters
[in]data
[in]nData

◆ ApodizationsRefGet()

int ApodizationsRefGet ( size_t *  nElements,
const T *&  apodizations 
) const

Get reference to apodizations

Parameters
[out]nElements
[out]apodizations
Returns

◆ ApodizationTypeGet()

int ApodizationTypeGet ( ) const

Get apodization type

◆ ApodizationTypeSet()

void ApodizationTypeSet ( const int  iApodizationType)

Set apodization

Parameters
[in]iApodizationType

◆ AreaGet()

T AreaGet ( ) const

Get area of aperture

Returns

◆ ArrayCreate()

static int ArrayCreate ( Aperture< T > **  obj)
static

Static constructor for empty array

Parameters
obj
Returns

◆ AttenuationEnabledGet()

const bool & AttenuationEnabledGet ( ) const

Is attenuation enabled

Returns

◆ AttenuationEnabledSet()

void AttenuationEnabledSet ( const bool &  iEnabled)

Enable attenuation

Parameters
[in]iEnabled

◆ BandWidthGet()

const T & BandWidthGet ( ) const

Get bandwidth

Returns

◆ BandWidthSet()

void BandWidthSet ( const T &  value)

Set bandwidth

Parameters
[in]value

◆ BetaGet()

const T & BetaGet ( ) const

Get beta attenuation value

Returns

◆ BetaSet()

void BetaSet ( const T &  value)

Set beta attenuation value.

Signals are attenuated according to:

\begin{align}
h(x,y,z) &\mapsto \exp{(-f \beta \, d\,)} h(x,y,z)\nonumber\\
&\mapsto \exp{(-(f-f_0)\beta \, d\,)}\exp{(-\beta f0 \, d\,)} h(x,y,z)\nonumber\\
&\mapsto \exp{(-(f-f_0)\beta \, d\,)}\exp{(-\alpha\, d\,)} h(x,y,z),\nonumber
\end{align}

where $ d$ is the distance. Note the unit is Neper and not dB. Multiply an attenuation in dB with Aperture<T>::Neper_dB

Example:

0.54 dB / (cm MHz), f0 = 2 MHz

beta = 0.54 * 100 / 1e6 * 0.11 Neper / dB = 6.22e-6 Neper/(Hz m)

alpha = 2e6 * 0.54 * 100 / 1e6 * 0.11 Neper/ dB = 12.43 Neper/m

Parameters
[in]value[Neper/(Hz m)]

◆ CalcAsa()

int CalcAsa ( const T *  y0,
const size_t  nx,
const size_t  ny,
const T  dx,
const T  dy,
const size_t  Nx,
const size_t  Ny,
std::complex< T > **  p1,
size_t *  onx,
size_t *  ony,
size_t *  onz 
)
Parameters
[in]y0
[in]nx
[in]ny
[in]dx
[in]dy
[in]Nx
[in]Ny
[out]p1
[out]onx
[out]ony
[out]onz
Returns

◆ CalcCwBack()

int CalcCwBack ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
const std::complex< T > *  pFieldValues,
const size_t  nComplexValues,
std::complex< T > **  odata,
size_t *  nOutPositions 
)

◆ CalcCwEcho()

int CalcCwEcho ( const Aperture< T > *  pOther,
const T *  pos,
const size_t  nPositions,
const size_t  nDim,
std::complex< T > **  odata,
size_t *  nOutPositions 
)

◆ CalcCwFast()

int CalcCwFast ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
std::complex< T > **  odata,
size_t *  nOutPositions 
)

Compute CW response at multiple positions (uses SIMD). The ranges of integration are reduced to give the most accurate result with less abcissas.

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nOutPositions
Returns

◆ CalcCwFieldFourRef()

int CalcCwFieldFourRef ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
std::complex< T > **  odata,
size_t *  nOutPositions 
)

Compute CW response at multiple positions. Number of integrals is reduced to four

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nOutPositions
Returns

◆ CalcCwFieldNaive()

int CalcCwFieldNaive ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
std::complex< T > **  odata,
size_t *  nOutPositions 
)

Compute CW response at multiple positions. The range of integration is naive so it is accurate when projections lie inside an element, but requires a huge amount of abcissas to get a usuable result, when projections lie outside an element.

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nOutPositions

◆ CalcCwFieldNaiveFast()

int CalcCwFieldNaiveFast ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
std::complex< T > **  odata,
size_t *  nOutPositions 
)

Same as CalcCwField, but uses SIMD.

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nOutPositions
Returns

◆ CalcCwFieldRef()

int CalcCwFieldRef ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
std::complex< T > **  odata,
size_t *  nOutPositions 
)

Compute CW response at multiple positions. Reference implementation. See fnm::CalcCwFieldRef.

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nOutPositions
Returns

◆ CalcCwTimeReversal()

int CalcCwTimeReversal ( const Aperture< T > *  pOther,
const T *  pos,
const size_t  nPositions,
const size_t  nDim,
const std::complex< T > *  pFieldValues,
const size_t  nComplexValues,
std::complex< T > **  odata,
size_t *  nOutPositions,
size_t *  nSamples 
)

◆ CalcMatchedFilter()

T CalcMatchedFilter ( const Aperture< T > *  other,
const T  iFocus[3],
T **  odata,
size_t *  nSignals,
size_t *  nSamples,
int **  sizeAndOffsets,
size_t *  nFilters,
size_t *  nTwo,
T **  data,
size_t *  nData 
)
Parameters
[in]other
[in]iFocus
[in]odata
[in]nSignals
[out]nSamples
[out]sizeAndOffsets
[out]nFilters
[out]nTwo
[out]data
[out]nData
Returns

◆ CalcPwBackScat()

T CalcPwBackScat ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
const T *  data,
const size_t  nData,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)

◆ CalcPwEcho()

T CalcPwEcho ( const Aperture< T > *  other,
const T *  pos,
const size_t  nPositions,
const size_t  nDim,
const T *  data,
const size_t  nData,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)
Parameters
[in]other
[in]pos
[in]nPositions
[in]nDim
[in]data
[in]nData
[out]odata
[out]nSignals
[out]nSamples
Returns

◆ CalcPwField()

T CalcPwField ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)

Compute pulsed-wave field

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nSignals
[out]nSamples
Returns

◆ CalcPwFieldRef()

T CalcPwFieldRef ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)

Reference implementation of Aperture::CalcPwField

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nSignals
[out]nSamples
Returns

◆ CalcPwFieldThreaded()

T CalcPwFieldThreaded ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)

Threaded version of Aperture::CalcPwField.

Bug:
: Sometimes to little memory is allocated
Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nSignals
[out]nSamples
Returns

◆ CalcPwFnmEcho()

T CalcPwFnmEcho ( const Aperture< T > *  other,
const T *  pos,
const size_t  nPositions,
const size_t  nDim,
const T *  data,
const size_t  nData,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)

◆ CalcPwFnmThreaded()

T CalcPwFnmThreaded ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
T **  odata,
size_t *  nSignals,
size_t *  nSamples,
int  mask = 0x1F 
)

Calculate pulsed wave field using fast near-field method.

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nSignals
[out]nSamples
[in]mask
Returns

◆ CalcPwFnmVecThreaded()

T CalcPwFnmVecThreaded ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
T **  odata,
size_t *  nSignals,
size_t *  nSamples,
int  mask = 0x1F 
)
Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nSignals
[out]nSamples
[in]mask
Returns

◆ CalcPwFnmVectorized()

T CalcPwFnmVectorized ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
T **  odata,
size_t *  nSignals,
size_t *  nSamples,
int  mask = 0x1F 
)

Calculate pulsed wave field using fast near-field method

Experimental SSE4 version

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nSignals
[out]nSamples
[in]mask
Returns

◆ CalcScat()

T CalcScat ( const Aperture< T > *  other,
const T *  pos,
const size_t  nPositions,
const size_t  nDim,
const T *  data,
const size_t  nData,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)

Rename to sim image

Parameters
[in]other
[in]pos
[in]nPositions
[in]nDim
[in]data
[in]nData
[out]odata
[out]nSignals
[out]nSamples
Returns

◆ CalcScatThreaded()

T CalcScatThreaded ( const Aperture< T > *  other,
const sofus::FocusLineList< T > *  xmtLines,
const T *  pos,
const size_t  nPositions,
const size_t  nDim,
const T *  data,
const size_t  nData,
T **  odata,
size_t *  nSignals,
size_t *  nSamples 
)

◆ CalcSmfApply()

T CalcSmfApply ( const Aperture< T > *  other,
const T  iFocus[3],
const T  tStart,
const T *  iData,
const size_t  nChannels,
const size_t  nSamples,
T **  data,
size_t *  nData 
)
Parameters
[in]other
[in]iFocus
[in]tStart
[in]iData
[in]nChannels
[in]nSamples
[out]data
[out]nData
Returns

◆ CalcTransientSingleElementNoDelay()

T CalcTransientSingleElementNoDelay ( const T *  pos,
const size_t  nPositions,
const size_t  nDim,
T **  odata,
size_t *  nSignals,
size_t *  nSamples,
int  mask = 0x1F 
)

Compute transient for first element.

Mask bits: 0x01: Direct, 0x02: Edge (q0->q3) 0x04: Edge (q0->q1) 0x08: Edge (q1->q2) 0x10: Edge (q2->q3) 0x1F: All contributions (default)

Parameters
[in]pos
[in]nPositions
[in]nDim
[out]odata
[out]nSignals
[out]nSamples
[in]mask
Returns

◆ CenterFocusGet()

void CenterFocusGet ( oFocus[3]) const

Get center focus point

Parameters
[out]oFocus

◆ CenterFocusSet()

void CenterFocusSet ( const T  iFocus[3])

Set center focus point

Parameters
[in]iFocus

◆ CGet()

const T & CGet ( ) const

Get speed of sound

Returns

◆ CSet()

void CSet ( const T &  c)

Set speed of sound

Parameters
[in]c

◆ DefaultSysParmGet()

static sysparm_t< T > * DefaultSysParmGet ( )
static

Get default system parameters. The system parameters are shared among all apertures, unless system paramters are changed using Aperture::SysParmGet and Aperture::SysParmSet for a specific array.

Returns

◆ DelaysGet()

void DelaysGet ( T **  data,
size_t *  nData 
) const

Get delays of elements

Parameters
[out]data
[out]nData

◆ DelaysSet()

int DelaysSet ( const T *  data,
const size_t  nData 
)

Set delays of elements

Parameters
[in]data
[in]nData

◆ DensityGet()

const T & DensityGet ( ) const

◆ DensitySet()

void DensitySet ( const T &  rho)

◆ ElementsGet()

void ElementsGet ( T **  out,
size_t *  nElements,
size_t *  nParams 
) const

Get element definitions

Parameters
[out]out
[out]nElements
[out]nParams

◆ ElementsRefGet()

int ElementsRefGet ( size_t *  nElements,
size_t *  nSubElements,
const sps::element_rect_t< T > **&  elements 
) const

Get reference to (sub)-elements

Parameters
[out]nElements
[out]nSubElements
[out]elements
Returns

◆ ElementsSet()

bool ElementsSet ( const T *  pos,
const size_t  nPositions,
const size_t  nDim 
)

Set element positions.

Parameters
[in]posInput data T[nElements][8]
[in]nPositions
[in]nDimMust equal 8
Exceptions
std::runtime_errornDim != 8
Returns
true on success

◆ ExcitationGet()

void ExcitationGet ( T **  data,
size_t *  nData 
) const

Get excitation (reference to or view of)

Parameters
[out]data
[out]nData

◆ ExcitationSet()

int ExcitationSet ( const T *  data,
const size_t  nData 
)

Set excitation

Parameters
[in]data
[in]nData

◆ ExcitationTypeGet()

int ExcitationTypeGet ( ) const

Get excitation type

Returns

◆ ExcitationTypeSet()

void ExcitationTypeSet ( const int  iExcitationType)

Set Excitation type (0: ToneBurst, 1: Hamming-weighted pulse)

Parameters
iExcitationType

◆ ExtentGet()

void ExtentGet ( T **  coordinates,
size_t *  nDim,
size_t *  nLimits 
) const

Get extent of aperture

Parameters
[out]coordinatesdata
[out]nDim3 dimensions
[out]nLimitsMin and maximum

◆ F0Get()

const T & F0Get ( ) const

Get excitation center frequency

Returns

◆ F0Set()

void F0Set ( const T &  f0)

Set excitation center frequency

Parameters
[in]f0

◆ FCGet()

const T & FCGet ( ) const

Get transducer center frequency used for computing impulse response

Returns

◆ FCSet()

void FCSet ( const T &  fc)

Set pulse center frequency

Parameters
[out]fc

◆ Focus2Get()

void Focus2Get ( oFocus[3]) const

Get second focus point

Parameters
[out]oFocus

◆ Focus2Set()

void Focus2Set ( const T  iFocus[3])

Set second focus point

Parameters
[in]iFocus

◆ FocusedConvexArrayCreate()

static int FocusedConvexArrayCreate ( fnm::Aperture< T > **  obj,
const size_t  nElements,
const T  width,
const T  kerf,
const T  height,
const T  radius,
const size_t  nSubH,
const T  focus 
)
static

Static constructor for elevation focused convex array

Parameters
[out]obj
[in]nElements
[in]width
[in]kerf
[in]height
[in]radius
[in]nSubH
[in]focus
Returns

◆ FocusedLinearArrayCreate()

static int FocusedLinearArrayCreate ( Aperture< T > **  obj,
const size_t  nElements,
const T  width,
const T  kerf,
const T  height,
const size_t  nSubH,
const T  focus 
)
static

Static constructor for elevation focused linear array

Parameters
[out]obj
[in]nElements
[in]width
[in]kerf
[in]height
[in]nSubHNumber of sub-elements used for elevation (default=1)
[in]focusElevation focus depth (0.0 means no elevation focus)
Returns

◆ FocusGet()

void FocusGet ( oFocus[3]) const

Get focus point or virtual source

Parameters
[out]oFocus

◆ FocusingTypeGet()

int FocusingTypeGet ( ) const

Get focus type used

◆ FocusingTypeSet()

void FocusingTypeSet ( const int  iFocusingType)

Set focus type used

Parameters
[in]iFocusingType

◆ FocusLinesCreate()

void FocusLinesCreate ( size_t  nLines,
sofus::FocusLineList< T > **  obj 
) const

Create a number of lines, which can be used for focusing

Parameters
[out]nLines
[out]obj

◆ FocusSet()

void FocusSet ( const T  iFocus[3])

Set focus point or virtual source

Parameters
[in]iFocus

◆ FocusUpdate()

void FocusUpdate ( )

Update phases after setting focus. This function is used by all methods for adjusting phases for focusing.

◆ FocusUpdateRef()

void FocusUpdateRef ( )

Reference implementation of fnm::FocusUpdate

◆ FsGet()

const T & FsGet ( ) const

Get sampling frequency

Returns

◆ FsSet()

int FsSet ( const T &  fs)

Set sampling frequency

Parameters
[in]fs

◆ ImpulseGet()

void ImpulseGet ( T **  data,
size_t *  nData 
) const

Get impulse (reference to or view of)

Parameters
[out]data
[out]nData

◆ ImpulseSet()

int ImpulseSet ( const T *  data,
const size_t  nData 
)

Set impulse

Parameters
[in]data
[in]nData

◆ ImpulseTypeGet()

int ImpulseTypeGet ( ) const

Get impulse type

Returns

◆ ImpulseTypeSet()

void ImpulseTypeSet ( const int  iImpulseType)

Set impulse type

Parameters
iImpulseType

◆ InPlaceOP()

void InPlaceOP ( T *  ioData,
size_t  nIOdata 
)

◆ MatrixArrayCreate()

static int MatrixArrayCreate ( Aperture< T > **  obj,
const size_t  nRows,
const size_t  nCols,
const T  rowWidth,
const T  rowKerf,
const T  colWidth,
const T  colKerf 
)
static

Create Matrix array - all elements are elements (no sub-elements)

Parameters
[out]obj
[in]nRows
[in]nCols
[in]rowWidth
[in]rowKerf
[in]colWidth
[in]colKerf
Returns

◆ NDivHGet()

const size_t & NDivHGet ( ) const

Get number of height abcissas

Returns

◆ NDivHSet()

int NDivHSet ( const size_t &  nDivH)

Set number of height abicissas

Parameters
[in]nDivH

◆ NDivWGet()

const size_t & NDivWGet ( ) const

Get number of width abcissas

Returns
# of abcissa in the width dimension

◆ NDivWSet()

int NDivWSet ( const size_t &  nDivW)

Set number of width abcissas

Parameters
[in]nDivW

◆ NElementsGet()

const size_t & NElementsGet ( ) const

Get element count

Returns

◆ NormalizeGet()

const bool & NormalizeGet ( ) const

Get normalization state

Returns

◆ NormalizeSet()

void NormalizeSet ( const bool &  value)

Enable normalization of convolutions

Parameters
[in]value

◆ NSubElementsGet()

const size_t & NSubElementsGet ( ) const

Get sub-element count

Returns

◆ NThreadsGet()

const size_t & NThreadsGet ( ) const

Get number of threads

Returns
# of threads

◆ NThreadsSet()

int NThreadsSet ( const size_t &  nThreads)

Set number of threads

Parameters
[in]nThreads

◆ PhasesGet()

void PhasesGet ( T **  data,
size_t *  nData 
) const

Get phases of elements

Parameters
[out]data
[out]nData

◆ PositionsGet()

void PositionsGet ( T **  out,
size_t *  nElements,
size_t *  nParams 
) const

Get element position data

Parameters
[out]out
[out]nElements
[out]nParams

◆ PositionsSet()

int PositionsSet ( const T *  pos,
const size_t  nPositions,
const size_t  nDim 
)

Set element position data (may differ from center-most sub-element)

Parameters
[in]pos
[in]nPositions
[in]nDim

◆ PulsesGet()

sofus::AperturePulses< T > * PulsesGet ( )

◆ RectanglesGet()

void RectanglesGet ( T **  out,
size_t *  nElements,
size_t *  nSubElements,
size_t *  nParams 
) const

Get rectangles for display

Parameters
[out]out
[out]nElements
[out]nSubElements
[out]nParams

◆ Rotate()

void Rotate ( const T  iEuler[3],
const T  iFocus[3] 
)

Rotate the array around a point

Parameters
iEulerEuler angles using convention 'yxy'
iFocusPoint to rotate about

◆ SubElementsGet()

void SubElementsGet ( T **  out,
size_t *  nElements,
size_t *  nSubElements,
size_t *  nParams 
) const

Get sub-element definitions

Parameters
[out]out
[out]nElements
[out]nSubElements
[out]nParams

◆ SubElementsSet()

int SubElementsSet ( const T *  pos,
const size_t  nElements,
const size_t  nSubElementsPerElement,
const size_t  nDim 
)

Set sub-element definitions

Parameters
[in]pos
[in]nElements
[in]nSubElementsPerElement
[in]nDim
Returns
true on success

◆ SubPhasesGet()

void SubPhasesGet ( T **  data,
size_t *  nData 
) const

Get phases of elements

Parameters
[out]data
[out]nData

◆ SubToElements()

void SubToElements ( )

◆ SysParmGet()

const sysparm_t< T > SysParmGet ( ) const

Get system parameters (TODO: Avoid grouping)

Returns

◆ SysParmSet()

void SysParmSet ( const sysparm_t< T > *  arg)

Set the system parameters

Parameters
[in]arg

◆ WGet()

const T & WGet ( ) const

Get width of pulse [s]

Returns

◆ WSet()

void WSet ( const T &  w)

Set width of pulse [s]. TODO: Figure this out

Parameters
[in]w

◆ XmtFNumberGet()

const T & XmtFNumberGet ( ) const

Get transmit f-number

Returns

◆ XmtFNumberSet()

void XmtFNumberSet ( const T &  fnumber)

Set transmit f-number

Parameters
[in]fnumber

Member Data Documentation

◆ dB_Neper

const T dB_Neper
static

dB per Neper, 20 log(e)

◆ nElementPosParameters

const size_t nElementPosParameters = 8
static

Number of parameters for an element

◆ Neper_dB

const T Neper_dB
static

Nepers per dB, 1 / ( 20 log(e))

◆ normalize

bool normalize
static

Normalize responses.

Todo:
: Not needed

◆ nVerticesPerElement

const size_t nVerticesPerElement = 4
static

Number of corners for an element


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