COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
sutra_roket.h
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------
2 // This file is part of COMPASS <https://anr-compass.github.io/compass/>
3 //
4 // Copyright (C) 2011-2023 COMPASS Team <https://github.com/ANR-COMPASS>
5 // All rights reserved.
6 
7 // -----------------------------------------------------------------------------
8 
16 
17 #ifndef _SUTRA_ROKET_H_
18 #define _SUTRA_ROKET_H_
19 
20 #include <carma.h>
21 #include <carma_obj.h>
22 #include <sutra_atmos.h>
23 #include <sutra_rtc.h>
24 #include <sutra_sensors.h>
25 #include <sutra_target.h>
26 #include <sutra_telescope.h>
27 #include <sutra_utils.h>
28 
29 class SutraRoket {
30  public:
32  int device;
33  float gain; // Loop gain
34  int nfilt; // Number of filtered modes
35  int nactus; // number of actuators
36  int nmodes; // number of modes
37  int iterk; // current iteration number
38  int niter;
39  int loopcontroller; // index of the loop controller
40  int geocontroller; // index of the geo controller
41  int nslopes;
42  // sutra objects to supervise
51 
52  // Projection matrices
55 
56  // Error contributors buffers
63  float fitting;
64 
65  // Residual error buffers
69  // Command loop backup
71  // Target screen backup
73  // Additional buffers
78  // Loop filter matrix
80  // R*D matrix
82  // PSF ortho
84  // Loop output covariance matrices
87 
88  public:
92  int geocontroller, int nactus, int nmodes, int nfilt, int niter,
93  float *Btt, float *P, float *gRD, float *RD);
95 
100  CarmaObj<float> *d_idata2, float gain, int k);
101 };
102 
103 int separate_modes(float *modes, float *filtmodes, int nmodes, int nfilt,
104  CarmaDevice *device);
105 
106 #endif
this class provides the context in which CarmaObj are created
Definition: carma_context.h:79
this class provides the atmos features to COMPASS
Definition: sutra_atmos.h:25
this class provides the roket features to COMPASS
Definition: sutra_roket.h:29
int restore_loop_state()
CarmaObj< float > * d_covm
Definition: sutra_roket.h:86
SutraTelescope * tel
Definition: sutra_roket.h:46
SutraSensors * sensors
Definition: sutra_roket.h:44
CarmaObj< float > * d_tmpdiff
Definition: sutra_roket.h:77
CarmaObj< float > * d_covv
Definition: sutra_roket.h:85
int apply_loop_filter(CarmaObj< float > *d_odata, CarmaObj< float > *d_idata1, CarmaObj< float > *d_idata2, float gain, int k)
int compute_breakdown()
sutra_controller_geo * geocontrol
Definition: sutra_roket.h:50
CarmaObj< float > * d_modes
Definition: sutra_roket.h:75
CarmaObj< float > * d_fullErr
Definition: sutra_roket.h:66
CarmaObj< float > * d_psfortho
Definition: sutra_roket.h:83
CarmaObj< float > * d_alias
Definition: sutra_roket.h:61
float fitting
Definition: sutra_roket.h:63
CarmaObj< float > * d_RD
Definition: sutra_roket.h:81
SutraRoket(CarmaContext *context, int device, SutraRtc *rtc, SutraSensors *sensors, SutraTarget *target, SutraDms *dms, SutraTelescope *tel, SutraAtmos *atm, int loopcontroller, int geocontroller, int nactus, int nmodes, int nfilt, int niter, float *Btt, float *P, float *gRD, float *RD)
CarmaObj< float > * d_P
Definition: sutra_roket.h:53
int loopcontroller
Definition: sutra_roket.h:39
CarmaObj< float > * d_bandwidth
Definition: sutra_roket.h:62
CarmaObj< float > * d_noise
Definition: sutra_roket.h:57
CarmaObj< float > * d_commanded
Definition: sutra_roket.h:74
CarmaObj< float > * d_filtmodes
Definition: sutra_roket.h:76
SutraRtc * rtc
Definition: sutra_roket.h:43
CarmaObj< float > * d_filtered
Definition: sutra_roket.h:60
SutraAtmos * atm
Definition: sutra_roket.h:47
CarmaContext * current_context
Definition: sutra_roket.h:31
CarmaObj< float > * d_nonlinear
Definition: sutra_roket.h:58
CarmaObj< float > * d_bkup_screen
Definition: sutra_roket.h:72
SutraDms * dms
Definition: sutra_roket.h:48
SutraTarget * target
Definition: sutra_roket.h:45
CarmaObj< float > * d_gRD
Definition: sutra_roket.h:79
CarmaObj< float > * d_bkup_com
Definition: sutra_roket.h:70
int save_loop_state()
CarmaObj< float > * d_err1
Definition: sutra_roket.h:67
CarmaObj< float > * d_tomo
Definition: sutra_roket.h:59
int geocontroller
Definition: sutra_roket.h:40
sutra_controller_ls * loopcontrol
Definition: sutra_roket.h:49
CarmaObj< float > * d_err2
Definition: sutra_roket.h:68
float gain
Definition: sutra_roket.h:33
CarmaObj< float > * d_Btt
Definition: sutra_roket.h:54
this class provides the rtc features to COMPASS
Definition: sutra_rtc.h:36
this class provides the sensors features to COMPASS
Definition: sutra_sensors.h:34
this class provides the target features to COMPASS
Definition: sutra_target.h:29
this class provides the telescope features to COMPASS
this class provides the controller_geo features to COMPASS
this class provides the controller_ls features to COMPASS
int separate_modes(float *modes, float *filtmodes, int nmodes, int nfilt, CarmaDevice *device)