COMPASS
5.0.0
End-to-end AO simulation tool using GPU acceleration
sutra_phase.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_PHASE_H_
43
#define _SUTRA_PHASE_H_
44
45
// this is the generic class for a phase
46
// contains a yoga obj for the phase screen itself
47
// the screen size (assumed square)
48
// the following is only initialized on demand :
49
// an array of zernike coeffs on which the phase can be decomposed
50
// an array of zernike polynomials (carma_object)
51
// a matrix to decompose the phase on zernike coeffs
52
53
#include <carma.h>
54
#include <
carma_obj.h
>
55
56
class
SutraPhase
{
57
public
:
58
CarmaContext
*
current_context
;
59
int
device
;
60
61
CarmaObj<float>
*
d_screen
;
62
long
screen_size
;
63
float
*
zer_coeff
;
64
CarmaObj<float>
*
zernikes
;
65
CarmaObj<float>
*
mat
;
66
67
public
:
68
SutraPhase
(
CarmaContext
*
current_context
,
long
size);
69
SutraPhase
(
const
SutraPhase
&phase);
70
~SutraPhase
();
71
};
72
73
#endif // _SUTRA_PHASE_H_
SutraPhase::screen_size
long screen_size
Definition:
sutra_phase.h:62
SutraPhase::SutraPhase
SutraPhase(const SutraPhase &phase)
SutraPhase::~SutraPhase
~SutraPhase()
SutraPhase::zernikes
CarmaObj< float > * zernikes
Definition:
sutra_phase.h:64
SutraPhase::zer_coeff
float * zer_coeff
Definition:
sutra_phase.h:63
SutraPhase::device
int device
Definition:
sutra_phase.h:59
SutraPhase::mat
CarmaObj< float > * mat
Definition:
sutra_phase.h:65
SutraPhase::d_screen
CarmaObj< float > * d_screen
Definition:
sutra_phase.h:61
CarmaObj< float >
carma_obj.h
CarmaContext
this class provides the context in which CarmaObj are created
Definition:
carma_context.h:104
SutraPhase::current_context
CarmaContext * current_context
Definition:
sutra_phase.h:58
SutraPhase
this class provides the phase features to COMPASS
Definition:
sutra_phase.h:56
SutraPhase::SutraPhase
SutraPhase(CarmaContext *current_context, long size)
libsutra
include.h
sutra_phase.h
Generated by
1.8.18