|
SOFUS ..
|
Fast Nearfield Method interfaces and implementations. More...
Classes | |
| class | Aperture |
| Aperture class. More... | |
| class | ApertureData |
| ApertureData structure. More... | |
| struct | bla |
| class | CircularAperture |
| struct | CircularApertureData |
| struct | GLQuad1D |
| GL (Gauss-Legendre) structure. More... | |
| struct | GLQuad2D |
| GL (Gauss-Legendre) structure. More... | |
| class | HanningWeightedPulse |
| HanningWeightedPulse. More... | |
| class | Identity |
| struct | sysparm_t |
| Forward-declare sysparm_t. More... | |
| class | TimeSpaceDecompositions |
| class | ToneBurst |
| ToneBurst. More... | |
Typedefs | |
| typedef void | ProgIF |
| template<class T > | |
| using | element_array = sps::unique_aligned_multi_array< sps::element_rect_t< T >, 2 > |
| template<class T > | |
| using | point_array = sps::unique_aligned_array< sps::point_t< T > > |
| typedef FNM_ExcitationTypeNS::ExcitationType_Value | ExcitationType |
| typedef FNM_FocusingTypeNS::FocusingType_Value | FocusingType |
| typedef FNM_ApodizationTypeNS::ApodizationType_Value | ApodizationType |
| typedef RwParamTypeNS::RwParamType_Value | RwParamType |
| typedef FNM_TypeNS::Type_Value | Type |
Functions | |
| template<class T , template< typename > class A> | |
| T | CalcCircularTransientFieldRefZeroDelay (const fnm::sysparm_t< T > *sysparm, const fnm::CircularApertureData< T > &data, const T *pos, const size_t nPositions, T **odata, size_t *nSamples) |
| template<class T > | |
| int | CalcCircularCwFieldRef (const fnm::sysparm_t< T > *sysparm, const fnm::CircularApertureData< T > &data, const T *pos, const size_t nPositions, std::complex< T > **odata) |
| template<class T > | |
| void | MatrixArray (const size_t nRows, const size_t nCols, const T rowWidth, const T rowKerf, const T colWidth, const T colKerf, element_array< T > &&elements) |
| template<class T > | |
| void | FocusedLinearArray (const size_t nElements, const size_t nSubH, const size_t nSubW, const T width, const T kerf, const T height, const T eFocus, const int arcPlacement, element_array< T > &&elements) |
| template<class T > | |
| void | FocusedConvexArray (const size_t nElements, const size_t nSubH, const size_t nSubW, const T width, const T kerf, const T height, const T radius, const T eFocus, const int arcPlacement, element_array< T > &&elements) |
| template<class T > | |
| std::complex< T > | CalcHz (const T &s, const T &l, const T &z, const T &k, const GLQuad2D< T > *gl) |
| template<class T > | |
| int | CalcCwFieldRef (const sysparm_t< T > *sysparm, const ApertureData< T > *data, const T *pos, const size_t nPositions, std::complex< T > **odata, void *pBar) |
| template<class T > | |
| int | CalcCwFieldFourRef (const sysparm_t< T > *sysparm, const ApertureData< T > *data, const T *pos, const size_t nPositions, std::complex< T > **odata) |
| template<class T > | |
| int | CalcCwFocusNaiveFast (const sysparm_t< T > *sysparm, const ApertureData< T > &data, const T *pos, const size_t nPositions, std::complex< T > **odata) |
| template<class T > | |
| std::complex< T > | CalcSingleFast (const T &s1, const T &s2, const T &l, const T &z, const T &k, const T *uxs, const T *uweights, const size_t nUs) |
| template<class T > | |
| int | CalcCwTimeReversal (const fnm::sysparm_t< T > *sysparm, const ApertureData< T > *pData0, const ApertureData< T > *pData1, const T *pos, const size_t nPositions, const std::complex< T > *pFieldValues, const size_t nComplexValues, std::complex< T > **odata, sps::ProgressBarInterface *pBar) |
| template<class T > | |
| int | CalcCwBackThreaded (const fnm::sysparm_t< T > *sysparm, const ApertureData< T > *data, const T *pos, const size_t nPositions, const std::complex< T > *pWeights, const size_t nWeights, std::complex< T > **odata, sps::ProgressBarInterface *pbar) |
| template<class T > | |
| int | CalcCwThreaded (const fnm::sysparm_t< T > *sysparm, const ApertureData< T > *data, const T *pos, const size_t nPositions, std::complex< T > **odata, sps::ProgressBarInterface *pbar) |
| template<class T > | |
| void | CalcCwField (const sysparm_t< T > *sysparm, const ApertureData< T > &data, const T *pos, const size_t nPositions, std::complex< T > **odata) |
| template<class T > | |
| int | CalcCwFocus (const sysparm_t< T > *sysparm, const ApertureData< T > &data, const T *pos, const size_t nPositions, std::complex< T > **odata) |
| template<class T > | |
| int | CalcCwFocusRef (const sysparm_t< T > *sysparm, const ApertureData< T > &data, const T *pos, const size_t nPositions, std::complex< T > **odata) |
| template<class T > | |
| void | CalcWeightsAndAbcissae (const sysparm_t< T > *sysparm, sps::unique_aligned_array< T > &&uxs, sps::unique_aligned_array< T > &&uweights, sps::unique_aligned_array< T > &&vxs, sps::unique_aligned_array< T > &&vweights) |
| template<class T > | |
| void | CalcWeightsAndAbcissaeScaled (const sysparm_t< T > *sysparm, const sps::element_rect_t< T > &element, sps::unique_aligned_array< T > &&uxs, sps::unique_aligned_array< T > &&uweights, sps::unique_aligned_array< T > &&vxs, sps::unique_aligned_array< T > &&vweights) |
| template<class T > | |
| void | CalcWeightsAndAbcissaeSIMD (const sysparm_t< T > *sysparm, T **__restrict uv_xs, T **__restrict uv_ws) |
| template<class T > | |
| void | CalcWeightsAndAbcissaeScaledSIMD (const sysparm_t< T > *sysparm, const sps::element_rect_t< T > *pElement, sps::unique_aligned_array< T > &&uv_xs, sps::unique_aligned_array< T > &&uv_ws) |
| template<class T > | |
| int | PythagoreanFocusDelays (const sps::point_t< T > *pElementPositions, const size_t &nElements, const sps::point_t< T > &focus, const sps::point_t< T > ¢erFocus, const size_t &nDelays, T *pDelays) |
| template<class T > | |
| int | PytDelays0 (const sps::unique_aligned_array< sps::point_t< T > > &positions, const size_t &nElements, const sps::point_t< T > ¢erFocus, const sps::point_t< T > &focus0, const sps::point_t< T > &focus1, const T &c, sps::unique_aligned_array< T > &delays, bool allPositive=false) |
| template<class T > | |
| int | PytDelays1 (const sps::unique_aligned_array< sps::point_t< T > > &positions, const size_t &nElements, const sps::point_t< T > ¢erFocus, const sps::point_t< T > &focus0, const sps::point_t< T > &focus1, const T &c, sps::unique_aligned_array< T > &delays, bool allPositive=false) |
| template<class T > | |
| int | PytDelays2 (const sps::unique_aligned_array< sps::point_t< T > > &positions, const size_t &nElements, const sps::point_t< T > ¢erFocus, const sps::point_t< T > &focus0, const sps::point_t< T > &focus1, const T &c, sps::unique_aligned_array< T > &delays, bool allPositive=false) |
| template<typename T , template< typename > class A> | |
| void | FnmResponse (const sysparm_t< T > *pSysparm, const ApertureData< T > *pData, const GLQuad2D< T > *pGL, const T &litude, const sps::point_t< T > &point, const int &iSampleSignalStart, const size_t &nSamples, T *pOdata, const int mask=0x1F) |
| template<class T , template< typename > class A> | |
| T | TransientSingleRect (const sysparm_t< T > *pSysparm, const ApertureData< T > *data, const T *pos, const size_t nPositions, T **odata, size_t *nSamples, int mask=0x1F) |
| template<class T > | |
| T | CalcFdTransientRef (const sysparm_t< T > *pSysparm, const ApertureData< T > *data, const T *pos, const size_t nPositions, const size_t nDim, T **odata, size_t *nSignals, size_t *nSamples) |
| template<class T > | |
| T | FourDirect (const sps::element_rect_t< T > *element, const sofus::proj_limit_dist_t< T > *limit, const GLQuad2D< T > *uv) |
| template<class T , template< typename > class A> | |
| void | DirectWaveSingle (const sysparm_t< T > *pSysparm, const sps::element_rect_t< T > *element, const GLQuad2D< T > *uv, const T &scale, const sofus::proj_limit_dist_t< T > *pld, const T delay, const int iSampleSignalStart, const size_t nSamples, T *odata) |
| template<typename T , template< typename > class A> | |
| void | EdgeResponse (const sysparm_t< T > *pSysparm, const sps::element_rect_t< T > *element, const T &scale, const size_t iEdge, const sofus::proj_limit_dist_t< T > *pld, const GLQuad1D< T > *pGL, const T &delay, const int &iSampleSignalStart, const size_t &nSamples, T *odata) |
| template<class T , template< typename > class A> | |
| T | CalcPwFnmThreaded (const sysparm_t< T > *sysparm, const ApertureData< T > *data, const T *pos, const size_t nPositions, T **odata, size_t *nSamples, int mask, sps::ProgressBarInterface *pBar) |
| template<class T > | |
| unsigned int __stdcall | CalcPwFnmThreadFunc (void *ptarg) |
Variables | |
| template<class T > | |
| constexpr element_array< T >(* | element_array_create )(size_t m, size_t n) |
| template<class T > | |
| constexpr element_array< T >(* | point_array_create )(size_t m) |
Fast Nearfield Method interfaces and implementations.
| using element_array = sps::unique_aligned_multi_array<sps::element_rect_t<T>, 2> |
Type-alias for a unique two-dimensional array of elements
| using point_array = sps::unique_aligned_array<sps::point_t<T> > |
| typedef void ProgIF |
| typedef FNM_TypeNS::Type_Value Type |
| int CalcCircularCwFieldRef | ( | const fnm::sysparm_t< T > * | sysparm, |
| const fnm::CircularApertureData< T > & | data, | ||
| const T * | pos, | ||
| const size_t | nPositions, | ||
| std::complex< T > ** | odata | ||
| ) |
Compute CW field from circular transducer
| sysparm | |
| data | |
| pos | |
| nPositions | |
| odata |
| T CalcCircularTransientFieldRefZeroDelay | ( | const fnm::sysparm_t< T > * | sysparm, |
| const fnm::CircularApertureData< T > & | data, | ||
| const T * | pos, | ||
| const size_t | nPositions, | ||
| T ** | odata, | ||
| size_t * | nSamples | ||
| ) |
Transient field computed. The result is in units of [Pa]. The tone burst used is +/- 1.0 V.
| sysparm | |
| data | Data describing the transducer |
| pos | |
| nPositions | |
| odata | |
| nSamples |
| T CalcFdTransientRef | ( | const sysparm_t< T > * | pSysparm, |
| const ApertureData< T > * | data, | ||
| const T * | pos, | ||
| const size_t | nPositions, | ||
| const size_t | nDim, | ||
| T ** | odata, | ||
| size_t * | nSignals, | ||
| size_t * | nSamples | ||
| ) |
| T CalcPwFnmThreaded | ( | const sysparm_t< T > * | sysparm, |
| const ApertureData< T > * | data, | ||
| const T * | pos, | ||
| const size_t | nPositions, | ||
| T ** | odata, | ||
| size_t * | nSamples, | ||
| int | mask, | ||
| sps::ProgressBarInterface * | pBar | ||
| ) |
| unsigned int __stdcall CalcPwFnmThreadFunc | ( | void * | ptarg | ) |
| void CalcWeightsAndAbcissae | ( | const sysparm_t< T > * | sysparm, |
| sps::unique_aligned_array< T > && | uxs, | ||
| sps::unique_aligned_array< T > && | uweights, | ||
| sps::unique_aligned_array< T > && | vxs, | ||
| sps::unique_aligned_array< T > && | vweights | ||
| ) |
| sysparm | |
| uxs | |
| uweights | |
| vxs | |
| vweights |
| void CalcWeightsAndAbcissaeScaled | ( | const sysparm_t< T > * | sysparm, |
| const sps::element_rect_t< T > & | element, | ||
| sps::unique_aligned_array< T > && | uxs, | ||
| sps::unique_aligned_array< T > && | uweights, | ||
| sps::unique_aligned_array< T > && | vxs, | ||
| sps::unique_aligned_array< T > && | vweights | ||
| ) |
Weight and abscissa are scaled, but abcissa are not shifted
| sysparm | |
| element | |
| uxs | |
| uweights | |
| vxs | |
| vweights |
| void CalcWeightsAndAbcissaeScaledSIMD | ( | const sysparm_t< T > * | sysparm, |
| const sps::element_rect_t< T > * | pElement, | ||
| sps::unique_aligned_array< T > && | uv_xs, | ||
| sps::unique_aligned_array< T > && | uv_ws | ||
| ) |
| void CalcWeightsAndAbcissaeSIMD | ( | const sysparm_t< T > * | sysparm, |
| T **__restrict | uv_xs, | ||
| T **__restrict | uv_ws | ||
| ) |
| void DirectWaveSingle | ( | const sysparm_t< T > * | pSysparm, |
| const sps::element_rect_t< T > * | element, | ||
| const GLQuad2D< T > * | uv, | ||
| const T & | scale, | ||
| const sofus::proj_limit_dist_t< T > * | pld, | ||
| const T | delay, | ||
| const int | iSampleSignalStart, | ||
| const size_t | nSamples, | ||
| T * | odata | ||
| ) |
Compute direct response for rectangle
| pSysparm | |
| element | |
| scale | |
| pld | |
| uv | |
| delay | |
| iSampleSignalStart | |
| nSamples | |
| odata |
| void EdgeResponse | ( | const sysparm_t< T > * | pSysparm, |
| const sps::element_rect_t< T > * | element, | ||
| const T & | scale, | ||
| const size_t | iEdge, | ||
| const sofus::proj_limit_dist_t< T > * | pld, | ||
| const GLQuad1D< T > * | pGL, | ||
| const T & | delay, | ||
| const int & | iSampleSignalStart, | ||
| const size_t & | nSamples, | ||
| T * | odata | ||
| ) |
Compute edge response for rectangle
Note: Uses scaled Gauss-Legendre weights and abcissae
| pSysparm | |
| element | |
| scale | |
| iEdge | |
| pld | |
| pGL | |
| delay | |
| iSampleSignalStart | |
| nSamples | |
| odata |
| void FnmResponse | ( | const sysparm_t< T > * | pSysparm, |
| const ApertureData< T > * | pData, | ||
| const GLQuad2D< T > * | pGL, | ||
| const T & | amplitude, | ||
| const sps::point_t< T > & | point, | ||
| const int & | iSampleSignalStart, | ||
| const size_t & | nSamples, | ||
| T * | pOdata, | ||
| const int | mask = 0x1F |
||
| ) |
| void FocusedConvexArray | ( | const size_t | nElements, |
| const size_t | nSubH, | ||
| const size_t | nSubW, | ||
| const T | width, | ||
| const T | kerf, | ||
| const T | height, | ||
| const T | radius, | ||
| const T | eFocus, | ||
| const int | arcPlacement, | ||
| element_array< T > && | elements | ||
| ) |
Compute focused convex array
| [in] | nElements | |
| [in] | nSubH | sub-elements: elevation |
| [in] | nSubW | sub-elements: azimuth |
| [in] | width | |
| [in] | kerf | |
| [in] | height | |
| [in] | radius | |
| [in] | eFocus | elevation focus |
| [in] | arcPlacement | 0 = outside, 1 = inside |
| [out] | elements |
| void FocusedLinearArray | ( | const size_t | nElements, |
| const size_t | nSubH, | ||
| const size_t | nSubW, | ||
| const T | width, | ||
| const T | kerf, | ||
| const T | height, | ||
| const T | eFocus, | ||
| const int | arcPlacement, | ||
| element_array< T > && | elements | ||
| ) |
Compute focused linear array
| [in] | nElements | |
| [in] | nSubH | |
| [in] | nSubW | |
| [in] | width | |
| [in] | kerf | |
| [in] | height | |
| [in] | eFocus | |
| [in] | arcPlacement | 0 = outside, 1 = inside |
| [out] | elements |
| T FourDirect | ( | const sps::element_rect_t< T > * | element, |
| const sofus::proj_limit_dist_t< T > * | limit, | ||
| const GLQuad2D< T > * | uv | ||
| ) |
Note: Uses scaled Gauss-Legendre weights and abcissae
| element | |
| limit | Projection and limits for sphere intersecting element |
| uv | Gauss-Legendre weights and abcissae scaled by hw (for u) and hh (for v) |
| void MatrixArray | ( | const size_t | nRows, |
| const size_t | nCols, | ||
| const T | rowWidth, | ||
| const T | rowKerf, | ||
| const T | colWidth, | ||
| const T | colKerf, | ||
| element_array< T > && | elements | ||
| ) |
Create Matrix array
| [in] | nRows | |
| [in] | nCols | |
| [in] | rowWidth | |
| [in] | rowKerf | |
| [in] | colWidth | |
| [in] | colKerf | |
| [out] | elements |
| int PytDelays0 | ( | const sps::unique_aligned_array< sps::point_t< T > > & | positions, |
| const size_t & | nElements, | ||
| const sps::point_t< T > & | centerFocus, | ||
| const sps::point_t< T > & | focus0, | ||
| const sps::point_t< T > & | focus1, | ||
| const T & | c, | ||
| sps::unique_aligned_array< T > & | delays, | ||
| bool | allPositive = false |
||
| ) |
| int PytDelays1 | ( | const sps::unique_aligned_array< sps::point_t< T > > & | positions, |
| const size_t & | nElements, | ||
| const sps::point_t< T > & | centerFocus, | ||
| const sps::point_t< T > & | focus0, | ||
| const sps::point_t< T > & | focus1, | ||
| const T & | c, | ||
| sps::unique_aligned_array< T > & | delays, | ||
| bool | allPositive = false |
||
| ) |
| int PytDelays2 | ( | const sps::unique_aligned_array< sps::point_t< T > > & | positions, |
| const size_t & | nElements, | ||
| const sps::point_t< T > & | centerFocus, | ||
| const sps::point_t< T > & | focus0, | ||
| const sps::point_t< T > & | focus1, | ||
| const T & | c, | ||
| sps::unique_aligned_array< T > & | delays, | ||
| bool | allPositive = false |
||
| ) |
| int PythagoreanFocusDelays | ( | const sps::point_t< T > * | pElementPositions, |
| const size_t & | nElements, | ||
| const sps::point_t< T > & | focus, | ||
| const sps::point_t< T > & | centerFocus, | ||
| const size_t & | nDelays, | ||
| T * | pDelays | ||
| ) |
| T TransientSingleRect | ( | const sysparm_t< T > * | pSysparm, |
| const ApertureData< T > * | data, | ||
| const T * | pos, | ||
| const size_t | nPositions, | ||
| T ** | odata, | ||
| size_t * | nSamples, | ||
| int | mask = 0x1F |
||
| ) |
|
constexpr |
|
constexpr |