COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
sutra_wfs_pyr_pyrhr.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_WFS_PYR_PYRHR_H_
18 #define _SUTRA_WFS_PYR_PYRHR_H_
19 
20 #include <sutra_lgs.h>
21 #include <sutra_phase.h>
22 #include <sutra_target.h>
23 #include <sutra_telemetry.h>
24 #include <sutra_telescope.h>
25 #include <sutra_wfs.h>
26 #include <map>
27 #include <vector>
28 
29 using std::string;
30 class SutraWfs_PyrHR : public SutraWfs {
31  public:
32  long npupils;
43 
44 
45  public:
50  long nvalid, long npupils, long npix, long nphase,
51  long nrebin, long nfft, long ntot, long npup, float pdiam,
52  float nphotons, float nphot4imat, int lgs, bool fakecam,
53  int max_flux_per_pix, int max_pix_value, bool roket,
54  int device);
59  long nvalid, long npupils, long npix, long nphase,
60  long nrebin, long nfft, long ntot, long npup, float pdiam,
61  float nphotons, float nphot4imat, int lgs, bool fakecam,
62  int max_flux_per_pix, int max_pix_value, bool roket,
63  int nbdevices, int *devices);
65 
66  int load_arrays(cuFloatComplex *halfxy, float *cx, float *cy, float *weights,
67  float *sincar, float *submask, int *validsubsx,
68  int *validsubsy, int *phasemap, float *fluxPerSub,
69  float *ttprojmat);
70  int set_submask(float *submask);
71  int set_phalfxy(cuFloatComplex *phalfxy);
72 
73  int fill_binimage(int async = 0);
74  int comp_image(bool noise = true);
75  void comp_modulation(int cpt);
76 
77  int copy_valid_pix(float *img, int *validx, int *validy, int im_dim);
78  int set_pyr_modulation_points(float *cx, float *cy, int npts);
79  int set_pyr_modulation_points(float *cx, float *cy, float *weights, int npts);
80  int set_pyr_mod_weights(float *weights, int npts);
81 
82  int define_mpi_rank(int rank, int size) { return EXIT_SUCCESS; }
83  int allocate_buffers(map<vector<int>, cufftHandle *> campli_plans,
84  map<vector<int>, cufftHandle *> fttotim_plans) {
85  return EXIT_SUCCESS;
86  }
87  int comp_nphot(float ittime, float optthroughput, float diam, float cobs,
88  float zerop, float gsmag);
89 
90  private:
91  int comp_generic();
92  std::vector<CarmaObj<cuFloatComplex> *> d_camplipup_ngpu;
93  std::vector<CarmaObj<cuFloatComplex> *> d_camplifoc_ngpu;
94  std::vector<CarmaObj<cuFloatComplex> *> d_phalfxy_ngpu;
95  std::vector<CarmaObj<cuFloatComplex> *> d_fttotim_ngpu;
96  std::vector<CarmaObj<float> *> d_pyrfocalplane_ngpu;
97  std::vector<CarmaObj<float> *> d_screen_ngpu;
98  std::vector<CarmaObj<float> *> d_hrimg_ngpu;
99  std::vector<CarmaObj<float> *> d_submask_ngpu;
100 };
101 
102 #endif // _SUTRA_WFS_PYR_PYRHR_H_
this class provides the context in which CarmaObj are created
Definition: carma_context.h:79
this class provides the telescope features to COMPASS
this class provides the wfs_pyr_pyrhr features to COMPASS
CarmaHostObj< float > * pyr_cy
CarmaObj< float > * d_psum
CarmaObj< cuFloatComplex > * d_phalfxy
int comp_image(bool noise=true)
int set_submask(float *submask)
SutraWfs_PyrHR(CarmaContext *context, SutraTelescope *d_tel, CarmaObj< cuFloatComplex > *d_camplipup, CarmaObj< cuFloatComplex > *d_camplifoc, CarmaObj< cuFloatComplex > *d_fttotim, long nxsub, long nvalid, long npupils, long npix, long nphase, long nrebin, long nfft, long ntot, long npup, float pdiam, float nphotons, float nphot4imat, int lgs, bool fakecam, int max_flux_per_pix, int max_pix_value, bool roket, int device)
void comp_modulation(int cpt)
int comp_nphot(float ittime, float optthroughput, float diam, float cobs, float zerop, float gsmag)
int set_pyr_modulation_points(float *cx, float *cy, int npts)
int allocate_buffers(map< vector< int >, cufftHandle * > campli_plans, map< vector< int >, cufftHandle * > fttotim_plans)
CarmaHostObj< float > * pyr_cx
int set_pyr_mod_weights(float *weights, int npts)
CarmaObj< float > * d_modu_gather
int define_mpi_rank(int rank, int size)
int copy_valid_pix(float *img, int *validx, int *validy, int im_dim)
int set_phalfxy(cuFloatComplex *phalfxy)
CarmaObj< float > * d_hrimg
int fill_binimage(int async=0)
CarmaObj< cuFloatComplex > * d_poffsets
CarmaHostObj< float > * pyr_mod_weights
CarmaObj< float > * d_pyrfocalplane
SutraWfs_PyrHR(CarmaContext *context, SutraTelescope *d_tel, CarmaObj< cuFloatComplex > *d_camplipup, CarmaObj< cuFloatComplex > *d_camplifoc, CarmaObj< cuFloatComplex > *d_fttotim, long nxsub, long nvalid, long npupils, long npix, long nphase, long nrebin, long nfft, long ntot, long npup, float pdiam, float nphotons, float nphot4imat, int lgs, bool fakecam, int max_flux_per_pix, int max_pix_value, bool roket, int nbdevices, int *devices)
int load_arrays(cuFloatComplex *halfxy, float *cx, float *cy, float *weights, float *sincar, float *submask, int *validsubsx, int *validsubsy, int *phasemap, float *fluxPerSub, float *ttprojmat)
int set_pyr_modulation_points(float *cx, float *cy, float *weights, int npts)
this class provides the wfs features to COMPASS
Definition: sutra_wfs.h:35
int max_pix_value
Definition: sutra_wfs.h:60
float nphot4imat
Definition: sutra_wfs.h:51
bool lgs
Definition: sutra_wfs.h:53
long nfft
Definition: sutra_wfs.h:43
bool roket
Definition: sutra_wfs.h:55
long npix
Definition: sutra_wfs.h:41
CarmaObj< cuFloatComplex > * d_fttotim
Definition: sutra_wfs.h:67
CarmaObj< cuFloatComplex > * d_camplifoc
Definition: sutra_wfs.h:66
int max_flux_per_pix
Definition: sutra_wfs.h:59
long nrebin
Definition: sutra_wfs.h:42
int rank
Definition: sutra_wfs.h:104
long nvalid
Definition: sutra_wfs.h:40
long ntot
Definition: sutra_wfs.h:44
long nphase
Definition: sutra_wfs.h:46
CarmaObj< cuFloatComplex > * d_camplipup
Definition: sutra_wfs.h:65
long nxsub
Definition: sutra_wfs.h:39
bool fakecam
Definition: sutra_wfs.h:58
float noise
Definition: sutra_wfs.h:52
int device
Definition: sutra_wfs.h:37
long npup
Definition: sutra_wfs.h:45