COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
sutra_controller_mv< Tcomp, Tout > Class Template Reference

this class provides the controller_mv features to COMPASS More...

#include <sutra_controller_mv.h>

Inheritance diagram for sutra_controller_mv< Tcomp, Tout >:
Collaboration diagram for sutra_controller_mv< Tcomp, Tout >:

Public Member Functions

 sutra_controller_mv (CarmaContext *context, long nslope, long nactu, float delay, SutraDms *dms, int *idx_dms, int ndm, int *idx_centro, int ncentro)
 
 sutra_controller_mv (const sutra_controller_mv &controller)
 
 ~sutra_controller_mv ()
 
string get_type ()
 
int svdec_imat ()
 
int build_cmat (const char *dmtype, char *method)
 
int build_cmat (Tcomp cond)
 
int frame_delay ()
 
int comp_com ()
 !!! YOU MUST set d_centroids before calling it!!!! More...
 
int set_modal_gains (Tcomp *mgain)
 
int set_cmat (Tcomp *cmat)
 
int set_imat (Tcomp *imat)
 
int load_noisemat (Tcomp *noise)
 
int do_covmat (SutraDm *ydm, char *method, int *indx_pup, long dim, Tcomp *xpos, Tcomp *ypos, long Nkl, Tcomp norm, Tcomp ampli)
 
int do_geomat (CarmaObj< Tcomp > *d_geocov, CarmaObj< Tcomp > *d_IF, long n_pts, Tcomp ampli)
 
int piston_filt (CarmaObj< Tcomp > *d_statcov)
 
int piston_filt_cphim (CarmaObj< Tcomp > *d_cphim, Tcomp *F)
 
int filter_cphim (Tcomp *F, Tcomp *Nact)
 
int filter_cmat (Tcomp cond)
 
int invgen (CarmaObj< Tcomp > *d_mat, Tcomp cond, int job)
 
int invgen (CarmaObj< Tcomp > *d_mat, CarmaHostObj< Tcomp > *h_eigen, Tcomp cond)
 
int invgen_cpu (CarmaObj< Tcomp > *d_mat, CarmaHostObj< Tcomp > *h_eigen, Tcomp cond)
 
int DDiago (CarmaObj< Tcomp > *d_statcov, CarmaObj< Tcomp > *d_geocov)
 
int load_covmat (Tcomp *covmat)
 
int load_klbasis (Tcomp *klbasis)
 
int compute_Cmm (SutraAtmos *atmos, SutraSensors *sensors, double *L0, double *cn2, double *alphaX, double *alphaY, double diamTel, double cobs)
 
int compute_Cphim (SutraAtmos *atmos, SutraSensors *sensors, SutraDms *dms, double *L0, double *cn2, double *alphaX, double *alphaY, double *X, double *Y, double *xactu, double *yactu, double diamTel, double *k2, long *NlayerDm, long *indLayerDm, double FoV, double *pitch, double *alt_dm)
 
- Public Member Functions inherited from SutraController< Tcomp, Tout >
 SutraController (CarmaContext *context, int nslope, int nactu, float delay, SutraDms *dms, int *idx_dms, int ndm, int *idx_centro, int ncentro)
 
virtual ~SutraController ()
 
int nactu ()
 
int nslope ()
 
cublasHandle_t cublas_handle ()
 
void init_voltage ()
 
int set_centroids_ref (Tcomp *centroids_ref)
 
int add_perturb_voltage (string name, float *perturb, int N)
 
int set_perturb_voltage (string name, float *perturb, int N)
 
int remove_perturb_voltage (string name)
 
int reset_perturb_voltage ()
 
int enable_perturb_voltage (string name)
 
int disable_perturb_voltage (string name)
 
int set_com (float *com, int nElem)
 
int set_open_loop (int open_loop_status, bool rst=true)
 
int clip_commands ()
 
int comp_voltage ()
 
int comp_latency ()
 
int set_delay (float delay)
 
int set_volt_min (float volt_min)
 
int set_volt_max (float volt_max)
 
int set_val_max (float val_max)
 
int set_gain (float gain)
 
int reset_coms ()
 
int command_delay ()
 
int add_perturb ()
 
int comp_polc (CarmaObj< Tcomp > &sk, CarmaObj< Tcomp > &iMat, CarmaObj< Tcomp > &ol_meas)
 Compute the open loop measurements and effective commands. More...
 

Public Attributes

CarmaObj< Tcomp > * d_imat
 
CarmaObj< Tcomp > * d_cmat
 
CarmaObj< Tcomp > * d_gain
 
CarmaObj< Tcomp > * d_covmat
 
CarmaObj< Tcomp > * d_KLbasis
 
CarmaObj< Tcomp > * d_noisemat
 
CarmaObj< Tcomp > * d_Cmm
 
CarmaObj< Tcomp > * d_Cphim
 
CarmaHostObj< Tcomp > * h_Cmmeigenvals
 
CarmaHostObj< Tcomp > * h_eigenvals
 
CarmaObj< Tcomp > * d_cenbuff
 
CarmaObj< Tcomp > * d_compbuff
 
CarmaObj< Tcomp > * d_compbuff2
 
CarmaObj< Tcomp > * d_olmeas
 
CarmaObj< Tcomp > * d_err
 
cublasHandle_t cublas_handle
 
- Public Attributes inherited from SutraController< Tcomp, Tout >
CarmaContextcurrent_context
 
int device
 
int open_loop
 
Tcomp delay
 
Tcomp gain
 
float volt_min
 
float volt_max
 
int nactus
 
int nslopes
 
Tout val_max
 
Tcomp a
 
Tcomp b
 
Tcomp c
 
vector< SutraDm * > d_dmseen
 
CarmaObj< Tcomp > * d_centroids
 
CarmaObj< Tcomp > * d_centroids_padded
 
CarmaObj< Tcomp > * d_com
 
CarmaObj< Tcomp > * d_com_padded
 
CarmaObj< Tcomp > * d_com_clipped
 
CarmaObj< Tout > * d_voltage
 
CarmaObj< Tcomp > * d_com1
 
vector< int > centro_idx
 
std::deque< CarmaObj< Tcomp > * > d_circular_coms
 
map< string, tuple< CarmaObj< Tcomp > *, int, bool > > d_perturb_map
 
cudaStream_t mainStream
 

Additional Inherited Members

- Protected Attributes inherited from SutraController< Tcomp, Tout >
mutex comp_voltage_mutex
 

Detailed Description

template<typename Tcomp, typename Tout>
class sutra_controller_mv< Tcomp, Tout >

this class provides the controller_mv features to COMPASS

Author
COMPASS Team https://github.com/ANR-COMPASS
Version
5.4.4
Date
2022/01/24

Definition at line 29 of file sutra_controller_mv.h.

Constructor & Destructor Documentation

◆ sutra_controller_mv() [1/2]

template<typename Tcomp , typename Tout >
sutra_controller_mv< Tcomp, Tout >::sutra_controller_mv ( CarmaContext context,
long  nslope,
long  nactu,
float  delay,
SutraDms dms,
int *  idx_dms,
int  ndm,
int *  idx_centro,
int  ncentro 
)

◆ sutra_controller_mv() [2/2]

template<typename Tcomp , typename Tout >
sutra_controller_mv< Tcomp, Tout >::sutra_controller_mv ( const sutra_controller_mv< Tcomp, Tout > &  controller)

◆ ~sutra_controller_mv()

template<typename Tcomp , typename Tout >
sutra_controller_mv< Tcomp, Tout >::~sutra_controller_mv ( )

Member Function Documentation

◆ build_cmat() [1/2]

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::build_cmat ( const char *  dmtype,
char *  method 
)

◆ build_cmat() [2/2]

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::build_cmat ( Tcomp  cond)

◆ comp_com()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::comp_com ( )
virtual

!!! YOU MUST set d_centroids before calling it!!!!

Implements SutraController< Tcomp, Tout >.

◆ compute_Cmm()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::compute_Cmm ( SutraAtmos atmos,
SutraSensors sensors,
double *  L0,
double *  cn2,
double *  alphaX,
double *  alphaY,
double  diamTel,
double  cobs 
)

◆ compute_Cphim()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::compute_Cphim ( SutraAtmos atmos,
SutraSensors sensors,
SutraDms dms,
double *  L0,
double *  cn2,
double *  alphaX,
double *  alphaY,
double *  X,
double *  Y,
double *  xactu,
double *  yactu,
double  diamTel,
double *  k2,
long *  NlayerDm,
long *  indLayerDm,
double  FoV,
double *  pitch,
double *  alt_dm 
)

◆ DDiago()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::DDiago ( CarmaObj< Tcomp > *  d_statcov,
CarmaObj< Tcomp > *  d_geocov 
)

◆ do_covmat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::do_covmat ( SutraDm ydm,
char *  method,
int *  indx_pup,
long  dim,
Tcomp *  xpos,
Tcomp *  ypos,
long  Nkl,
Tcomp  norm,
Tcomp  ampli 
)

◆ do_geomat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::do_geomat ( CarmaObj< Tcomp > *  d_geocov,
CarmaObj< Tcomp > *  d_IF,
long  n_pts,
Tcomp  ampli 
)

◆ filter_cmat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::filter_cmat ( Tcomp  cond)

◆ filter_cphim()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::filter_cphim ( Tcomp *  F,
Tcomp *  Nact 
)

◆ frame_delay()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::frame_delay ( )

◆ get_type()

template<typename Tcomp , typename Tout >
string sutra_controller_mv< Tcomp, Tout >::get_type ( )
virtual

◆ invgen() [1/2]

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::invgen ( CarmaObj< Tcomp > *  d_mat,
CarmaHostObj< Tcomp > *  h_eigen,
Tcomp  cond 
)

◆ invgen() [2/2]

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::invgen ( CarmaObj< Tcomp > *  d_mat,
Tcomp  cond,
int  job 
)

◆ invgen_cpu()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::invgen_cpu ( CarmaObj< Tcomp > *  d_mat,
CarmaHostObj< Tcomp > *  h_eigen,
Tcomp  cond 
)

◆ load_covmat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::load_covmat ( Tcomp *  covmat)

◆ load_klbasis()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::load_klbasis ( Tcomp *  klbasis)

◆ load_noisemat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::load_noisemat ( Tcomp *  noise)

◆ piston_filt()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::piston_filt ( CarmaObj< Tcomp > *  d_statcov)

◆ piston_filt_cphim()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::piston_filt_cphim ( CarmaObj< Tcomp > *  d_cphim,
Tcomp *  F 
)

◆ set_cmat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::set_cmat ( Tcomp *  cmat)

◆ set_imat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::set_imat ( Tcomp *  imat)

◆ set_modal_gains()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::set_modal_gains ( Tcomp *  mgain)

◆ svdec_imat()

template<typename Tcomp , typename Tout >
int sutra_controller_mv< Tcomp, Tout >::svdec_imat ( )

Member Data Documentation

◆ cublas_handle

template<typename Tcomp , typename Tout >
cublasHandle_t sutra_controller_mv< Tcomp, Tout >::cublas_handle

Definition at line 53 of file sutra_controller_mv.h.

◆ d_cenbuff

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_cenbuff

Definition at line 47 of file sutra_controller_mv.h.

◆ d_cmat

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_cmat

Definition at line 32 of file sutra_controller_mv.h.

◆ d_Cmm

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_Cmm

Definition at line 39 of file sutra_controller_mv.h.

◆ d_compbuff

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_compbuff

Definition at line 48 of file sutra_controller_mv.h.

◆ d_compbuff2

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_compbuff2

Definition at line 49 of file sutra_controller_mv.h.

◆ d_covmat

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_covmat

Definition at line 36 of file sutra_controller_mv.h.

◆ d_Cphim

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_Cphim

Definition at line 40 of file sutra_controller_mv.h.

◆ d_err

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_err

Definition at line 51 of file sutra_controller_mv.h.

◆ d_gain

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_gain

Definition at line 33 of file sutra_controller_mv.h.

◆ d_imat

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_imat

Definition at line 31 of file sutra_controller_mv.h.

◆ d_KLbasis

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_KLbasis

Definition at line 37 of file sutra_controller_mv.h.

◆ d_noisemat

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_noisemat

Definition at line 38 of file sutra_controller_mv.h.

◆ d_olmeas

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::d_olmeas

Definition at line 50 of file sutra_controller_mv.h.

◆ h_Cmmeigenvals

template<typename Tcomp , typename Tout >
CarmaHostObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::h_Cmmeigenvals

Definition at line 42 of file sutra_controller_mv.h.

◆ h_eigenvals

template<typename Tcomp , typename Tout >
CarmaHostObj<Tcomp>* sutra_controller_mv< Tcomp, Tout >::h_eigenvals

Definition at line 43 of file sutra_controller_mv.h.


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