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

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

#include <sutra_controller.h>

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

Public Member Functions

 SutraController (CarmaContext *context, int nslope, int nactu, float delay, SutraDms *dms, int *idx_dms, int ndm, int *idx_centro, int ncentro)
 
virtual ~SutraController ()
 
virtual string get_type ()=0
 
virtual int comp_com ()=0
 !!! YOU MUST set d_centroids before calling it!!!! More...
 
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

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
 

Protected Attributes

mutex comp_voltage_mutex
 

Detailed Description

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

this class provides the controller features to COMPASS

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

Definition at line 48 of file sutra_controller.h.

Constructor & Destructor Documentation

◆ SutraController()

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

◆ ~SutraController()

template<typename Tcomp , typename Tout >
virtual SutraController< Tcomp, Tout >::~SutraController ( )
virtual

Member Function Documentation

◆ add_perturb()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::add_perturb ( )

◆ add_perturb_voltage()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::add_perturb_voltage ( string  name,
float *  perturb,
int  N 
)

◆ clip_commands()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::clip_commands ( )

◆ command_delay()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::command_delay ( )

◆ comp_com()

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

◆ comp_latency()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::comp_latency ( )

◆ comp_polc()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::comp_polc ( CarmaObj< Tcomp > &  sk,
CarmaObj< Tcomp > &  iMat,
CarmaObj< Tcomp > &  ol_meas 
)

Compute the open loop measurements and effective commands.

eff_u = a * u_{k-1} + b * u_k ol_meas = s_k - iMat * eff_u

Parameters
[in]a: Tcomp :
[in]uk_1: CarmaObj<Tcomp>& : commands at iteration k-1
[in]b: Tcomp :
[in]uk: CarmaObj<Tcomp>& : commands at iteration k
[in]sk: CarmaObj<Tcomp>& : closed loop slopes at iteration k
[in]iMat: CarmaObj<Tcomp>& : interaction matrix
[out]ol_meas: CarmaObj<Tcomp>& : open loop measurements
[out]eff_u: CarmaObj<Tcomp>& : effective commands
Returns
int : error code

◆ comp_voltage()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::comp_voltage ( )

◆ cublas_handle()

template<typename Tcomp , typename Tout >
cublasHandle_t SutraController< Tcomp, Tout >::cublas_handle ( )

Definition at line 101 of file sutra_controller.h.

Here is the call graph for this function:

◆ disable_perturb_voltage()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::disable_perturb_voltage ( string  name)

◆ enable_perturb_voltage()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::enable_perturb_voltage ( string  name)

◆ get_type()

◆ init_voltage()

template<typename Tcomp , typename Tout >
void SutraController< Tcomp, Tout >::init_voltage ( )

Definition at line 103 of file sutra_controller.h.

◆ nactu()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::nactu ( )

Definition at line 98 of file sutra_controller.h.

Here is the caller graph for this function:

◆ nslope()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::nslope ( )

Definition at line 99 of file sutra_controller.h.

Here is the caller graph for this function:

◆ remove_perturb_voltage()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::remove_perturb_voltage ( string  name)

◆ reset_coms()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::reset_coms ( )

◆ reset_perturb_voltage()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::reset_perturb_voltage ( )

◆ set_centroids_ref()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_centroids_ref ( Tcomp *  centroids_ref)

◆ set_com()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_com ( float *  com,
int  nElem 
)

◆ set_delay()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_delay ( float  delay)

◆ set_gain()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_gain ( float  gain)

◆ set_open_loop()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_open_loop ( int  open_loop_status,
bool  rst = true 
)

◆ set_perturb_voltage()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_perturb_voltage ( string  name,
float *  perturb,
int  N 
)

◆ set_val_max()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_val_max ( float  val_max)

◆ set_volt_max()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_volt_max ( float  volt_max)

◆ set_volt_min()

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::set_volt_min ( float  volt_min)

Member Data Documentation

◆ a

template<typename Tcomp , typename Tout >
Tcomp SutraController< Tcomp, Tout >::a

Definition at line 61 of file sutra_controller.h.

◆ b

template<typename Tcomp , typename Tout >
Tcomp SutraController< Tcomp, Tout >::b

Definition at line 63 of file sutra_controller.h.

◆ c

template<typename Tcomp , typename Tout >
Tcomp SutraController< Tcomp, Tout >::c

Definition at line 65 of file sutra_controller.h.

◆ centro_idx

template<typename Tcomp , typename Tout >
vector<int> SutraController< Tcomp, Tout >::centro_idx

Definition at line 75 of file sutra_controller.h.

◆ comp_voltage_mutex

template<typename Tcomp , typename Tout >
mutex SutraController< Tcomp, Tout >::comp_voltage_mutex
protected

Definition at line 151 of file sutra_controller.h.

◆ current_context

template<typename Tcomp , typename Tout >
CarmaContext* SutraController< Tcomp, Tout >::current_context

Definition at line 50 of file sutra_controller.h.

◆ d_centroids

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* SutraController< Tcomp, Tout >::d_centroids

Definition at line 68 of file sutra_controller.h.

◆ d_centroids_padded

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* SutraController< Tcomp, Tout >::d_centroids_padded

Definition at line 69 of file sutra_controller.h.

◆ d_circular_coms

template<typename Tcomp , typename Tout >
std::deque<CarmaObj<Tcomp> *> SutraController< Tcomp, Tout >::d_circular_coms

Definition at line 76 of file sutra_controller.h.

◆ d_com

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* SutraController< Tcomp, Tout >::d_com

Definition at line 70 of file sutra_controller.h.

◆ d_com1

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* SutraController< Tcomp, Tout >::d_com1

Definition at line 74 of file sutra_controller.h.

◆ d_com_clipped

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* SutraController< Tcomp, Tout >::d_com_clipped

Definition at line 72 of file sutra_controller.h.

◆ d_com_padded

template<typename Tcomp , typename Tout >
CarmaObj<Tcomp>* SutraController< Tcomp, Tout >::d_com_padded

Definition at line 71 of file sutra_controller.h.

◆ d_dmseen

template<typename Tcomp , typename Tout >
vector<SutraDm *> SutraController< Tcomp, Tout >::d_dmseen

Definition at line 67 of file sutra_controller.h.

◆ d_perturb_map

template<typename Tcomp , typename Tout >
map<string, tuple<CarmaObj<Tcomp> *, int, bool> > SutraController< Tcomp, Tout >::d_perturb_map

Definition at line 79 of file sutra_controller.h.

◆ d_voltage

template<typename Tcomp , typename Tout >
CarmaObj<Tout>* SutraController< Tcomp, Tout >::d_voltage

Definition at line 73 of file sutra_controller.h.

◆ delay

template<typename Tcomp , typename Tout >
Tcomp SutraController< Tcomp, Tout >::delay

Definition at line 54 of file sutra_controller.h.

◆ device

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::device

Definition at line 51 of file sutra_controller.h.

◆ gain

template<typename Tcomp , typename Tout >
Tcomp SutraController< Tcomp, Tout >::gain

Definition at line 55 of file sutra_controller.h.

◆ mainStream

template<typename Tcomp , typename Tout >
cudaStream_t SutraController< Tcomp, Tout >::mainStream

Definition at line 82 of file sutra_controller.h.

◆ nactus

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::nactus

Definition at line 58 of file sutra_controller.h.

◆ nslopes

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::nslopes

Definition at line 59 of file sutra_controller.h.

◆ open_loop

template<typename Tcomp , typename Tout >
int SutraController< Tcomp, Tout >::open_loop

Definition at line 53 of file sutra_controller.h.

◆ val_max

template<typename Tcomp , typename Tout >
Tout SutraController< Tcomp, Tout >::val_max

Definition at line 60 of file sutra_controller.h.

◆ volt_max

template<typename Tcomp , typename Tout >
float SutraController< Tcomp, Tout >::volt_max

Definition at line 57 of file sutra_controller.h.

◆ volt_min

template<typename Tcomp , typename Tout >
float SutraController< Tcomp, Tout >::volt_min

Definition at line 56 of file sutra_controller.h.


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