COMPASS  5.4.4
End-to-end AO simulation tool using GPU acceleration
sutra_wfs_sh.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_SH_H_
18 #define _SUTRA_WFS_SH_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_utils.h>
25 #include <sutra_wfs.h>
26 #include <map>
27 #include <vector>
28 
29 class SutraWfsSH : public SutraWfs {
30  public:
31  // sh only
35  CarmaObj<cuFloatComplex> *d_fsamplipup; // Field stop computation arrays
36  CarmaObj<cuFloatComplex> *d_fsamplifoc; // Field stop computation arrays
37  cufftHandle *fsampli_plan;
38 
39  public:
44  long npix, long nphase, long nrebin, long nfft, long ntot,
45  long npup, float pdiam, float nphotons, float nphot4imat,
46  int lgs, bool fakecam, int max_flux_per_pix, int max_pix_value,
47  bool is_low_order, bool roket, int device);
48  SutraWfsSH(const SutraWfsSH &wfs);
50 
51  int define_mpi_rank(int rank, int size);
52  int allocate_buffers(map<vector<int>, cufftHandle *> campli_plans,
53  map<vector<int>, cufftHandle *> fttotim_plans);
54 
55  int load_arrays(int *phasemap, int *hrmap, int *binmap, float *offsets,
56  float *fluxPerSub, int *validsubsx, int *validsubsy,
57  int *istart, int *jstart, float *ttprojmat,
58  cuFloatComplex *kernel);
59 
60  int fill_binimage(int async);
61  int comp_image(bool noise = true);
62  int comp_nphot(float ittime, float optthroughput, float diam, int nxsub,
63  float zerop = 0, float gsmag = 0, float lgsreturnperwatt = 0,
64  float laserpower = 0);
65  int set_bincube(float *bincube, int nElem);
66  int set_field_stop(map<vector<int>, cufftHandle *> campli_plans, float* field_stop, int N);
67 
68  private:
69  int comp_generic();
70 };
71 
72 #endif // _SUTRA_WFS_SH_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 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
bool is_low_order
Definition: sutra_wfs.h:56
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
this class provides the wfs_sh features to COMPASS
Definition: sutra_wfs_sh.h:29
int comp_image(bool noise=true)
int allocate_buffers(map< vector< int >, cufftHandle * > campli_plans, map< vector< int >, cufftHandle * > fttotim_plans)
cufftHandle * fsampli_plan
Definition: sutra_wfs_sh.h:37
int set_field_stop(map< vector< int >, cufftHandle * > campli_plans, float *field_stop, int N)
SutraWfsSH(const SutraWfsSH &wfs)
CarmaObj< int > * d_validpuppixy
Definition: sutra_wfs_sh.h:34
int fill_binimage(int async)
int define_mpi_rank(int rank, int size)
int set_bincube(float *bincube, int nElem)
CarmaObj< int > * d_validpuppixx
Definition: sutra_wfs_sh.h:33
int load_arrays(int *phasemap, int *hrmap, int *binmap, float *offsets, float *fluxPerSub, int *validsubsx, int *validsubsy, int *istart, int *jstart, float *ttprojmat, cuFloatComplex *kernel)
int comp_nphot(float ittime, float optthroughput, float diam, int nxsub, float zerop=0, float gsmag=0, float lgsreturnperwatt=0, float laserpower=0)
CarmaObj< cuFloatComplex > * d_fsamplipup
Definition: sutra_wfs_sh.h:35
CarmaObj< int > * d_binmap
Definition: sutra_wfs_sh.h:32
CarmaObj< cuFloatComplex > * d_fsamplifoc
Definition: sutra_wfs_sh.h:36
SutraWfsSH(CarmaContext *context, SutraTelescope *d_tel, CarmaObj< cuFloatComplex > *d_camplipup, CarmaObj< cuFloatComplex > *d_camplifoc, CarmaObj< cuFloatComplex > *d_fttotim, long nxsub, long nvalid, 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 is_low_order, bool roket, int device)