List of Routines
| AIC | ATA | ATM |
| AVE | BQC | BSP |
| CFB | COM | COR |
| DMC | DMI | GPR |
| IBC | IMA | IMG |
| IWS | LAS | MDS |
| NLS | PYR | REC |
| SCD | SLO | SRC |
| SSC | STF | SWS |
| TCE | TFL | TTM |
| WFA |
Routine Descriptions
AIC
[Next Routine] [List of Routines]NAME: aic ROUTINE'S PURPOSE: aic manages the simulation for the Achrom. Interf. Coronagraph (AIC) module, that is: 1-call the module's initialisation routine aic_init at the first iteration of the simulation project, 2-call the module's program routine aic_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: AIC simulates the Achromatic Interfero-Coronagraph. This is a first attempt. CATEGORY: main module's routine CALLING SEQUENCE: error = aic(inp_wfp_t, $ ; input structure out_img_t, $ ; output structure par, $ ; parameter structure INIT=init ) ; initialisation data structure OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_wfp_t: structure of type wfp_t. par : parameters structure. INCLUDED OUTPUTS: out_img_t: structure of type img_t. KEYWORD PARAMETERS: INIT: initialisation data structure. TIME: time-evolution structure. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: Among them: -No noises (photon noise, RON, dark current noise) and no background addition implemented for now. -No anisoplanatic difference is simulated between the main star and the companion (exactly the same wavefront in entrance of the coronagraph). CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: september 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>Christophe Verinaud (ESO<EMAIL_ADDRESS>modifications : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>Christophe Verinaud (ESO<EMAIL_ADDRESS>modifications : for version 5.0, Marcel Carbillet (LUAN<EMAIL_ADDRESS>-stupid one-value-vector IDL6+ bug corrected (in aic_prog: n_phot->n_phot[0]). : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See aic/aic.pro)
ATA
[Previous Routine] [Next Routine] [List of Routines]NAME: ata ROUTINE'S PURPOSE: ATA manages the simulation for the ATmosphereAdding (ATA) module, that is: 1-call the module's initialisation routine ata_init at the first iteration of the simulation project 2-call the module's program routine ata_prog otherwise. MODULE'S PURPOSE: ATA receives two "atmospheres" as inputs and returns their sum/difference according to weights supplied by user. This module has been developed to check performance of the software with MCAO. CATEGORY: main module's routine CALLING SEQUENCE: err = ata(inp_atm_t1, inp_atm_t2, out_atm_t, par) OUTPUT: error :long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_atm_t1:incident atmosphere. (Bottom input in Application builder) inp_stm_t2:incident atmosphere. (Top input in Application builder) par :parameters structure from ata_gui. In addition to the usual tags associated with the overall management of the program, it contains the following tags: par.wb: assigned weight (+1 or -1) to first input (in AppBuilder, bottom box!!) par.wt: assigned weight (+1 or -1) to second input (in AppBuilder, top box!!) INCLUDED OUTPUTS: out_atm_t :output atmosphere with intensity arbitrarily normalized to 1. KEYWORD PARAMETERS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: None. RESTRICTIONS: This module does not consider the effect on the intensity as it is not intended to simulate interferometry. It's been developed only to allow easy and fast visualization of MCAO when closing the loop. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: program written: March 2001, B. Femenia (OAA<EMAIL_ADDRESS>modifications : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole Software System CAOS. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : B. Femenia (OAA<EMAIL_ADDRESS>modifications : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole Software System CAOS. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See ata/ata.pro)
ATM
[Previous Routine] [Next Routine] [List of Routines]NAME: atm ROUTINE'S PURPOSE: atm manages the simulation for the ATMosphere building (ATM) module, that is: 1-call the module's initialisation routine atm_init at the first iteration of the simulation project 2-call the module's program routine atm_prog otherwise. MODULE'S PURPOSE: ATM generates the turbulent atmosphere. To do so a modelisation of the Cn2 profile is considered. In fact, up to six discrete layers, each affected by a different Cn2 value are simulated. They are also affected by a velocity vector if temporal evolution is required. If temporal evolution is considered, the time-base defined inside ATM will rule all the subsequent simulation branches. Each turbulent layer is a phase screen that can be either generated by the module or read from a file where already computed phase screens were saved. In that case, the utility PSG (that can be found in .../pack_lib/) had been previously used for this purpose, and the phase screens can be either squares or stripes. An ad-hoc help of the utility PSG can be found in the header of the program "psg.pro". Note that in this case the physical length of the wavefronts is still a free parameter that can be chosen (as well as the Fried parameter r0). A number of non-editable fields are present in the ATM GUI which purpose is to help the user in defining the right parameters for her/his simulation, or simply to know what are the parameters that define the wavefronts used in case the use-already-computed-phase-screens feature is selected. These non-editable fields have a title between parenthesis - i.e. like "(title)" and not "title". phase screen generation: ------------------------ The two methods used for it are explained here after: +-----------------------------------------------------------------+ | (1) Fast Fourier transform (FFT) [+ sub-harmonics adding (SHA)] | +-----------------------------------------------------------------+ In this case the phase screen generation is computed assuming either a von Karman modulus or a Kolmogorov one via FFT, with compensation for the low-frequencies (if required) by means of SHA [Lane et al., 1992]. Note that the von Karman model differs from the Kolmogorov one because an wavefront outer scale of turbulence L0 van be selected. Note also that the low-frequencies compensation to be performed in this routine can be tested before via the routine 'sha_test' (this can be automatically done within the ATM GUI by simply pushing the button "PUSH HERE to test subharmonics accuracy"). The generated FFT phase screens are initially complex arrays, and we use both the real and imaginary parts of each of them as two independent phase screens [Negrete-Regagnon, 1995]. We then have to normalize each of the parts by a factor sqrt(2), for energy reasons. If temporal evolution is required, each phase screen is shifted from an iteration to the next one by the amount of pixels calculated both from the velocity vectors associated to the turbulent layer and from the selected time-base. If the number resulting shifting pixels is not an integer, the shift is done by interpolating the phase screens. (A simulation is then faster - and does not suffer from any possible interpolation innacurracy - if both the velocity vectors and the time-base are judiciously chosen.) +-----------------------------------------------------------------+ | (2) Zernike polynomials (ZP) method: [+ recursive formula (RF)] | +-----------------------------------------------------------------+ In this case the phase screen generation is performed assuming only a Kolmogorov modulus, and the dimensions of the phase screens are the pupil's ones. These wave screens are changed into phase screens (by multiplying them by a factor 2*!pi). Then they have to be scaled for the given value of the ratio between the telescope diameter 'D' and the Fried parameter 'r0' before to be used, by multiplying them by the factor (D/r0)^(5/6). References: Lane R. G., Glindeman A. and Dainty J. C., 'Simulation of a Kolmogorov Phase Screen', Waves in Random Media 2, 209--224, 1992. Negrete-Regagnon P., 'Bispectral Imaging in Astronomy', PhD thesis, Imperial College, UK, 1995. Modification history of the phase screen generation part: Written by Marcel Carbillet, OAA, 1998, but: * FFT routine: - originally written by Enrico Marchetti, ESO, 1997. - modified by Marcel Carbillet, OAA, 1997. * SHA routine: written by Marcel Carbillet, Simone Esposito and Armando Riccardi, OAA, 1998. * Zernike routines: written by Armando Riccardi, OAA, 1997. CATEGORY: main module's routine CALLING SEQUENCE: error = atm(out_atm_t, par, INIT=init) OUTPUT: error: long scalar (error code). see !caos_error var in caos_init.pro. INPUTS: none. INCLUDED OUTPUTS: out_atm_t: the output structure of ATM, of type "atm_t", containing: -screen : 3-variables array of the ensemble of layers' wavefronts of the turbulent atmosphere [m] -scale : spatial scale [m/px] -delta_t: base-time [s] -alt : vector of altitudes of the layers [m] -dir : vector of direction of the wind [rd]. KEYWORD PARAMETERS: INIT: initialisation data structure COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: -For now, temporal evolution is possible ONLY with FFT phase screens, NOT Zernike ones. -No more than 6 turbulent layers are allowed (but this is only a limitation of the GUI -- easy to override!). -If temporal evolution is selected, and if phase stripes (i.e. not square phase screens) are considered, the wind directions MUST BE along the x- or the y-axis. -Pay attention that the possible following GPR module will, a priori, place the collecting telescope in the middle of the phase screens. That means that if, for example, you have an 8m telescope in the middle of a 14m-large phase screen, you will only (14-8)/2=3m available on the left side, and the same at the right side of your telescope pupil, for time evolution of your phase screens wrt wind velocities, base time, etc., before having a complete cycle on your phase screens. This is not a serious problem for pure FFT screens, but the fact that the same portion of phase screen will pass again over the telescope pupil. If subharmonics are considered this can become, on the other hand, a big problem if this limit is overcome, since the last values of the border of the atmospheric layers will be repeated ad libitum. CALLED NON-IDL FUNCTIONS from .../modules/atm/atm_lib: atm_psg : sub-routine for phase screen generation. atm_psg_fft: FFT phase screen generation sub-routine. atm_psg_sha: sub-harmonics adding sub-routine. atm_psg_zer: Zernike phase screen generation sub-routine. from .../lib: shiffft : FFT-based phase screen shift sub-routine. ROUTINE MODIFICATION HISTORY: program written: july 1998, Marcel Carbillet (OAA<EMAIL_ADDRESS>, Simone Esposito (OAA<EMAIL_ADDRESS>Armando Riccardi (OAA<EMAIL_ADDRESS>modifications : february 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-standardization for version 1.0, -phase screens [rd] => wavefronts [m], -a few other modifications for version 1.0. : march 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-phase screens/stripes can be read from a file instead of being generated (the "use already computed phase screens" feature). -some controls of parameters consistency and more fields of help-for-decision added. : november 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to version 2.0 (CAOS). : january/february 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole system CAOS. -help completed (FFT+SHA vs. limited dimension stuff). : march 2016, Ulysse Perruchon-Monge & Adama Sy (Dépt. Physique UNS), Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-turbulence can now be switched off (by using par.turnatmos).
(See atm/atm.pro)
AVE
[Previous Routine] [Next Routine] [List of Routines]NAME: ave ROUTINE'S PURPOSE: AVE manages the simulation for the signals AVEraging (AVE) module, that is: 1-call the module's initialisation routine ave_init at the first iteration of the simulation project 2-call the module's program routine ave_prog otherwise. MODULE'S PURPOSE: AVE receives two vectors of measures (signals) as inputs and returns their averaging. CATEGORY: main module's routine CALLING SEQUENCE: err = ave(inp_mes_t, out_mes_t, par) OUTPUT: error:long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_mes_t:incoming measures (signals) vector. (Bottom input in Application builder) par :parameters structure from ave_gui. In addition to the usual tags associated with the overall management of the program, it contains the following tags: par.nstars: nb of stars from which signals are averaged. INCLUDED OUTPUTS: out_mes_t :output vector of measures (signals). KEYWORD PARAMETERS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: None. RESTRICTIONS: CALLED NON-IDL FUNCTIONS: none. MODIFICATION HISTORY: program written: april 2008, Marcel Carbillet (Fizeau<EMAIL_ADDRESS>modifications : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See ave/ave.pro)
BQC
[Previous Routine] [Next Routine] [List of Routines]NAME: bqc PURPOSE: BQC executes the simulation for the Barycenter/Quad-dell Centroid (BQC) module. Based on the choice of detector selected in this module's GUI, namely a Quad-cell or a CCD, BQC will apply the Quad-cell calculus or the barycenter calculus on the image formed over the chosen detector to estimate the overall wavefront tip-tilt/loacal tilt on each subaperture. Then BQC outputs a out_mes_t structure where the estimated overall/local tip-tilt angles are passed to whatever module is next in the simulation. CATEGORY: Module CALLING SEQUENCE: error = bqc(inp_mim_t, $ ; mim_t input structure out_mes_t, $ ; mes_t ouptut structure par , $ ; parameters structure INIT=init ) ; initialisation data structure OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_mim_t: structure of type mim_t. Structure containing the SWS IMAGE, info on CCD used (#pixels, pixel size, covered field, ...) par : parameters structure from bqc_gui. INCLUDED OUTPUTS: out_mes_t: structure of type mes_t containing the vector of the sensor measurement (here, the x-slopes followed by the y-slopes) as well as some info needed by the reconstructor.. KEYWORD PARAMETERS: INIT : named variable undefined or containing a scalar when BQC is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of BQC, the keyword INIT has to be set to the structure returned by the first call. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : int scalar. Total number of iteration during the simulation run. this_iter : int scalar. Number of the current iteration. It is defined only while status eq !caos_status.run. (this_iter >= 1). SIDE EFFECTS: None. RESTRICTIONS: None. CALLED NON-IDL FUNCTIONS: None. EXAMPLE: write here an example! ROUTINE MODIFICATION HISTORY: program written: Dec 2003, B. Femenia (GTC<EMAIL_ADDRESS>modifications : december 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for compatibility with version 4.0+ of the whole system CAOS. MODULE MODIFICATION HISTORY: module written : Dec 2003, B. Femenia (GTC<EMAIL_ADDRESS>modifications : december 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-for version 4.0+ of CAOS structure. no more use of the common variable "calibration" and the tag "calib" (structure "info") from version 4.0 of the whole system CAOS. December 2003, Bruno Femenia (GTC<EMAIL_ADDRESS>-this module does not require INIT structure. September 2004, Bruno Femenia (GTC<EMAIL_ADDRESS>-this module does require INIT structure. September 2004, Bruno Femenia (GTC<EMAIL_ADDRESS>-adapted to version 5.0 of the Software Package CAOS. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See bqc/bqc.pro)
BSP
[Previous Routine] [Next Routine] [List of Routines]NAME: bsp ROUTINE'S PURPOSE: BSP manages the simulation for the Beam SPlitter (BSP) module, that is: 1-call the module's initialisation routine bsp_init at the first iteration of the simulation project 2-call the module's program routine bsp_prog otherwise. MODULE'S PURPOSE: BSP executes the simulation for the Beam SPlitter (BSP) module. This module receives a wavefront and splits it into two wavefronts with the same wavefront perturbation and such that the sum of their intensities is equal to the intensity of the incident wavefront. CATEGORY: main module's routine CALLING SEQUENCE: err = bsp(inp_wfp_t, out_wfp_t1, out_wfp_t2, par) OUTPUT: error :long scalar (error code, see !caos_error var in caos_init). INPUTS: inp_wfp_t :incident wavefront of intensity I. par :parameters structure from bsp_gui. In addition to the usual tags associated with the overall management of the program, it contains the following tag: par.frac: Fraction of total intensity sent to first output wavefront (in AppBuilder, bottom box!!) INCLUDED OUTPUTS: out_wfp_t1:output wavefront identical to inp_wfp_t except in intensity which is now I1, such that I1+I2= I. out_wfp_t2:output wavefront identical to inp_wfp_t except in intensity which is now I2, such that I1+I2= I. KEYWORD PARAMETERS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: None. RESTRICTIONS: No chromatic behaviour: it splits the same way all wavelengths travelling along the simulation with the wavefront. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: program written: March 1999, B. Femenia (OAA<EMAIL_ADDRESS>modifications : Nov 1999, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. MODULE MODIFICATION HISTORY: module written : B. Femenia (OAA<EMAIL_ADDRESS>modifications : for version 2.0, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See bsp/bsp.pro)
CFB
[Previous Routine] [Next Routine] [List of Routines]NAME: cfb ROUTINE'S PURPOSE: CFB manages the simulation for the Calibration FiBer (CFB) module, that is: 1-call the module's initialisation routine cfb_init at the first iteration of the project 2-call the module's program routine cfb_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: This module simulates the PLANE wavefront coming from a calibration fiber together with the calibration source map (i.e. calibration fiber is an extended object!!) to be used in special calibration projects for modules needing such calibration. Unlike the MCA **special** module (see doc header in mca.pro), the use of such module is not restricted to those special projects. In fact, the user might also decide to calibrate TCE or REC by feeding their **SPECIAL** calibration projects with "real" atmospheric corrupted wavefronts obtained with the typical combination of SRC+ATM+GPR modules which can be helpful in some particular situations. In summary, CBF produces a "PLANE" wavefront coming from an extended source (with a Gaussian irradiance pattern) which is optically located at infinity. CATEGORY: main module's routine CALLING SEQUENCE: error = cfb(out_wfp_t, $ ; output structure par $ ; parameter structure ) OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: None INCLUDED OUTPUTS: out_wfp_t: structure of type wfp_t containing the map describing the fiber distribution of light together with a flat wavefront. KEYWORD PARAMETERS: INIT : initialisation data structure. COMMON BLOCKS: common caos_ao_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: At this point only Gaussian irradiance patterns are considered. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: program written: Nov 1999, B. Femenia (OAA<EMAIL_ADDRESS>modifications : May 2000, B. Femenia (OAA<EMAIL_ADDRESS>-updating documentation in header. : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. MODULE MODIFICATION HISTORY: module written : B. Femenia (OAA<EMAIL_ADDRESS>modifications : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See cfb/cfb.pro)
COM
[Previous Routine] [Next Routine] [List of Routines]NAME: com ROUTINE'S PURPOSE: com manages the simulation for the COMbine measurements (COM) module, that is: 1-call the module's initialisation routine com_init at the first iteration of the simulation (or calibration) project, 2-call the module's program routine com_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: CATEGORY: main module's routine CALLING SEQUENCE: error = com(inp_mes_t1, $ ; 1st input structure inp_mes_t2, $ ; 2nd input structure out_mes_t, $ ; output structure par ) ; parameter structure OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_mes_t1: structure of type mes_t. inp_mes_t2: structure of type mes_t. par : parameters structure. INCLUDED OUTPUTS: out_mes_t: structure of type mes_t. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: february-march 2001, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : march 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to new CAOS system (4.0) and building of Software Package MAOS 1.0. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See com/com.pro)
COR
[Previous Routine] [Next Routine] [List of Routines]NAME: cor ROUTINE'S PURPOSE: cor manages the simulation for the CORonagraph (COR) module, that is: 1-call the module's initialisation routine cor_init at the first iteration of the simulation project, 2-call the module's program routine cor_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: COR simulates different types of coronagraphs, namely the Roddier & Roddier, the Lyot, and the 4 Quadrant Phase Mask. This is a first attempt. CATEGORY: main module's routine CALLING SEQUENCE: error = cor(inp_wfp_t, $ ; input structure out_img_t, $ ; output structure par, $ ; parameter structure INIT=init ) ; initialisation data structure OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_wfp_t: structure of type wfp_t. par : parameters structure. INCLUDED OUTPUTS: out_img_t: structure of type img_t. KEYWORD PARAMETERS: INIT: initialisation data structure. TIME: time-evolution structure. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: Among them: -No noises (photon noise, RON, dark current noise) and no background addition implemented for now. -No anisoplanatic difference is simulated between the main star and the companion (exactly the same wavefront in entrance of the coronagraph). CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: september 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>Olivier Lardiere (OAA<EMAIL_ADDRESS>modifications : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>Olivier Lardiere (OAA<EMAIL_ADDRESS>modifications : for version 5.0, Marcel Carbillet (LUAN<EMAIL_ADDRESS>-stupid one-value-vector IDL6+ bug corrected (in cor_prog: n_phot->n_phot[0]). : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See cor/cor.pro)
DMC
[Previous Routine] [Next Routine] [List of Routines]NAME: dmc ROUTINE'S PURPOSE: dmc manages the simulation for the Deformable Mirror Conjugated (DMC) module, that is: 1-call the module's initialisation routine dmc_init at the first iteration of the simulation project, 2-call the module's program routine dmc_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: This module takes commands from one input and an incident wavefront from another input, computes the correcting mirror shape (corresponding to the commands: first output) AND the corrected wavefront (incident wavefront + correcting mirror shape: second output) -- in terms of atmosphere layer, including so a conjugation altitude. The inputs are then a COM_T structure and a ATM_T structure. If the COM_T structure is undefined (first loop) both the outputs corresponds to a flat mirror. The outputs are two ATM_T structures, containing the correcting mirror shape in one hand (1st output), and the corrected wavefront to be analyzed by a wavefront sensor in the other hand. During the simulation the DMC module uses the commands coming from the reconstructor, computes the corresponding mirror shape, subtract it from the incident wavefront and outputs the correcting mirror shape as well as the corrected wavefront. CATEGORY: main module's routine CALLING SEQUENCE: error = dmc(inp_atm_t, $ ; input atmosphere to be corrected inp_com_t, $ ; input commands for the correction out_atm_c, $ ; output correcting mirror shape ; (computed from the commands) out_atm_t, $ ; output corrected atmosphere ; (i.e. inp_atm_t + out_atm_c) par, $ ; parameters structure INIT=init, $ ; initialisation data structure TIME=time ) ; time integration/delay management structure INPUTS: inp_atm_t: structure of type atm_t. This is the incident wavefront on the mirror. inp_com_t: structure of type com_t. These are the commands sent to the mirror. INCLUDED OUTPUTS: out_atm_c: structure of type atm_t. This is the atmosphere corresponding to the input commands. (the so-called correcting mirror shape) out_atm_t: structure of type atm_t. This is the reflected-corrected atmosphere. KEYWORD PARAMETERS: INIT: initialisation data structure. TIME: time managing structure OUTPUT: error: error code [long scalar]. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: ... ROUTINE MODIFICATION HISTORY: routine written: february 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>MODULE MODIFICATION HISTORY: module written : february/march 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : may 2014, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>debugging of DMI about delay reproduced here below. (january 2005, Christophe Verinaud) (error in the shift of time.old_comm - was ok for a delay of 1 time unit but wrong if delay>1.) : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See dmc/dmc.pro)
DMI
[Previous Routine] [Next Routine] [List of Routines]NAME: dmi ROUTINE'S PURPOSE: dmi manages the simulation for the Deformable MIrror (DMI) module, that is: 1-call the module's initialisation routine dmi_init at the first iteration of the simulation (or calibration) project, 2-call the module's program routine dmi_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: This module takes commands from one input and an incident wavefront from another input, computes the correcting mirror shape (corresponding to the commands: first output) AND the corrected wavefront (incident wavefront + correcting mirror shape: second output). The inputs are then a COM_T structure and a WFP_T structure. If the COM_T structure is undefined (first loop) both the outputs correspond to a flat mirror. The outputs are two WFP_T structures, containing the correcting mirror shape in one hand (1st output), and the corrected wavefront to be analyzed by a wavefront sensor in the other hand. During a "normal running" simulation (the interaction matrix is already computed) the DMI module uses the commands coming from the reconstructor computes the corresponding mirror shape, subtract it from the incident wavefront and outputs the correcting mirror shape as well as the corrected wavefront. The piston mode is always subtracted from the mirror shape. CATEGORY: main module's routine CALLING SEQUENCE: error = dmi(inp_wfp_t, $ ; input wavefront to be corrected inp_com_t, $ ; input commands for the correction out_wfp_c, $ ; output correcting mirror shape ; (computed from the commands) out_wfp_t, $ ; output corrected wavefront ; (i.e. inp_wfp_t + out_wfp_c) par, $ ; parameters structure INIT=init, $ ; initialisation data structure TIME=time ) ; time integration/delay management structure INPUTS: inp_wfp_t: structure of type wfp_t. This is the incident wavefront on the mirror. inp_com_t: structure of type com_t. These are the commands sent to the mirror. INCLUDED OUTPUTS: out_wfp_c: structure of type wfp_t. This is the wavefront corresponding to the input commands. (the so-called correcting mirror shape) out_wfp_t: structure of type wfp_t. This is the reflected-corrected wavefront. KEYWORD PARAMETERS: INIT: initialisation data structure. TIME: time managing structure OUTPUT: error: error code [long scalar]. COMMON BLOCKS: common caos_block, tot_iter, this_iter, calibration, signature tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. calibration: is it a calibration project ? (yes=1B, no=0B) SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: ... ROUTINE MODIFICATION HISTORY: routine written: december 1998, Francoise Delplancke (ESO<EMAIL_ADDRESS>modifications : december 1999--january 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to version 2.0 (CAOS). -help updated. : january 2005, Christophe Verinaud (ESO<EMAIL_ADDRESS>-delay debugged !! (error in the shift of time.old_comm - was ok for a delay of 1 time unit but wrong if delay>1). : january 2006, Marcel Carbillet (LUAN<EMAIL_ADDRESS>-help corrected (was related to a very old version of DMI). MODULE MODIFICATION HISTORY: module written : december 1998, Francoise Delplancke (ESO<EMAIL_ADDRESS>modifications : december 1999--may 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>-largely modified in order to fit with version 2.0 (CAOS) [the output out_mir_t is eliminated thanks to the off-line calibration new feature, and the correcting wavefront is added as an output (out_wfp_c) in order to do not artificially duplicate the DMI module when several sources are present]. : january-march 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-!caos_error.dmi.* variables eliminated for compliance with the CAOS Software System, version 4.0. -no more use of any common variable except tot_iter and this_iter. : january 2005, Christophe Verinaud (ESO<EMAIL_ADDRESS>-delay debugged !! (error in the shift of time.old_comm - was ok for a delay of 1 time unit but wrong if delay>1). : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See dmi/dmi.pro)
GPR
[Previous Routine] [Next Routine] [List of Routines]NAME: gpr ROUTINE'S PURPOSE: gpr manages the simulation for the Geometrical PRopagation (GPR) module, that is: 1-call the module's initialisation routine gpr_init at the first iteration of the simulation project, 2-call the module's program routine gpr_prog otherwise. MODULE'S PURPOSE: GPR executes the geometrical propagation between either a source at infinity (astronomical object) with a given set of angular coordinates or a source at a finite distance (laser guide star), with a given set of angular and spatial coordinates, and a telescope with a given set of spatial coordinates. CATEGORY: main module's routine CALLING SEQUENCE: error = gpr(inp_src_t, $ inp_atm_t, $ out_wfp_t, $ par, $ INIT=init ) OUTPUTS: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_src_t: the source characteristics inp_atm_t: the atmosphere characteristics INPUT PARAMETERS: par: the user defined input parameters for the GPR INCLUDED OUTPUTS: out_wfp_t: Structure containing the phase screen, the telescope parameters (coordinates, diameter, obscuration) and source parameters. Source coordinates are needed in all cases as photometry/spectrometry or wavelength. Focalisation distance is used in the LGS cases. Map and its scale are needed in the extended source source cases. KEYWORD PARAMETERS: INIT : initialisation data structure. COMMON BLOCKS: none. SIDE EFFECTS: none. RESTRICTIONS: The method consist to add rescaled phase screen calculated by FFT or by Zernike generation. In the UPWARD propagation case, the distance between each turbulent layer (b) is smaller than the distance between the last turbulent layer and the sodium layer (a). So it can be considered as Fresnel propagation (Only after the LAS module). But in the DOWNWARD propagation case, the distance between each turbulent layer (b) is equivalent to the distance between the lowest turbulent layer and the telescope (c). We are only in the Fraunhoffer propagation case (after the SRC and NLS modules). ~~~~~~~~~~~~~~~~~~~~~~~~ sodium layer 90km or infinite ^ distance in the natural | guide star case | | | | (a) | | v *********************** differents turbulent layers | (b) &&&&&&&&&&&&&&&&&&&&&&& between 10 and 30km ####################### | (c) |__________| telescope 0km ROUTINE MODIFICATION HISTORY: routine written: october 1998, Marcel Carbillet (OAA<EMAIL_ADDRESS>Elise Viard (ESO<EMAIL_ADDRESS>modifications : january 1999, Elise Viard (ESO<EMAIL_ADDRESS>-modifications made... : february 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-a few modifications for version 1.0. : march 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-phase stripes (rectangular screens) is now managed. : december 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to version 2.0 (CAOS). : december 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>-the init section is now done during the run section as well in order to easily consider non-constant (wrt time) sources. : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>Elise Viard (ESO<EMAIL_ADDRESS>modifications : for version 1.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>Elise Viard (ESO<EMAIL_ADDRESS>-enhanced and adapted to. : for version 1.0.2, Marcel Carbillet (OAA<EMAIL_ADDRESS>-enhanced and debugged. : for version 2.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-enhanced and adapted to version 2.0 (CAOS). : for version 3.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-the init section is now done during the run section as well in order to easily consider non-constant (wrt time) sources. -the case where the LGS is lower than a turbulent layer is now implemented. : for version 3.1, Marcel Carbillet (OAA<EMAIL_ADDRESS>-MCAO case now treated. : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System.
(See gpr/gpr.pro)
IBC
[Previous Routine] [Next Routine] [List of Routines]NAME: ibc ROUTINE'S PURPOSE: ibc executes the simulation for the Interferometric Beam Combiner (IBC) module. MODULE'S PURPOSE: IBC simulates an Interferometric Beam Combiner. CATEGORY: main module's routine CALLING SEQUENCE: error = ibc(in1_wfp_t, $ in2_wfp_t, $ out_wfp_t, $ par, $ INIT=init ) OUTPUT: error: error code [long scalar] (see !caos_error in caos_init.pro). INPUTS: in1_wfp_t: structure of type wfp_t. in2_wfp_t: structure of type wfp_t. par : parameters structure from ibc_gui. INCLUDED OUTPUTS: out_wfp_t: structure of type wfp_t. KEYWORD PARAMETERS: ... COMMON BLOCKS: ... SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: april-october 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>Serge Correia (OAA<EMAIL_ADDRESS>modifications : december 1999--february 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to version 2.0 (CAOS). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>Serge Correia (OAA<EMAIL_ADDRESS>modifications : for version 2.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to version 2.0 (CAOS). : for version 3.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-partial diff. piston correction now taken into account. : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 5.1, Marcel Carbillet (LUAN<EMAIL_ADDRESS>Olivier Lardiere (LISE<EMAIL_ADDRESS>-densification feature added (for modelling the "densified pupil" case). : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See ibc/ibc.pro)
IMA
[Previous Routine] [Next Routine] [List of Routines]NAME: ima ROUTINE'S PURPOSE: IMA manages the simulation for the IMage Adding (IMA) module, that is: 1-call the module's initialisation routine ima_init at the first iteration of the simulation project 2-call the module's program routine ima_prog otherwise. MODULE'S PURPOSE: IMA receives two wavefronts as inputs and returns their sum/difference according to weights supplied by user. This module has been developed to check performance of the software and does not care about intensities. Accordingly, the output is assigned the same values of n_phot and background (see doc on gpr for info on these tags) of the first input, unless IMA is used as a "duplicator" of correction in which case it detects which input is the correction and which one is the wf to be corrected. CATEGORY: main module's routine CALLING SEQUENCE: err = ima(inp_img_t1, inp_img_t2, out_img_t, par) OUTPUT: error:long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_img_t1:incoming image. (Bottom input in Application builder) inp_img_t2:incoming image. (Top input in Application builder) par :parameters structure from ima_gui. In addition to the usual tags associated with the overall management of the program, it contains the following tags: par.wb: assigned weight (+1 or -1) to first input (in AppBuilder, bottom box!!) par.wt: assigned weight (+1 or -1) to second input (in AppBuilder, top box!!) INCLUDED OUTPUTS: out_img_t :output wavefront with intensity arbitrarily normalized to 1. KEYWORD PARAMETERS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: None. RESTRICTIONS: CALLED NON-IDL FUNCTIONS: none. MODIFICATION HISTORY: program written: september 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See ima/ima.pro)
IMG
[Previous Routine] [Next Routine] [List of Routines]NAME: img ROUTINE'S PURPOSE: img manages the simulation for the IMaGe (IMG) module, that is: 1-calls the module's initialisation routine img_init at the first iteration of the simulation project 2-calls the module's program routine img_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: IMG executes the simulation of the image formation process on a image sensor, be it a standard CCD or a Quad-cell usually employed for Tip-Tilt sensing. Thus, IMG is basically a copy of the TTS module with some features extracted from the PSF module, both existing in v 1.0 (LAOS) of this software. For the sake of clarity the purpose of the PSF and TTS modules are reproduced here: TTS MODULE ---------- Usually a Tip Tilt Sensor system assumes a detector with a square array of pixels and placed at the focal plane of a collecting lens. This lens receives a collimated beam which previously has gone through a turbulent atmosphere and a telescope (this being simulated with the GPR module). The presence of an overall Tip-Tilt manifests itself as a displacement of the observed intensity diffraction pattern with respect to the case where no Tip-Tilt is present (in this case the image appears to be centred at the optical axis of the system). A measurement of the position of the image (carried out by TCE module) is strongly related to the overall Tip-Tilt across the telescope pupil. The purpose of the TTS module is to simulate the process of imaging through a focusing lens on an intensity detector. Such simulation is carried out in the framework of Fraunhofer diffraction theory involving an FFT operation. The algorithm also takes into account the change of resolution involved when binning the intensity pattern with a resolution imposed by pixelization of Input wavefront to the resolution imposed by pixel size of detector as chosen by user. Such a binning process is performed with rebin_ccd and involves no interpolation unlike standard IDL routine CONGRID. The output is Shack-Hartman intensity type structure containing the intensity on the detector and information on the geometry of the detector and method. Concerning the detector characteristics the user provides, via the Graphic User Interface (GUI), the number of pixels on intensity detector, their angular size when placed on focal plane of focusing lens, the possible delay time required by detector as well as the integration time when a measurement is performed (both times in units of atmosphere evolution time) and the wavelength at which TTS operates. The user must also provide which kind of detector is used (Quad-cell detector or CCD) and has the choice of performing simulation with or without effects of photon noise (understood as Poisson noise and independent between different pixels), dark-current noise (also modeled as a Poisson noise) and read-out noise (as a truncated Gaussian process). In case a Quad-cell detector is used, the user must specify via the GUI the Gaussian optical fiber to be used in the calibration to be carried out by TCE. PSF MODULE ---------- psf computes the PSF of the system or the image of the object through it. This program manages the initialization and calibration steps as well as the time behaviour, and then calls the appropriate programs (psf_init and psf_prog). CATEGORY: main module's routine CALLING SEQUENCE: error = img(inp_wfp_t, out_img_t1, out_img_t2, par, INIT=init, TIME= time) OUTPUT: error: long scalar (error code). see !caos_error var in caos_init.pro. INPUTS: inp_wfp_t: structure of type wfp_t.tructure containing the wavefront to be analysed and several other needed information (pupil, optical path perturbations, ...) par : parameters structure from img_gui. In addition to the tags associated to the management of program, the tags containing the parameters for the scientific calculations are: par.time_integ: No. of iterations to integrate par.time_delay: No. of iterations to delay par.foc_dist : Distance at which IMG focalises [m] par.npixel : Nb. detector pixels along x- & y-axes par.pxsize : Detector pixel size [arcsec] par.qeff : Quantum efficiency par.lambda : Mean working wavelength [m] par.width : Bandwidth [m] par.noise : 0/1=no/yes for Photon, read-out, dark current noises. par.read_noise: rms for Read-out noise. [e- rms] par.dark_noise: mean for Dark current noise [e-/s] par.backgradd : 0/1=no/yes for sky background adding par.increase : Factor by which dimensions of arrays are enlarged to increase sampling of PSF INCLUDED OUTPUTS: out_img_t2: structure of type img_t. Structure containing the IMAGE on dedicated sensor plus info on CCD used (#pixels, pixel size, covered field, ...) out_img_t1: IDEM, but the image it stores is the PSF. KEYWORD PARAMETERS: INIT: named variable undefined or containing a scalar when IMG is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of IMG, the keyword INIT has to be set to the structure returned by the first call. TIME: time-evolution structure. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : int scalar. Total number of iteration during the simulation run. this_iter : int scalar. Number of the current iteration. It is defined only while status eq !caos_status.run. (this_iter >= 1). SIDE EFFECTS: None. RESTRICTIONS: None. CALLED NON-IDL FUNCTIONS: None. EXAMPLE: Write here an example! ROUTINE MODIFICATION HISTORY: program written: Oct 1998, (TTS module) B. Femenia (OAA<EMAIL_ADDRESS>Nov 1998, (PSF module) F. Delplancke (ESO<EMAIL_ADDRESS>Jan 2000, (IMG module) B. Femenia (OAA<EMAIL_ADDRESS>modifications : february 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>-the PSF output is rendered as the IMAGE output now (in terms of number of photons and noise considerations). -quantum efficiency + noise problems fixed. : September 2001 B. Femenia (OAA<EMAIL_ADDRESS>-IDL 5.4 handles SEEDs in calls to RANDOM such that now the initial seed has to be fed. Now having control over seeds to generate noise. : September 2002, B. Femenia (GTC<EMAIL_ADDRESS>-controlling noise seeds via COMMON blocks will result ambiguous in project with two or more IMG modules. : october 2002, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adding sky background noise to the PSF and the image is now an option only (=> added tag/condition par.backgradd). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : March 2003, B. Femenia (GTC<EMAIL_ADDRESS>-merging versions at OAA and GTC. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Oct 1998, (TTS module) B. Femenia (OAA<EMAIL_ADDRESS>: Nov 1998, (PSF module) F. Delplancke (ESO<EMAIL_ADDRESS>: Jan 2000, (IMG module) B. Femenia (OAA<EMAIL_ADDRESS>modifications : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 4.0 as well, B. Femenia (GTC<EMAIL_ADDRESS>-merging versions at OAA and GTC. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See img/img.pro)
IWS
[Previous Routine] [Next Routine] [List of Routines]NAME: iws ROUTINE'S PURPOSE: IWS manages the simulation for the Ideal Wavefront Sensing (and reconstruction) (IWS) module, that is: 1-call the module's initialisation routine iws_init at the first iteration of the simulation project 2-call the module's program routine iws_prog otherwise. MODULE'S PURPOSE: IWS receives a wavefront in input and returns a corrected version of it, considering fitting error only. CATEGORY: main module's routine CALLING SEQUENCE: err = iws(inp_wfp_t, out_wfp_t, par, INIT=init) OUTPUT: error:long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_wfp_t: input wavefront. par : parameters structure from iws_gui. In addition to the usual tags associated with the overall management of the program, it contains the following tags: par.radial_order: Zernike radial order desired (correction). par.part_corr: partial correction desired (on Zernike modes corrected). INCLUDED OUTPUTS: out_wfp_t :output corrected wavefront. KEYWORD PARAMETERS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: None. RESTRICTIONS: Fitting error only. CALLED NON-IDL FUNCTIONS: none. MODIFICATION HISTORY: program written: april 2015, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>modifications : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (Lagrange<EMAIL_ADDRESS>modifications : for verison 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See iws/iws.pro)
LAS
[Previous Routine] [Next Routine] [List of Routines]NAME: las ROUTINE'S PURPOSE: las manages the simulation for the LASer definition (LAS) module, that is: 1-call the module's initialisation routine las_init at the first iteration of the simulation project, 2-call the module's program routine las_prog otherwise. MODULE'S PURPOSE: LAS executes the simulation of a created laser beam. It creates the gaussian beam of the laser and modelise its focalisation in the sodium layer, and calculates the number of photons emitted. LAS allows the user to define the laser shape. Up to now, it is only possible to have a gaussian laser, in continuous wave. The input power allows us to obtain the number of photons measured in the Shack-Hartmann subapertures. The waist coefficient is defined with the following formula: waist^2 = 2*sigma^2 => waist = sqrt(2)*sigma => waist = FWHM / (2*sqrt(alog(2))) The user will have to choose also the distance of focalisation of the laser. Usually, if we consider the sodium layer, it is about 90km. It is not necessary the same value as the mean sodium layer altitude (focusing the laser is not easy, so errors in focalisation can be taken into account). Finally, the artificial star coordinates must be given. CATEGORY: main module's routine CALLING SEQUENCE: error = las(out_src_t, par, INIT=init) INPUT PARAMETERS: par: the user defined input parameters for the NLS KEYWORD PARAMETERS: INIT: initialisation data structure. OUTPUTS: error: error code [long scalar]. INCLUDED OUTPUTS: out_src_t: Structure containing the laser beam map in an arbitrary scale, the number of photons and the wavelength considered, the coordinates of the spot laser in the sky and the altitude of focalisation. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: Can only define a gaussian beam ! CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: october 1998, Marcel Carbillet (OAA<EMAIL_ADDRESS>Elise Viard (ESO<EMAIL_ADDRESS>modifications : january 1999, Elise Viard (ESO<EMAIL_ADDRESS>-a few modifications for version 1.0. : december 1999--april 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>-enhanced and adapted to version 2.0 (CAOS). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : beta-version, Marcel Carbillet (OAA<EMAIL_ADDRESS>Elise Viard (ESO<EMAIL_ADDRESS>modifications : version 1.0, Elise Viard (ESO<EMAIL_ADDRESS>-a few modifications. : version 2.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-enhanced and adapted to version 2.0 (CAOS). -useless tag TIME took out -module's help imported from las_prog and corrected. -INIT structure and routine las_prog eliminated (useless). : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See las/las.pro)
MDS
[Previous Routine] [Next Routine] [List of Routines]NAME: mds ROUTINE'S PURPOSE: mds manages the simulation for the Mirror Deformations Sequencer (MDS) module, that is: 1-call the module's initialisation routine mds_init at the first iteration of the project 2-call the module's program routine mds_prog otherwise. MODULE'S PURPOSE: MDS generates a sequence of mirror deformations. CATEGORY: main module's routine CALLING SEQUENCE: error = mds(out_atm_t, par, INIT=init) OUTPUT: error: long scalar (error code). see !caos_error var in caos_init.pro. INPUTS: none. INCLUDED OUTPUTS: out_atm_t: the output structure of ATM, of type "atm_t", containing: -screen : 3-variables array of the ensemble of layers' wavefronts of the turbulent atmosphere [m] -scale : spatial scale [m/px] -delta_t: base-time [s] -alt : vector of altitudes of the layers [m] -dir : vector of direction of the wind [rd]. KEYWORD PARAMETERS: INIT: initialisation data structure COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS none. ROUTINE MODIFICATION HISTORY: program written: june 2002, Marcel Carbillet (OAA<EMAIL_ADDRESS>Christophe Verinaud (OAA<EMAIL_ADDRESS>modifications : july 2002, Marcel Carbillet (OAA<EMAIL_ADDRESS>-Zernike and user-defined deformations are now both well ordered (piston is defined for iter 0 and then the usefull deformations are sent). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>Christophe Verinaud (OAA<EMAIL_ADDRESS>modifications : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See mds/mds.pro)
NLS
[Previous Routine] [Next Routine] [List of Routines]NAME: nls ROUTINE'S PURPOSE: nls manages the simulation for the Na-Layer Spot (NLS) module, that is: 1-call the module's initialisation routine nls_init at the first iteration of the simulation project, 2-call the module's program routine nls_prog otherwise. MODULE'S PURPOSE: NLS simulates the sodium layer spot formation. Calculate the laser spot shape using discretisation of the sodium layer. Give also in output the coordinates within the main telescope axis. This module defines the Na layer. Three parameters are needed in input: the mean altitude of the sodium layer, its width and the number of sub-layers you want to consider. In this version the Na density is supposed to be a gaussian with a FHWM equal to 0.7849*width/2. The nominal peak density has been normalised using published data (cf table1, C.S. Gardner, proc. IEEE, vol 77, no 3, march 1989). For each sub-layer, the density itself [m^-2] is determined by calculating the area under the gaussian density profile. The output (Na-spot) is a 3D object, the laser image being calculated in each sub-layer (using the input laser shape, the phase screen, a defocused term and the density). When seen by the imager modules (IMG, SHS) after downward propagation, the spot coordinates (in each sub-layer) are used to shift spot images in order to sum them and obtain the seen spot image. CATEGORY: main module's routine CALLING SEQUENCE: error = nls(inp_wfp_t, $ out_src_t, $ par, $ INIT=init ) INPUTS: inp_wfp_t: Structure containing the phase screen after the upward propagation (sum of differents phase screens) and all parameters concerning the laser (auxiliary telescope coordinates, laser map, source position in the sky, focalisation altitude) INPUT PARAMETERS: par: the user defined input parameters for the NLS KEYWORD PARAMETERS: INIT: initialisation data structure. OUTPUTS: error: error code [long scalar] INCLUDED OUTPUTS: out_src_t: Structure containing the 3D map of the laser and all the parameters needed for the spot propagation. COMMON BLOCKS: none. SIDE EFFECTS: None. RESTRICTIONS: Saturation effects are not considered. NLS parameters are supposed constant during the simulation. Be careful! The choice of the number of sub-layers is important. If you consider large phase screens and big telescopes, you will create big arrays for each sub-layer, so don't consider too many sub-layers otherwise computation time will increase rapidly. On the contrary, don't consider a too small number of sub-layers especially if the distance between the two telescopes (emitter and receptor telescopes) is large, otherwise the discretisation will not be sufficient and the output image is will be wrong (the shift of the spot image will be large, so you will obtain a serie of small spots aligned with each others). NON-IDL ROUTINES: nls_density : gives the integrated density of the sodium layer for each sub-layer nls_defocus.pro: calculates at an altitude z the defocus to add to the focused image. nls_map.pro: calculates the 3D spot in the sodium sub-layers. nls_coord.pro: calculates the coordinates of the 3D spot. n_phot: calculates the number of background photons in a chosen bandwidth (this is a general library function that can be found in lib). ROUTINE MODIFICATION HISTORY: routine written: july 1998, Marcel Carbillet (OAA<EMAIL_ADDRESS>Elise Viard (ESO<EMAIL_ADDRESS>modifications : november 1998, Elise Viard (ESO<EMAIL_ADDRESS>-added possibility to have an input file : january 1999, Elise Viard (ESO<EMAIL_ADDRESS>-modifications for version 1.0. : march 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-debugging: one of the status case was missing. : december 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-enhanced and adapted to version 2.0 (CAOS). : may 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>-help corrected. : september 2000, Marcel Carbillet (OAA<EMAIL_ADDRESS>Simone Esposito (OAA<EMAIL_ADDRESS>Bruno Femenia (OAA<EMAIL_ADDRESS>-the 3D spot is also computed during the init phase now (was needed by the CEN module for reference calculation) : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : april 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : beta-version, Marcel Carbillet (OAA<EMAIL_ADDRESS>Elise Viard (ESO<EMAIL_ADDRESS>modifications : version 1.0, Elise Viard (ESO<EMAIL_ADDRESS>Marcel Carbillet (OAA<EMAIL_ADDRESS>-modifications for version 1.0. : version 2.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-enhanced and adapted to version 2.0 (CAOS). : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See nls/nls.pro)
PYR
[Previous Routine] [Next Routine] [List of Routines]NAME: pyr ROUTINE'S PURPOSE: pyr manages the simulation for the "Pyramid WFS" (pyr) module, that is: 1-calls the module's initialisation routine pyr_init at the first iteration of the simulation project 2-calls the module's program routine pyr_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: During the initialization (first loop), PYR computes the sensor geometry and many other useful parameters for the computation of the sensor image. Up to now only the squared geometry issupported. The main parameters to adjust are the linear number of sub-pupils over the diameter, the mini. illumination ratio and the modulation parameters (best is circular with ~8steps per modulation angle expressed in lambda/D: if +- 2 lambda/D --> 16 points). The 4 quadrant images of the sensor are computed by Fourier optics with two possible algorithms. First the complex amplitude in the image plane is computed, then it is multiplied by either the transmission mask function equivalent to pyramid facets or by a pyramidic phasor (phase mask); The latter is faster and permits to take into account interferences between the 4 quadrants. Finally, a reverse Fourier Transform permits to compute the image on the sensor in the pupil plane. In case of modulation, the complex amplitude in image plane is shifted in a few steps, describing a square (ols version) or circular figure of the image. For each step, the same computation is done and the squared moduli of the final image in pupil plane at each step are summed up. Rem: Extended source and laser not yet supported. CATEGORY: main module's routine CALLING SEQUENCE: error = pyr(inp_wfp_t, out_mim_t1, out_img_t2, par, INIT=init, TIME=time) OUTPUT: error: long scalar (error code). see !caos_error var in caos_init.pro. INPUTS: inp_wfp_t: structure of type wfp_t.tructure containing the wavefront to be analysed and several other needed information (pupil, optical path perturbations, ...) par : parameters structure from pyr_gui with tags associated to the management of program and tags containing relevant parameters for the scientific calculations. (See GUI DESCRIPTION section below for further details) INCLUDED OUTPUTS: out_mim_t1: structure of type mim_t. Structure containing the 4 pupil image on the CCD and the sensor geometry structure. out_img_t2: structure of type img_t. Structure containing the image plane on top of pyramid, integrated during dynamic modulation. KEYWORD PARAMETERS: INIT : named variable undefined or containing a scalar when pyr is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of pyr, the keyword INIT has to be set to the structure returned by the first call. TIME : time-evolution structure. OPTIONAL OUTPUTS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : int scalar. Total number of iteration during the simulation run. this_iter : int scalar. Number of the current iteration. It is defined only while status eq !caos_status.run. (this_iter >= 1). SIDE EFFECTS: None. RESTRICTIONS: None. GUI DESCRIPTION: see pyr help. ROUTINE MODIFICATION HISTORY: program written: june 2001, Christophe Verinaud (OAA<EMAIL_ADDRESS>modifications : october 2002, Christophe Verinaud (OAA<EMAIL_ADDRESS>-phase mask alternative added. : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS System. -second output from mim_t to img_t. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Christophe Verinaud (OAA<EMAIL_ADDRESS>modifications : october 2002, Christophe Verinaud (OAA<EMAIL_ADDRESS>-phase mask alternative added. : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. -second output from mim_t to img_t. : february 2003, Christophe Verinaud (ESO<EMAIL_ADDRESS>- bug correction for dark noise. : october 2004, Marcel Carbillet (LUAN<EMAIL_ADDRESS>- stupid one-value-vector IDL6+ bug corrected (in pyrccd_circ.pro: px->px[0]). : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See pyr/pyr.pro)
REC
[Previous Routine] [Next Routine] [List of Routines]NAME: rec ROUTINE'S PURPOSE: rec manages the simulation for the ReConstruction and Conjugation (REC) module, that is: 1-call the module's initialisation routine rec_init at the first iteration of the simulation project, 2-call the module's program routine rec_prog otherwise. MODULE'S PURPOSE: This module reconstructs the sensed wavefront in terms of a set of mirror's commands. The interaction matrix is computed during an off-line calibration process, using either Zernike polynomials or user-defined mirror deformations that can be influence functions, or whatever set of mirror deformations. The inversion process uses the singular value decomposition (SVD) algorithm. In case of zonal reconstruction, be aware of not cutting the number of modes (here the number of influence functions!) by setting a value to par.modes < the number of influence functions, but rather calculate a brand new "wuv" resulting from the SVD process performed during iteration zero. CATEGORY: main module's routine CALLING SEQUENCE: error = rec(inp_mes_t, $ out_com_t, $ par, $ INIT=init $ OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_mes_t: structure of type mes_t. par : parameters structure. INCLUDED OUTPUTS: out_com_t: structure of type com_t. KEYWORD PARAMETERS: INIT: initialisation data structure COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: june 2002, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : january/february 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. -atmosphere-type output eliminated (became useless wrt command-type output + use of new module DMC). -module's name from RCC to REC (eliminating old module REC). : help clarified in order to avoid bad behaviors when dealing with zonal reconstruction (influence functions). : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. -atmosphere-type output eliminated (became useless wrt command-type output + use of new module DMC). -module's name from RCC to REC (eliminating old module REC). : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See rec/rec.pro)
SCD
[Previous Routine] [Next Routine] [List of Routines]NAME: scd ROUTINE'S PURPOSE: scd manages the simulation for the Save Calibration Data (SCD) module, that is: 1-call the module's initialisation routine scd_init at the first iteration of the simulation project, 2-call the module's program routine scd_prog otherwise. MODULE'S PURPOSE: CATEGORY: main module's routine CALLING SEQUENCE: error = scd(inp_mes_t, $ ; mes_t input structure inp_atm_t, $ ; atm_t input structure par, $ ; parameter structure INIT=init ) ; initialisation data structure OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_atm_t: structure of type atm_t. inp_zzz_t: structure of type mes_t. par : parameters structure. INCLUDED OUTPUTS: none. KEYWORD PARAMETERS: INIT: initialisation data structure. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: june 2002, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See scd/scd.pro)
SLO
[Previous Routine] [Next Routine] [List of Routines]NAME: slo ROUTINE'S PURPOSE: slo manages the simulation for the slope computation (slo) module for PYR, that is: 1-call the module's initialisation routine slo_init at the first iteration of the simulation project, 2-call the module's program routine slo_prog otherwise. MODULE'S PURPOSE: It takes the image coming out of the Pyramid wavefront sensor and computes the x- and y signals positions for each sub-aperture. GUI details ----------- select algorithm : normalise by total energy or by intensity in each sub. CATEGORY: main module's routine CALLING SEQUENCE: error = slo(inp_mim_t, $ out_mes_t, $ par, $ INIT=init ) OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUT: inp_mim_t: structure of type mim_t. It contains the Pyramid wavefront sensor image and some geometrical parameters of the PYR. INCLUDED OUTPUT: out_mes_t: structure of type mes_t. It contains the vector of the sensor measurements (here, the x-slopes followed by the y-slopes) as well as some info about the sensor shape in case this information has to be checked by the reconstructor. KEYWORD PARAMETERS: INIT: initialisation data structure. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: slope.pro ROUTINE MODIFICATION HISTORY: routine written: june 2001, Christophe Verinaud (OAA<EMAIL_ADDRESS>modifications : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Christophe Verinaud (OAA<EMAIL_ADDRESS>modifications : october 2002, Christophe Verinaud (OAA<EMAIL_ADDRESS>-normalization alternative added. : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See slo/slo.pro)
SRC
[Previous Routine] [Next Routine] [List of Routines]NAME: src ROUTINE'S PURPOSE: SRC manages the simulation for the Calibration FiBer (SRC) module, that is: 1-call the module's initialisation routine src_init at the first iteration of the project 2-call the module's program routine src_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: src executes the simulation for SouRCe (SRC) module. The source chosen can be either a natural object or a laser guide star, and either a point-like or 2D-object. In this last case (2D-objects), the map can be either a user-defined one or a map calculated by the module, with a uniform disc-like shape or a gaussian one (that can be elongated). The magnitude of the source can be chosen, as well as its spectral type (in case of a natural object) and the values of the background in the different Johnson bands (+ a Na band). The number of photons computation is then done assuming that a natural object is a black body-like one. In the laser guide star case, the given magnitude is an equivalent V-magnitude. Finally, the angular position of the object has to be chosen, as well as its distance from the observing telescope (in case of a laser guide star). CATEGORY: main module's routine CALLING SEQUENCE: error = src(out_src_t, par, INIT=init) OUTPUT: error: long scalar (error code). see !caos_error var in caos_init.pro. INPUTS: none. INCLUDED OUTPUTS: out_src_t: structure of type "src_t" containing the characteristics of the selected source, the following fields are contained in this structure: off_axis : off-axis of source wrt main tel. [rd] pos_ang : position angle of source wrt main tel. [rd] dist_z : dist. main tel.-object [m] (inf. if astro. one) map : source map (if 2d astronomical object) scale_xy : map scale (if any) [rd/px] coord : [not used] scale_z : [not used] n_phot : number(s) of photons [/s/m^2] (vs. wavelength) background: sky background(s) [/s/m^2/arcsec^2] (id.) lambda : wavelength(s) [m] width : band-width(s) [m] KEYWORD PARAMETERS: INIT: named variable undefined or containing a scalar when src is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of src, the keyword INIT has to be set to the structure returned by the first call. COMMON BLOCKS: common caos_ao_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. PROCEDURE: none. CALLED NON-IDL FUNCTIONS: n_phot : for number of photons calculus (see in .../lib). spec2mag: to transform a V-magnitude into any other band magnitude (see in .../lib). ROUTINE MODIFICATION HISTORY: program written: october 1998, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : february 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-a few modifications for version 1.0. : march 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>Simone Esposito (OAA<EMAIL_ADDRESS>-added 2D-objects calculation feature. : Nov 1999, B. Femenia (OAA<EMAIL_ADDRESS>M. Carbillet (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See src/src.pro)
SSC
[Previous Routine] [Next Routine] [List of Routines]NAME: ssc ROUTINE'S PURPOSE: ssc manages the simulation for the State-Space Control (SSC) module, that is: 1-call the module's initialisation routine ssc_init at the first iteration of the simulation project, 2-call the module's program routine ssc_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: CATEGORY: main module's routine CALLING SEQUENCE: error = ssc(inp_mes_t, $ ; input structure out_com_t, $ ; output structure par, $ ; parameter structure INIT=init ) ; initialisation data structure OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_mes_t: structure of type com_t. par : parameters structure. INCLUDED OUTPUTS: out_com_t: structure of type com_t. KEYWORD PARAMETERS: INIT: initialisation data structure. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: none. ROUTINE MODIFICATION HISTORY: routine written: february 2012, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>modifications : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Marcel Carbillet (Lagrange<EMAIL_ADDRESS>modifications : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See ssc/ssc.pro)
STF
[Previous Routine] [Next Routine] [List of Routines]NAME: stf ROUTINE'S PURPOSE: stf manages the simulation for the STructure Function calculation (STF) module. MODULE'S PURPOSE: STF computes the theoretical structure function from the input parameters r0 and L0, and the simulated one from the input wavefronts, updating it at each iteration of the simulation. CATEGORY: main module's routine CALLING SEQUENCE: error = stf(inp_wfp_t, out_stf_t, par, INIT=init) INPUT: inp_wfp: structure of type wfp_t KEYWORD PARAMETERS: INIT: ... OUTPUTS: error: long scalar (error code). COMMON BLOCKS: none. SIDE EFFECTS: none. RESTRICTIONS: The simulated structure is performed only along the x- and the y-axis of the pupil, and then averaged. PROCEDURE: none. ROUTINE MODIFICATION HISTORY: routine written: july 1998, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : december 1999, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to version 2.0 (CAOS). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : version 1.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>modifications : version 2.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-adapted to version 2.0 (CAOS). : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted..
(See stf/stf.pro)
SWS
[Previous Routine] [Next Routine] [List of Routines]NAME: sws ROUTINE'S PURPOSE: SWS manages the simulation for the Shack-Hartmann Wavefront Sensor (SWS) module, that is: 1-calls the module's initialisation routine sws_init at the first iteration of the simulation (or calibration) project 2-calls the module's program routine sws_prog otherwise, managing at the same time the possible time integration/delay. MODULE'S PURPOSE: SWS executes the simulation of the Shack-Hartmann Wavefront sensor, adopting a similar procedure as the IMG module to enlarge the phase screen in the incoming inp_wfp_t so that the SWS CCD pixel is n times (n integer) the size of the pixel size due to FFTing the phase screen. By doing this we won't need any interpolation process but a fater and accurate standard REBIN call. Another improvement concerns the use of the much faster FFTW routines over the standard IDL routines. On the other hand this module is kept as its minimum so it lacks all the advanced features in the original CAOS SHS module. The geometry is always assumed to be of Fried type. CATEGORY: main module's routine CALLING SEQUENCE: error = sws(inp_wfp_t, out_mim_t, par, INIT=init, TIME= time) OUTPUT: error: long scalar (error code). see !caos_error var in caos_init.pro. INPUTS: inp_wfp_t: structure of type wfp_t.tructure containing the wavefront to be analysed and several other needed information (pupil, optical path perturbations, ...) par : parameters structure from sws_gui. Contains the tags associated to the management of program as well as the tags containing the parameters for the scientific calculations. (See GUI DESCRIPTION section below for further details) INCLUDED OUTPUTS: out_mim_t: structure of type mim_t. Structure containing the SHWFS image on the CCD and the sensor geometry structure. KEYWORD PARAMETERS: INIT : named variable undefined or containing a scalar when SWS is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of SWS, the keyword INIT has to be set to the structure returned by the first call. TIME : time-evolution structure. OPTIONAL OUTPUTS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : int scalar. Total number of iteration during the simulation run. this_iter : int scalar. Number of the current iteration. It is defined only while status eq !caos_status.run. (this_iter >= 1). SIDE EFFECTS: None. RESTRICTIONS: -Only Fried geometry is allowed in initial version. -Unlike SHS module, no advanced parameters are allowed. -Program assumes that each subaperture samples a square WF with an integer number of sampling WF pixels. If this is not the case report error and exit. ROUTINE MODIFICATION HISTORY: program written: Dec 2003, B. Femenia (GTC<EMAIL_ADDRESS>modifications : december 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited from version 4.0 of the whole system CAOS. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Dec 2003, B. Femenia (GTC<EMAIL_ADDRESS>modifications : for CAOS 4.0+ compatibility, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") from version 4.0 of the whole system CAOS. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See sws/sws.pro)
TCE
[Previous Routine] [Next Routine] [List of Routines]NAME: tce PURPOSE: TCE executes the simulation for the Tip-tilt CEntroid (TCE) module. Based on the choice of detector selected in this module's GUI, namely a Quad-cell or a CCD, TCE will apply the Quad-cell calculus or the barycenter calculus on the image formed over the chosen detector (and obtained with a Tip-Tilt sensor module) to estimate the overall wavefront tip-tilt. Then TCE outputs a out_com_t struc. where the estimated tip-tilt angles are passed to whatever module is next in the simulation. CATEGORY: Module CALLING SEQUENCE: error = tce( $ inp_img_t, $ ; img_t input structure out_com_t, $ ; com_t output structure par, $ ; parameters structure INIT=init $ ; initialisation structure ) OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_img_t: structure of type img_t. Structure containing the IMG IMAGE, info on CCD used (#pixels, pixel size, covered field, ...) par : parameters structure from tce_gui. At time of writing this version it was unnecessary to pass any science parameter via GUI, but it is left for completeness. Therefore, in this version the par structure associated to TCE only contains tags associated to the management of program, but no parameter relevant to scientific program. INCLUDED OUTPUTS: out_com_t: structure of type com_t telling the Tip-Tilt Mirror how to act in order to correct a measured TipTilt. Tilt angles are calculated in radians. KEYWORD PARAMETERS: INIT : named variable undefined or containing a scalar when TCE is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of TCE, the keyword INIT has to be set to the structure returned by the first call. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : int scalar. Total number of iteration during the simulation run. this_iter : int scalar. Number of the current iteration. It is defined only while status eq !caos_status.run. (this_iter >= 1). SIDE EFFECTS: None. RESTRICTIONS: None. CALLED NON-IDL FUNCTIONS: None. EXAMPLE: write here an example! MODIFICATION HISTORY: program written: Feb 1999, B. Femenia (OAA<EMAIL_ADDRESS>-written to match general style and requirements on how to manage initialization process, calibration procedure and time management according to released templates on Feb 1999. : Nov 1999, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : Jan 2000, B. Femenia (OAA<EMAIL_ADDRESS>-TCE now accepts inputs coming from IMG module whose output structure is now of type img_t. : April 2001, B. Femenia (OAA<EMAIL_ADDRESS>-TCE_GUI considers a new field where Q-cell calibration constant is fed. : february 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-common variable "calibration" eliminated. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0.
(See tce/tce.pro)
TFL
[Previous Routine] [Next Routine] [List of Routines]NAME: tfl ROUTINE'S PURPOSE: tfl manages the simulation for the Time FiLtering (TFL) module, that is: 1-call the module's initialisation routine tfl_init at the first iteration of the simulation project 2-call the module's program routine tfl_prog otherwise, managing at the same time the possible time integration/delay. PURPOSE: "tfl.pro" executes the simulation for the Time FiLtering (TFL) module: it allows to apply a different discrete recursive filter for each element (degree of freedom or DOF) of a time-variable vector of input commands. The discrete filter is obtained by the discretization of a rational analog filter used as prototype. In the current release, the discretization of the prototype filter is obtained applying the bilinear (Tustin) transform [Oppenheim & Schafer, 1989, sec. 7.1.2] to the analog filter tranfer function. The parameters associated to an instance of the module TFL can be set with the use of the Grafical User Intergace (GUI) called by the TFL_GUI function. It allows the user to choose if defining the same filter for all the DOF of the input command vector or a different one for each DOF. In both the cases the analog filter prototype can be defined in the GUI entering the data associated to one of following parametric description of its Laplace Transfer Function (TF): a) "Pure Integrator"; a single pole @ 0Hz with a user defined gain G: TF(s) = G/s G >= 0. b) "Proportional-Integrator-Derivative (PID)"; the linear combination of a proportional, an integrator, and a derivative filter with user defined gains K_p, K_i and K_d respectively: 1 A TF(s) = K_p + K_i * --- + K_d * ----- * s s s+A K_p, K_i, K_d >= 0; A > 0 (when K_d ne 0). The user can also define the cut frequency A of the low-pass correction of the derivative portion of the filter for noise filtering purposes. c) "Gain-Zeros-Poles (GZP)"; a more general representation of a rational filter transfer function in terms of user defined gain G, zeros z[i], and poles p[j]: (s+z[0])*(s+z[1])*...*(s+z[nz-1]) TF(s) = G * --------------------------------- (s+p[0])*(s+p[1])*...*(s+p[np-1]) nz, np <= 4, G >= 0, real z[i], and real p[j] ^^^^ ^^^^ The software allows to load the filter parameters from an ASCII file. Only the GZP parametrization is allowed in this case. See the file .../modules/tfl/tfl_data/filter_data.dat for more informations. Because of the modular structure of the package, the data input rate (in terms of samples per second) is not defined until the parameters of the other modules are defined and the project is initialized, hence the filter data, like zero or pole frequencies, are entered using the sampling frequency (w_samp=2*pi/T) as a free parameter. As instance the GZP representation can be rewitten as: (s/w_samp+z[0]/w_samp)*...*(s/w_samp+z[nz-1]/w_samp) TF(s)=G*(2*pi/T)^(nz-np)*---------------------------------------------------- (s/w_samp+p[0]/w_samp)*...*(s/w_samp+p[np-1]/w-samp) the values for z[i]/w_samp, p[j]/w_samp and G/T^(nz-np) are requested in the GUI. In order to help the user in the filter definition, the Bode plots and the recursive filter implementation are displayed. The gain is always entered as positive values, to simulate the effect of a 'negative feedback' select the check-button 'Negative Feedback' in the GUI. CATEGORY: main module's routine CALLING SEQUENCE: error = tfl( $ inp_com_t, $ out_com_t, $ par, $ INIT=init, $ ) OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_com_t: structure of type com_t: {data_type : "com_t", $ data_status: !caos_data.xxx, $ see caos_init command : fltarr(n_actuators), $ commands to filter pass_mat : mode -> actuator matrix, $ tam_ssap : actuator -> mode matrix $ } par : vector of parameter structures from tfl_gui: { tfl, $ ; structure named TFL module : module, $ ; standard module description structure max_n_coeff: max_n_coeff, $ ; max number of allowed coeffs s_const : s_const, $ ; constant factor of the s-domain filt. tf n_s_zero : n_s_zero, $ ; number of zeros of the s-domain filt. tf n_s_pole : n_s_pole, $ ; number of poles of the s-domain filt. tf s_zero : s_zero, $ ; zeros of the s-domain filter tf s_pole : s_pole, $ ; poles of the s-domain filter tf type : type, $ ; filter type, usefull for the gui method : method, $ ; chosen method index from the method list double : double $ ; coeffs precision: 0B single, 1B double } INCLUDED OUTPUTS: out_com_t: structure of type com_t. {data_type : "com_t", $ data_status: !caos_data.xxx, $ see caos_init command : fltarr(n_actuators), $ filtered commands pass_mat : mode -> actuator matrix, $ tam_ssap : actuator -> mode matrix $ } KEYWORD PARAMETERS: INIT: named variable undefined or containing a scalar when tfl is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of tfl, the keyword INIT has to be set to the structure returned by the first call. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : int scalar. Total number of iteration during the simulation run. this_iter : int scalar. Number of the current iteration. It is defined only while status eq !caos_status.run. (this_iter >= 1). SIDE EFFECTS: none. RESTRICTIONS: none. CALLED NON-IDL FUNCTIONS: tustin.pro gzp2pid.pro pid2gzp.pro plot_amp.pro plot_phase.pro poly_mult.pro poly_pow.pro poly_sum.pro recursive_sf.pro tustin.pro zero2coeff.pro ROUTINE MODIFICATION HISTORY: program written: march 1999, Armando Riccardi (OAA<EMAIL_ADDRESS>modifications : Nov 1999, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : february 2004, Marcel Carbillet (OAA<EMAIL_ADDRESS>-help upgraded. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Armando Riccardi (OAA<EMAIL_ADDRESS>modifications : for version 2.0, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See tfl/tfl.pro)
TTM
[Previous Routine] [Next Routine] [List of Routines]NAME: ttm PURPOSE: TTM executes the simulation for the Tip-Tilt Mirror (TTS) module. This module receives a wavefront and a command from a Tip-Tilt Sensor (TTS) so that the mirror is tilted by a given ammount in order to substract to the input wavefront the previously measured atmospheric-induced tip-tilt. At this stage, this module symply substracts a tilted plane to a wavefront. This corresponds to an ideal Tip-Tilt Mirror since no dynamic behaviour has been considered within the module. Nevertheless, the user can simulate any dynamic behaviour with the TFL module. CATEGORY: Module CALLING SEQUENCE: err = ttm(inp_wfp_t, inp_com_t, out_wfp_t1, out_wfp_t2, par, INIT= init) OUTPUT: error: long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_wfp_t : structure of type wfp_t containing the incident wavefront on the mirror. inp_com_t : structure of type com_t. This structure contains the set of commands sent by the reconstructor (i.e TCE) If undefined (at the first time), the commands are set to 0. par : parameters structure from ttm_gui. At time of writing this version it was unnecessary to pass any science parameter via GUI, but it is left for completeness. Therefore, in this version the par structure associated to TTM only contains tags associated to the management of program, but no parameter relevant to scientific program. INCLUDED OUTPUTS: out_wfp_t1: structure of type wfp_t containing the original incident wavefront on the mirror but with a tilted plane substracted. out_wfp_t2: struct of type wfp_t containing the correction (in this case a tilted plane) applied to incoming wavefront. KEYWORD PARAMETERS: INIT : named variable undefined or containing a scalar when ttm is called for the first time. As output the named variable will contain a structure of the initialization data. For the following calls of ttm, the keyword INIT has to be set to the structure returned by the first call. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : int scalar. Total number of iteration during the simulation run. this_iter : int scalar. Number of the current iteration. It is defined only while status eq !caos_status.run. (this_iter >= 1). SIDE EFFECTS: None. RESTRICTIONS: No dynamic behaviour considerations. PArticular behaviours due to the dynamical characteristics of a real mirror can still be simulated through proper design of filter response with TFL module. EXAMPLE: Write here an example! ROUTINE MODIFICATION HISTORY: program written: Nov 1998, B. Femenia (OAA<EMAIL_ADDRESS>M. Carbillet (OAA<EMAIL_ADDRESS>modifications : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written : Nov 1998, B. Femenia (OAA<EMAIL_ADDRESS>M. Carbillet (OAA<EMAIL_ADDRESS>modifications : for version 1.0, B. Femenia (OAA<EMAIL_ADDRESS>-rewritten to match general style and requirements on how to manage initialization process, calibration procedure and time management according to released templates on Feb 1999. : for version 2.0, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : for version ?.? (1999), B. Femenia (OAA<EMAIL_ADDRESS>-a second output containing the CORRECTION is added in order to allow the use of COMBINER feature. : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See ttm/ttm.pro)
WFA
[Previous Routine] [List of Routines]NAME: wfa ROUTINE'S PURPOSE: WFA manages the simulation for the WaveFront Adding (WFA) module, that is: 1-call the module's initialisation routine wfa_init at the first iteration of the simulation project 2-call the module's program routine wfa_prog otherwise. MODULE'S PURPOSE: WFA receives two wavefronts as inputs and returns their sum/difference according to weights supplied by user. This module has been developed to check performance of the software and does not care about intensities. Accordingly, the output is assigned the same values of n_phot and background (see doc on gpr for info on these tags) of the first input, unless WFA is used as a "duplicator" of correction in which case it detects which input is the correction and which one is the wf to be corrected. CATEGORY: main module's routine CALLING SEQUENCE: err = wfa(inp_wfp_t1, inp_wfp_t2, out_wfp_t, par) OUTPUT: error:long scalar (error code, see !caos_error var in caos_init.pro). INPUTS: inp_wfp_t1:incident wavefront. (Bottom input in Application builder) inp_wfp_t2:incident wavefront. (Top input in Application builder) par :parameters structure from wfa_gui. In addition to the usual tags associated with the overall management of the program, it contains the following tags: par.wb: assigned weight (+1 or -1) to first input (in AppBuilder, bottom box!!) par.wt: assigned weight (+1 or -1) to second input (in AppBuilder, top box!!) INCLUDED OUTPUTS: out_wfp_t :output wavefront with intensity arbitrarily normalized to 1. KEYWORD PARAMETERS: None. COMMON BLOCKS: common caos_block, tot_iter, this_iter tot_iter : total number of iteration during the simulation run. this_iter : current iteration number. SIDE EFFECTS: None. RESTRICTIONS: This module does not consider the effect on the intensity as it is not intended to simulate interferometry. It's been developed only to allow easy and fast visualization of AO effects on wavefronts. CALLED NON-IDL FUNCTIONS: none. MODIFICATION HISTORY: program written: April 1999, B. Femenia (OAA<EMAIL_ADDRESS>modifications : Dec 1999, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : january 2003, Marcel Carbillet (OAA<EMAIL_ADDRESS>-use of variable "calibration" eliminited for version 4.0 of the whole CAOS Software System. : may 2016, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted to Soft. Pack. CAOS 7.0. MODULE MODIFICATION HISTORY: module written: B. Femenia (OAA<EMAIL_ADDRESS>modifcations : for version 2.0, B. Femenia (OAA<EMAIL_ADDRESS>-adapted to new version CAOS (v 2.0). : for version 4.0, Marcel Carbillet (OAA<EMAIL_ADDRESS>-no more use of the common variable "calibration" and the tag "calib" (structure "info") for version 4.0 of the whole CAOS Software System. : for version 7.0, Marcel Carbillet (Lagrange<EMAIL_ADDRESS>-adapted.
(See wfa/wfa.pro)


Century-old Wyoming cafe burned, cause of fire still unknown
JACKSON, Wyo. (AP) - Authorities have not determined the cause of a July fire that caused irreparable harm to a more than century-old Wyoming log cabin.
The Jackson Hole News & Guide reported Friday that multiple local agencies including the Jackson Police Department and Jackson Hole Fire have been conducting a joint investigation into the fire at Cafe Genevieve in downtown Jackson.
Police Lt. Roger Schultz says investigators cannot determine if the fire was caused by humans or otherwise based on physical evidence.
TOP STORIES
Justice Department clears Trump of wrongdoing on Ukraine call
Evangelist Franklin Graham calls impeachment hearing 'a day of shame for America'
Accused thieves, child-porn suspects, suspected murderers among DACA recipients: Report
Authorities say multiple witnesses were interviewed in the case, but one key witness won’t agree to speak with investigators causing the case to remain active.
Authorities say the 109-year-old building caught fire July 2 and has remained closed since.
Owner Fred Peightal says he hopes to reopen the restaurant by February.
Information from: Jackson Hole (Wyo.) News And Guide, http://www.jhnewsandguide.com
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.