cfitsTK
PIAACMCsimul.h
Go to the documentation of this file.
1 #ifndef _PIAACMCSIMUL_H
2 #define _PIAACMCSIMUL_H
3 
4 
5 
6 #define ApoFitCosFact 1.0
7 
8 
9 //
10 // *****************************************************************************************************
11 // -------------------------- structure defining a reflective PIAACMC system ---------------------------
12 // *****************************************************************************************************
13 
14 
15 
16 //
17 // this structure holds parameters to be optimized in the PIAACMC diffractive design
18 //
19 typedef struct {
20 
21  // ======= SEED RADIAL PIAACMC PARAMETERS ======
22 
23  double centObs0;
24  double centObs1;
25  double r0lim;
26  double r1lim;
27  long NBradpts;
30  // Wavelength
31  int nblambda;
32  double lambda; // central wavelength [m]
33  double lambdaB; // spectral bandwidth [%]
34  double lambdaarray[2000]; // [m] lambdaarray is also defined in OptSystProp structure
35 
36 
37  // ====== Overall OPTICAL Geometry ===============
38 
39  float beamrad; // [m]
40  long size;
41  float pixscale; // [m/pix]
42 
43  int PIAAmode; // 0: no PIAA, 1: PIAA
44 
45  float PIAA0pos; // conjugation (z) of first PIAA surface [m]
46  float PIAAsep;// separation between PIAA surfaces [m]
47  int prePIAA0mask; // 1 if mask before PIAA surface 0
48  float prePIAA0maskpos; // position of mask before PIAA surface 0 [m]
49  int postPIAA0mask; // 1 if mask after PIAA surface 0
50  float postPIAA0maskpos; // position of mask after PIAA surface 0 [m]
51  float PIAAcoeff; // fraction of apodization done by PIAA
52  int invPIAAmode; // 0: no inv PIAA, 1: inv PIAA after Lyot stops, 2: inv PIAA before Lyot stops
53  float LyotZmin;
54  float LyotZmax;
55  float pupoutmaskrad; // output pupil mask radius (scaled to pupil radius)
56 
57  // ========== WAVEFRONT CONTROL ==================
58  int nbDM; // number of deformable mirrors (10 max)
59  double DMpos[10]; // DM conjugation in collimated space
60  long ID_DM[10]; // DM image identifier
61 
62 
63  // ========= LYOT STOPS ============
64  long NBLyotStop;
65  long IDLyotStop[10];
66  double LyotStop_zpos[10];
67 
68  // ======= Optics shapes modes ============
69  char PIAAmaterial_name[10];
71  long CmodesID; // Cosine radial mode
72  long Cmsize; // cosine modes size
73  long NBCmodes;
74  long piaaNBCmodesmax; // maximum number of radial cosine modes for PIAA optics
75 
76  long FmodesID; // Fourier 2D modes
77  long Fmsize;
78  long NBFmodes;
79  float piaaCPAmax; // maximum spatial frequency (CPA) for PIAA optics
80 
85 
86  // PSF flux calib
87  float peakPSF;
88 
89 
90  // ========= Focal Plane Mask ============
91 
92  double fpmaskradld; // mask radius [l/d] for the idealized PIAACMC starting point
93  long focmNBzone; // number of zones
94  double Fratio; // beam Fratio at focal plane
95  long zonezID; // focm zone material thickness, double precision image, named fpmzt / fpm_zonez.fits
96  double fpmaskamptransm; // mask amplitude transmission (normally 1.0)
97  long zoneaID; // focm zone amplitude transmission, double precision image, named fpmza / fpm_zonea.fits
98  double fpzfactor; // focal plane mask DFT zoom factor
99 
100  double fpmRad; // outer radius of physical focal plane mask [m]
101 
102  long NBrings; // number of rings
103  double fpmminsag; // [m]
104  double fpmmaxsag; // [m]
107  long NBringCentCone; // number of rings that the central cone occupies
108  double fpmCentConeRad; // [m]
109  double fpmCentConeZ; // peak sag of central cone [m]
110  double fpmOuterConeZ; // outer sag offset [m]
111  double fpmOuterConeRadld; // outer radius (end of outer cone) [lambda/D]
112  double fpmOuterConeRad; // [m]
114  char fpmmaterial_name[10];
116 
117  // Mask description
118  //
119  // CENTRAL CONE
120  // inner zone (optional) is a cone, covering the central NBringCentCone rings (set to zero for no central cone)
121  // The outer edge of the central cone is at sag = 0, and the central peak of the cone is at sag fpmCentConeZ
122  //
123  // SECTORS
124  // The next zone outwards consists of sectors arranged in rings. Each sector has its own sag
125  // The zones are between sag fpmminsag and fpmmaxsag
126  //
127  // OUTER CONE
128  // The outer cone starts at the outer edge of the sectors, where it has sag=0
129  // Its outer is at sag fpmOuterZ
130  // outside of the outer cone, the sag is constant at fpmOuterZ
131  //
132 
133 
135 
136 
137 
138 
139 
140 
141 /* =============================================================================================== */
142 /* =============================================================================================== */
146 /* =============================================================================================== */
148 /* =============================================================================================== */
149 
156 int_fast8_t init_PIAACMCsimul();
157 
158 
159 static void PIAACMCsimul_logFunctionCall(char *LogFileName, const char *FunctionName, long line, char *comments);
160 
161 
162 
167 void PIAACMCsimul_free( void );
168 
169 
173 void PIAACMCsimul_init( OPTPIAACMCDESIGN *design, long index, double TTxld, double TTyld );
174 
175 
179 int PIAAsimul_initpiaacmcconf(long piaacmctype, double fpmradld, double centobs0, double centobs1, int WFCmode, int load);
180 
184 int PIAAsimul_savepiaacmcconf(const char *dname);
185 
189 int PIAAsimul_loadpiaacmcconf(const char *dname);
190 
191 
193 
194 
195 
196 
197 /* =============================================================================================== */
198 /* =============================================================================================== */
202 /* =============================================================================================== */
204 /* =============================================================================================== */
205 
206 long PIAACMCsimul_mkFPM_zonemap(const char *IDname);
207 
208 long PIAACMCsimul_rings2sectors(const char *IDin_name, const char *sectfname, const char *IDout_name);
209 
210 long PIAACMCsimul_mkFocalPlaneMask(const char *IDzonemap_name, const char *ID_name, int mode, int saveMask);
211 
213 
214 
215 
216 /* =============================================================================================== */
217 /* =============================================================================================== */
221 /* =============================================================================================== */
223 /* =============================================================================================== */
224 
225 uint_fast8_t PIAACMCsimul_load2DRadialApodization(const char *IDapo_name, float beamradpix, const char *IDapofit_name);
226 
227 int PIAACMCsimul_init_geomPIAA_rad(const char *IDapofit_name);
228 
229 int PIAACMCsimul_mkPIAAMshapes_from_RadSag(const char *fname, const char *ID_PIAAM0_name, const char *ID_PIAAM1_name);
230 
231 int PIAACMCsimul_makePIAAshapes(OPTPIAACMCDESIGN *design, long index);
232 
234 
235 
236 
237 /* =============================================================================================== */
238 /* =============================================================================================== */
242 /* =============================================================================================== */
244 /* =============================================================================================== */
245 
246 long PIAAsimul_mkSimpleLyotStop(const char *ID_name, float rin, float rout);
247 
248 double PIAACMCsimul_optimizeLyotStop(const char *IDamp_name, const char *IDpha_name, const char *IDincoh_name, float zmin, float zmax, double throughput, long NBz, long NBmasks);
249 
250 long PIAACMCsimul_mkLyotMask(const char *IDincoh_name, const char *IDmc_name, const char *IDzone_name, double throughput, const char *IDout_name);
251 
253 
254 
255 /* =============================================================================================== */
256 /* =============================================================================================== */
260 /* =============================================================================================== */
262 /* =============================================================================================== */
263 
264 double PIAACMCsimul_achromFPMsol_eval(double *fpmresp_array, double *zonez_array, double *dphadz_array, double *outtmp_array, long vsize, long nbz, long nbl);
265 
266 double PIAACMCsimul_achromFPMsol_eval_zonezderivative(long zone, double *fpmresp_array, double *zonez_array, double *dphadz_array, double *outtmp_array, long vsize, long nbz, long nbl);
267 
268 long PIAACMC_FPMresp_rmzones(const char *FPMresp_in_name, const char *FPMresp_out_name, long NBzones);
269 
270 long PIAACMC_FPMresp_resample(const char *FPMresp_in_name, const char *FPMresp_out_name, long NBlambda, long PTstep);
271 
273 
274 
275 /* =============================================================================================== */
276 /* =============================================================================================== */
280 /* =============================================================================================== */
282 /* =============================================================================================== */
283 
284 
285 long PIAACMC_FPM_process(const char *FPMsag_name, const char *zonescoord_name, long NBexp, const char *outname);
286 
287 long PIAACMC_FPMresp_resample(const char *FPMresp_in_name, const char *FPMresp_out_name, long NBlambda, long PTstep);
288 
290 
291 
292 
293 /* =============================================================================================== */
294 /* =============================================================================================== */
298 /* =============================================================================================== */
300 /* =============================================================================================== */
301 
302 int PIAACMCsimul_exec(const char *confindex, long mode);
303 
304 double PIAACMCsimul_computePSF(float xld, float yld, long startelem, long endelem, int savepsf, int sourcesize, int extmode, int outsave);
305 
306 long PIAACMCsimul_CA2propCubeInt(const char *IDamp_name, const char *IDpha_name, float zmin, float zmax, long NBz, const char *IDout_name);
307 
308 int PIAACMCsimul_run(const char *confindex, long mode);
309 
311 
312 
313 
314 #endif
static long vsize
Definition: PIAACMCsimul.c:161
long CmodesID
Definition: PIAACMCsimul.h:71
long fpmarraysize
Definition: PIAACMCsimul.h:113
float pixscale
Definition: PIAACMCsimul.h:41
long PIAAsimul_mkSimpleLyotStop(const char *ID_name, float rin, float rout)
Definition: PIAACMCsimul.c:3988
double fpmmaxsag
Definition: PIAACMCsimul.h:104
long NBrings
Definition: PIAACMCsimul.h:102
double fpmOuterConeZ
Definition: PIAACMCsimul.h:110
long PIAACMCsimul_CA2propCubeInt(const char *IDamp_name, const char *IDpha_name, float zmin, float zmax, long NBz, const char *IDout_name)
Definition: PIAACMCsimul.c:9156
int_fast8_t init_PIAACMCsimul()
Module initialization.
Definition: PIAACMCsimul.c:292
int PIAAmode
Definition: PIAACMCsimul.h:43
double PIAACMCsimul_computePSF(float xld, float yld, long startelem, long endelem, int savepsf, int sourcesize, int extmode, int outsave)
Definition: PIAACMCsimul.c:8517
float PIAAsep
Definition: PIAACMCsimul.h:46
long NBringCentCone
Definition: PIAACMCsimul.h:107
long piaa1CmodesID
Definition: PIAACMCsimul.h:83
long NBFmodes
Definition: PIAACMCsimul.h:78
double Fratio
Definition: PIAACMCsimul.h:94
int prePIAA0mask
Definition: PIAACMCsimul.h:47
static double * zonez_array
Definition: PIAACMCsimul.c:153
int PIAACMCsimul_mkPIAAMshapes_from_RadSag(const char *fname, const char *ID_PIAAM0_name, const char *ID_PIAAM1_name)
Definition: PIAACMCsimul.c:3574
double PIAACMCsimul_optimizeLyotStop(const char *IDamp_name, const char *IDpha_name, const char *IDincoh_name, float zmin, float zmax, double throughput, long NBz, long NBmasks)
Definition: PIAACMCsimul.c:4233
int PIAAsimul_initpiaacmcconf(long piaacmctype, double fpmradld, double centobs0, double centobs1, int WFCmode, int load)
initializes configuration
Definition: PIAACMCsimul.c:1023
float PIAA0pos
Definition: PIAACMCsimul.h:45
int PIAACMCsimul_makePIAAshapes(OPTPIAACMCDESIGN *design, long index)
Definition: PIAACMCsimul.c:3716
double fpzfactor
Definition: PIAACMCsimul.h:98
void PIAACMCsimul_free(void)
Free PIAACMC memory.
Definition: PIAACMCsimul.c:989
long FmodesID
Definition: PIAACMCsimul.h:76
int postPIAA0mask
Definition: PIAACMCsimul.h:49
int fpmmaterial_code
Definition: PIAACMCsimul.h:115
int PIAAmaterial_code
Definition: PIAACMCsimul.h:70
float beamrad
Definition: PIAACMCsimul.h:39
long focmNBzone
Definition: PIAACMCsimul.h:93
double fpmCentConeRad
Definition: PIAACMCsimul.h:108
double lambdaB
Definition: PIAACMCsimul.h:33
int PIAACMCsimul_init_geomPIAA_rad(const char *IDapofit_name)
Definition: PIAACMCsimul.c:3171
long PIAACMCsimul_mkLyotMask(const char *IDincoh_name, const char *IDmc_name, const char *IDzone_name, double throughput, const char *IDout_name)
Definition: PIAACMCsimul.c:4028
long size
Definition: PIAACMCsimul.h:40
long zoneaID
Definition: PIAACMCsimul.h:97
double centObs1
Definition: PIAACMCsimul.h:24
double lambda
Definition: PIAACMCsimul.h:32
long piaa1FmodesID
Definition: PIAACMCsimul.h:84
static void PIAACMCsimul_logFunctionCall(char *LogFileName, const char *FunctionName, long line, char *comments)
int PIAACMCsimul_run(const char *confindex, long mode)
Definition: PIAACMCsimul.c:9243
double centObs0
Definition: PIAACMCsimul.h:23
long zonezID
Definition: PIAACMCsimul.h:95
float piaaCPAmax
Definition: PIAACMCsimul.h:79
double r1lim
Definition: PIAACMCsimul.h:26
static double * dphadz_array
Definition: PIAACMCsimul.c:157
long PIAACMCsimul_mkFPM_zonemap(const char *IDname)
Definition: PIAACMCsimul.c:2341
static double * outtmp_array
Definition: PIAACMCsimul.c:158
float prePIAA0maskpos
Definition: PIAACMCsimul.h:48
double fpmsagreg_alpha
Definition: PIAACMCsimul.h:106
int PIAACMCsimul_exec(const char *confindex, long mode)
Main simulation routine.
Definition: PIAACMCsimul.c:5056
long NBradpts
Definition: PIAACMCsimul.h:27
int PIAAsimul_savepiaacmcconf(const char *dname)
Save configuration.
Definition: PIAACMCsimul.c:2137
int nbDM
Definition: PIAACMCsimul.h:58
int PIAAsimul_loadpiaacmcconf(const char *dname)
Load configuration.
Definition: PIAACMCsimul.c:2215
float pupoutmaskrad
Definition: PIAACMCsimul.h:55
double fpmOuterConeRad
Definition: PIAACMCsimul.h:112
void PIAACMCsimul_init(OPTPIAACMCDESIGN *design, long index, double TTxld, double TTyld)
initializes the optsyst structure to simulate reflective PIAACMC system
Definition: PIAACMCsimul.c:420
long piaa0FmodesID
Definition: PIAACMCsimul.h:82
long NBCmodes
Definition: PIAACMCsimul.h:73
double r0lim
Definition: PIAACMCsimul.h:25
long piaa0CmodesID
Definition: PIAACMCsimul.h:81
float peakPSF
Definition: PIAACMCsimul.h:87
Definition: PIAACMCsimul.h:19
long PIAACMC_FPMresp_resample(const char *FPMresp_in_name, const char *FPMresp_out_name, long NBlambda, long PTstep)
Definition: PIAACMCsimul.c:4815
double fpmaskradld
Definition: PIAACMCsimul.h:92
long NBLyotStop
Definition: PIAACMCsimul.h:64
long piaaNBCmodesmax
Definition: PIAACMCsimul.h:74
float LyotZmax
Definition: PIAACMCsimul.h:54
double fpmsagreg_coeff
Definition: PIAACMCsimul.h:105
static double * fpmresp_array
Definition: PIAACMCsimul.c:152
long PIAACMC_FPM_process(const char *FPMsag_name, const char *zonescoord_name, long NBexp, const char *outname)
Definition: PIAACMCsimul.c:4928
double fpmOuterConeRadld
Definition: PIAACMCsimul.h:111
long PIAACMCsimul_mkFocalPlaneMask(const char *IDzonemap_name, const char *ID_name, int mode, int saveMask)
Definition: PIAACMCsimul.c:2687
int nblambda
Definition: PIAACMCsimul.h:31
double fpmaskamptransm
Definition: PIAACMCsimul.h:96
char * line
Definition: CLIcore.c:156
float LyotZmin
Definition: PIAACMCsimul.h:53
double fpmminsag
Definition: PIAACMCsimul.h:103
double PIAACMCsimul_achromFPMsol_eval(double *fpmresp_array, double *zonez_array, double *dphadz_array, double *outtmp_array, long vsize, long nbz, long nbl)
Definition: PIAACMCsimul.c:4596
float postPIAA0maskpos
Definition: PIAACMCsimul.h:50
double PIAACMCsimul_achromFPMsol_eval_zonezderivative(long zone, double *fpmresp_array, double *zonez_array, double *dphadz_array, double *outtmp_array, long vsize, long nbz, long nbl)
Definition: PIAACMCsimul.c:4688
long PIAACMC_FPMresp_rmzones(const char *FPMresp_in_name, const char *FPMresp_out_name, long NBzones)
Definition: PIAACMCsimul.c:4776
int invPIAAmode
Definition: PIAACMCsimul.h:52
long Fmsize
Definition: PIAACMCsimul.h:77
uint_fast8_t PIAACMCsimul_load2DRadialApodization(const char *IDapo_name, float beamradpix, const char *IDapofit_name)
Definition: PIAACMCsimul.c:3076
float PIAAcoeff
Definition: PIAACMCsimul.h:51
long Cmsize
Definition: PIAACMCsimul.h:72
long PIAACMCsimul_rings2sectors(const char *IDin_name, const char *sectfname, const char *IDout_name)
Definition: PIAACMCsimul.c:2635
double fpmCentConeZ
Definition: PIAACMCsimul.h:109
double fpmRad
Definition: PIAACMCsimul.h:100