COMPASS  5.0.0
End-to-end AO simulation tool using GPU acceleration
sutra_telescope.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-2019 COMPASS Team <https://github.com/ANR-COMPASS>
5 // All rights reserved.
6 // Distributed under GNU - LGPL
7 //
8 // COMPASS is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser
9 // General Public License as published by the Free Software Foundation, either version 3 of the License,
10 // or any later version.
11 //
12 // COMPASS: End-to-end AO simulation tool using GPU acceleration
13 // The COMPASS platform was designed to meet the need of high-performance for the simulation of AO systems.
14 //
15 // The final product includes a software package for simulating all the critical subcomponents of AO,
16 // particularly in the context of the ELT and a real-time core based on several control approaches,
17 // with performances consistent with its integration into an instrument. Taking advantage of the specific
18 // hardware architecture of the GPU, the COMPASS tool allows to achieve adequate execution speeds to
19 // conduct large simulation campaigns called to the ELT.
20 //
21 // The COMPASS platform can be used to carry a wide variety of simulations to both testspecific components
22 // of AO of the E-ELT (such as wavefront analysis device with a pyramid or elongated Laser star), and
23 // various systems configurations such as multi-conjugate AO.
24 //
25 // COMPASS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the
26 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 // See the GNU Lesser General Public License for more details.
28 //
29 // You should have received a copy of the GNU Lesser General Public License along with COMPASS.
30 // If not, see <https://www.gnu.org/licenses/lgpl-3.0.txt>.
31 // -----------------------------------------------------------------------------
32 
41 
42 #ifndef _SUTRA_TELESCOPE_H_
43 #define _SUTRA_TELESCOPE_H_
44 
45 #include <carma.h>
46 #include <sutra_phase.h>
47 #include <map>
48 #include <string>
49 #include <vector>
50 
51 using std::string;
52 
54  public:
56  int device; // device #
57 
58  long pup_size; // size of pupil
59  long num_eleme_pup; // number of points in the pupil
60 
61  CarmaObj<float> *d_pupil; // the pupil mask
62  CarmaObj<float> *d_phase_ab_M1; // the phase aberration for M1
63 
64  long pup_size_m; // size of pupil
65 
66  CarmaObj<float> *d_pupil_m; // the pupil mask
67  CarmaObj<float> *d_phase_ab_M1_m; // the phase aberration for M1
68 
69  public:
71  float *pupil, long pup_size_m, float *pupil_m);
73  int set_phase_ab_M1(float *phase_ab_M1, int size);
74  int set_phase_ab_M1_m(float *phase_ab_M1_m, int size);
75 };
76 
77 #endif // _SUTRA_TELESCOPE_H_
SutraTelescope::set_phase_ab_M1_m
int set_phase_ab_M1_m(float *phase_ab_M1_m, int size)
SutraTelescope::current_context
CarmaContext * current_context
Definition: sutra_telescope.h:55
SutraTelescope::SutraTelescope
SutraTelescope(CarmaContext *context, long pup_size, long num_eleme_pup, float *pupil, long pup_size_m, float *pupil_m)
SutraTelescope::d_pupil
CarmaObj< float > * d_pupil
Definition: sutra_telescope.h:61
SutraTelescope::d_phase_ab_M1
CarmaObj< float > * d_phase_ab_M1
Definition: sutra_telescope.h:62
SutraTelescope::device
int device
Definition: sutra_telescope.h:56
SutraTelescope::pup_size
long pup_size
Definition: sutra_telescope.h:58
SutraTelescope::pup_size_m
long pup_size_m
Definition: sutra_telescope.h:64
SutraTelescope::num_eleme_pup
long num_eleme_pup
Definition: sutra_telescope.h:59
SutraTelescope
this class provides the telescope features to COMPASS
Definition: sutra_telescope.h:53
CarmaObj< float >
CarmaContext
this class provides the context in which CarmaObj are created
Definition: carma_context.h:104
SutraTelescope::d_phase_ab_M1_m
CarmaObj< float > * d_phase_ab_M1_m
Definition: sutra_telescope.h:67
SutraTelescope::~SutraTelescope
~SutraTelescope()
SutraTelescope::set_phase_ab_M1
int set_phase_ab_M1(float *phase_ab_M1, int size)
sutra_phase.h
SutraTelescope::d_pupil_m
CarmaObj< float > * d_pupil_m
Definition: sutra_telescope.h:66