Rosetta  2020.11
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Private Member Functions | Private Attributes | List of all members
numeric::fourier::SHT Class Reference

#include <SHT.hh>

Public Member Functions

 SHT ()
 Constructor. More...
 
 SHT (int B, int nR)
 Construct with a given bandwidth, # of radial shells. More...
 
 ~SHT ()
 Destructor. More...
 
void init (int B, int nR)
 Initialize with a given bandwidth, # of radial shells. More...
 
void sharm_transform (ObjexxFCL::FArray3D< double > const &sigR, ObjexxFCL::FArray3D< double > &sigCoefR, ObjexxFCL::FArray3D< double > &sigCoefI)
 Take spherical harmonic transform of 'sigR', result in 'sigCoefR' and 'sigCoefI'. More...
 
void sharm_invTransform (ObjexxFCL::FArray3D< double > &sigR, ObjexxFCL::FArray3D< double > &sigCoefR, ObjexxFCL::FArray3D< double > &sigCoefI)
 Take inverse spherical harmonic transform of 'sigCoefR' and 'sigCoefI', result in 'sigR'. More...
 
void sph_standardize (ObjexxFCL::FArray3D< double > &sigCoefR, ObjexxFCL::FArray3D< double > &sigCoefI)
 Standardize coefficients 'sigCoefR' and 'sigCoefI'. More...
 
void so3_correlate (ObjexxFCL::FArray3D< double > &so3_correlation, ObjexxFCL::FArray3D< double > &sigCoefR, ObjexxFCL::FArray3D< double > &sigCoefI, ObjexxFCL::FArray3D< double > &tmpCoefR, ObjexxFCL::FArray3D< double > &tmpCoefI)
 Correlate two signals ('sigCoef' and 'tmpCoef') as a function of rotation of 'tmpCoef', result in 'so3_correlation'. More...
 
void idx_to_rot (int maxloc, numeric::xyzMatrix< double > &thisRot)
 Convert an index from 'so3_correlation' into a rotation matrix. More...
 
void idx_to_euler (int maxloc, numeric::xyzVector< double > &eulerAngles)
 Convert an index from 'so3_correlation' into Euler angles alpha, beta, gamma. More...
 

Private Member Functions

void so3CombineCoef (utility::vector0< double > &sigCoefR, utility::vector0< double > &sigCoefI, utility::vector0< double > &tmpCoefR, utility::vector0< double > &tmpCoefI, ObjexxFCL::FArray3D< std::complex< double > > &so3Coef)
 
void inverseSo3 (ObjexxFCL::FArray3D< std::complex< double > > &so3Coef, ObjexxFCL::FArray3D< std::complex< double > > &conv)
 
void forwardS2 (utility::vector0< double > &rdata, utility::vector0< double > &rcoeffs, utility::vector0< double > &icoeffs)
 
void inverseS2 (utility::vector0< double > &rcoeffs, utility::vector0< double > &icoeffs, utility::vector0< double > &rdata)
 
void setup_Pmls ()
 
void setup_Wig ()
 
void setup_Weights ()
 

Private Attributes

int bw
 
int nRsteps
 
SO3coeffs so3_
 
kiss_fft_cfg p1
 
kiss_fftsplit_cfg fftPlan
 
kiss_fftsplit_cfg ifftPlan
 
kiss_dct_cfg dctPlan
 
kiss_dct_cfg idctPlan
 
utility::vector0< doubleweights_
 
utility::vector0< doubleprecompute_wig_trans_
 
utility::vector0
< utility::vector0< double > > 
precompute_pml_
 
utility::vector0
< utility::vector0< double > > 
precompute_pml_trans_
 

Constructor & Destructor Documentation

numeric::fourier::SHT::SHT ( )

Constructor.

References bw, dctPlan, fftPlan, idctPlan, ifftPlan, nRsteps, and p1.

numeric::fourier::SHT::SHT ( int  B,
int  nR 
)

Construct with a given bandwidth, # of radial shells.

References bw, dctPlan, fftPlan, idctPlan, ifftPlan, init(), nRsteps, and p1.

numeric::fourier::SHT::~SHT ( )

Destructor.

References dctPlan, fftPlan, idctPlan, ifftPlan, and p1.

Member Function Documentation

void numeric::fourier::SHT::forwardS2 ( utility::vector0< double > &  rdata,
utility::vector0< double > &  rcoeffs,
utility::vector0< double > &  icoeffs 
)
private
void numeric::fourier::SHT::idx_to_euler ( int  maxloc,
numeric::xyzVector< double > &  eulerAngles 
)

Convert an index from 'so3_correlation' into Euler angles alpha, beta, gamma.

References bw, test.T200_Scoring::ii, and numeric::constants::d::pi.

void numeric::fourier::SHT::idx_to_rot ( int  maxloc,
numeric::xyzMatrix< double > &  thisRot 
)

Convert an index from 'so3_correlation' into a rotation matrix.

References bw, numeric::xyzMatrix< typename >::identity(), test.T200_Scoring::ii, and numeric::constants::d::pi.

void numeric::fourier::SHT::init ( int  B,
int  nR 
)
void numeric::fourier::SHT::inverseS2 ( utility::vector0< double > &  rcoeffs,
utility::vector0< double > &  icoeffs,
utility::vector0< double > &  rdata 
)
private
void numeric::fourier::SHT::inverseSo3 ( ObjexxFCL::FArray3D< std::complex< double > > &  so3Coef,
ObjexxFCL::FArray3D< std::complex< double > > &  conv 
)
private
void numeric::fourier::SHT::setup_Pmls ( )
private
void numeric::fourier::SHT::setup_Weights ( )
private
void numeric::fourier::SHT::setup_Wig ( )
private
void numeric::fourier::SHT::sharm_invTransform ( ObjexxFCL::FArray3D< double > &  sigR,
ObjexxFCL::FArray3D< double > &  sigCoefR,
ObjexxFCL::FArray3D< double > &  sigCoefI 
)

Take inverse spherical harmonic transform of 'sigCoefR' and 'sigCoefI', result in 'sigR'.

References bw, ObjexxFCL::FArray3D< typename >::dimension(), init(), inverseS2(), nRsteps, ObjexxFCL::FArray3D< typename >::u2(), and ObjexxFCL::FArray3D< typename >::u3().

void numeric::fourier::SHT::sharm_transform ( ObjexxFCL::FArray3D< double > const &  sigR,
ObjexxFCL::FArray3D< double > &  sigCoefR,
ObjexxFCL::FArray3D< double > &  sigCoefI 
)

Take spherical harmonic transform of 'sigR', result in 'sigCoefR' and 'sigCoefI'.

References bw, ObjexxFCL::FArray3D< typename >::dimension(), forwardS2(), init(), nRsteps, ObjexxFCL::FArray3D< typename >::u2(), and ObjexxFCL::FArray3D< typename >::u3().

void numeric::fourier::SHT::so3_correlate ( ObjexxFCL::FArray3D< double > &  so3_correlation,
ObjexxFCL::FArray3D< double > &  sigCoefR,
ObjexxFCL::FArray3D< double > &  sigCoefI,
ObjexxFCL::FArray3D< double > &  tmpCoefR,
ObjexxFCL::FArray3D< double > &  tmpCoefI 
)

Correlate two signals ('sigCoef' and 'tmpCoef') as a function of rotation of 'tmpCoef', result in 'so3_correlation'.

References bw, ObjexxFCL::FArray3D< typename >::dimension(), init(), inverseSo3(), nRsteps, so3CombineCoef(), numeric::square(), ObjexxFCL::FArray3D< typename >::u2(), and ObjexxFCL::FArray3D< typename >::u3().

void numeric::fourier::SHT::so3CombineCoef ( utility::vector0< double > &  sigCoefR,
utility::vector0< double > &  sigCoefI,
utility::vector0< double > &  tmpCoefR,
utility::vector0< double > &  tmpCoefI,
ObjexxFCL::FArray3D< std::complex< double > > &  so3Coef 
)
private
void numeric::fourier::SHT::sph_standardize ( ObjexxFCL::FArray3D< double > &  sigCoefR,
ObjexxFCL::FArray3D< double > &  sigCoefI 
)

Member Data Documentation

int numeric::fourier::SHT::bw
private
kiss_dct_cfg numeric::fourier::SHT::dctPlan
private

Referenced by forwardS2(), init(), SHT(), and ~SHT().

kiss_fftsplit_cfg numeric::fourier::SHT::fftPlan
private

Referenced by forwardS2(), init(), SHT(), and ~SHT().

kiss_dct_cfg numeric::fourier::SHT::idctPlan
private

Referenced by init(), inverseS2(), SHT(), and ~SHT().

kiss_fftsplit_cfg numeric::fourier::SHT::ifftPlan
private

Referenced by init(), inverseS2(), SHT(), and ~SHT().

int numeric::fourier::SHT::nRsteps
private
kiss_fft_cfg numeric::fourier::SHT::p1
private

Referenced by init(), inverseSo3(), SHT(), and ~SHT().

utility::vector0< utility::vector0<double> > numeric::fourier::SHT::precompute_pml_
private

Referenced by forwardS2(), init(), and setup_Pmls().

utility::vector0< utility::vector0<double> > numeric::fourier::SHT::precompute_pml_trans_
private

Referenced by init(), inverseS2(), and setup_Pmls().

utility::vector0< double > numeric::fourier::SHT::precompute_wig_trans_
private

Referenced by init(), inverseSo3(), and setup_Wig().

SO3coeffs numeric::fourier::SHT::so3_
private
utility::vector0< double > numeric::fourier::SHT::weights_
private

Referenced by forwardS2(), and setup_Weights().


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