|
coffee
Coronagraph Optimization For Fast Exoplanet Exploration
|
Source code is in file PIAACMCsimul.c
The main function in the source code is PIAACMCsimul_exec(), which takes two arguments: the configuration index (usually a 3 digit integer) and the mode (integer) which describes the operation to be performed to the PIAACMC design.
| Mode | Description |
|---|---|
| 0 | Compute on-axis propagation for specified configuration. If configuration does not exist, create idealized monochromatic PIAACMC (intended to create a new index) and compute on-axis propagation |
| 1 | Optimize Lyot stop(s) locations (scan) |
| 2 | Optimize focal plane mask transmission for idealized monochromatic PIAACMC (scan) |
| 3 | Run without focal plane mask (for testing and calibration) |
| 4 | Linear optimization around current design, free parameters = PIAA optics cosines shapes (track progress by looking at val.opt file) |
| 5 | Optimize Lyot stops shapes and positions |
| 10 | Setup polychromatic optimization |
| 11 | Compute polychromatic response to zones, store result in FPMresp |
| 12 | Search for best mask solution using FPMresp, random search |
| 13 | Optimize PIAA optics shapes and focal plane mask transmission (idealized PIAACMC) |
| 40 | Optimize PIAA optics shapes and focal plane mask transmission (idealized PIAACMC) |
| 41 | Optimize PIAA optics shapes and focal plane mask zones (polychromatic) |
| 100 | Evaluate current design: polychromatic contrast, pointing sensitivity |
| 101 | Transmission as a function of angular separation |
| 200 | Make focal plane mask OPD map |
The following variables can be set :
| Variable | Description |
|---|---|
| PIAACMC_size | Array size (1024, 2048, etc...) |
| PIAACMC_pixscale | Pixel scale [m] |
| PIAACMC_dftgrid | Sampling interval in DFTs |
| PIAACMC_centobs0 | Input central obstruction |
| PIAACMC_centobs1 | Output central obstruction |
| PIAACMC_nblambda | Number of wavelength points |
| PIAACMC_resolved | 1 if resolved source (3 points at r = 0.01 l/D, 120 deg apart) |
| PIAACMC_fpmtype | 1 if physical mask, 0 if idealized mask |
| PIAACMC_FPMsectors | Number of sectors in focal plane mask |
| PIAACMC_NBrings | Number of rings in focal plane mask |
| PIAACMC_fpmradld | Focal plane mask outer radius |
APLCmaskCtransm.txt ?? fpm_ampl.fits fpm_pha.fits FPmask.tmp.fits
| Output file | Notes |
|---|---|
| ./piaaconfxxx/piaacmcparams.conf | Configuration parameters |
| ./piaaconfxxx/conjugations.txt | Conjugations |
| ./piaaconfxxx/lambdalist.txt | list of wavelength values |
| ./piaaconfxxx/pupa0_[size].fits | input pupil (created by default if does not exist) |
| Output file | Notes |
|---|---|
| Cmodes.fits | circular radial cosine modes (40 modes, hard coded) |
| Fmodes.fits | Fourier modes (625 modes = 10 CPA, hard coded) |
| ./piaaconfxxx/ModesExpr_CPA.txt | modes definition |
| ./piaaconfxxx/APOmodesCos.fits | Cosine modes for fitting 2D apodization profile |
| Output file | Notes |
|---|---|
| ./piaaconfxxx/APLCapo.1.400.0.300.info | file written by prolate generation function coronagraph_make_2Dprolate in coronagraphs.c |
| ./piaaconfxxx/apo2Drad.fits | idealized PIAACMC 2D apodization |
| ./piaaconfxxx/piaam0z.fits | PIAA M0 shape (2D sag) |
| ./piaaconfxxx/piaam1z.fits | PIAA M1 shape (2D sag) |
| ./piaaconfxxx/PIAA_Mshapes.txt | PIAA shapes (radial txt file, cols: r0, z0, r1, z1) |
| ./piaaconfxxx/piaa0Fz.fits | PIAA M0 shape, Fourier components (2D file) |
| ./piaaconfxxx/piaa1Fz.fits | PIAA M1 shape, Fourier components (2D file) |
| ./piaaconfxxx/piaa0Cmodes.fits | idealized PIAACMC mirror 0 cosine modes (copied from ./piaaref/) |
| ./piaaconfxxx/piaa0Fmodes.fits | idealized PIAACMC mirror 0 Fourier modes (copied from ./piaaref/) |
| ./piaaconfxxx/piaa1Cmodes.fits | idealized PIAACMC mirror 1 cosine modes (copied from ./piaaref/) |
| ./piaaconfxxx/piaa1Fmodes.fits | idealized PIAACMC mirror 1 Fourier modes (copied from ./piaaref/) |
| ./piaaconfxxx/piaa0Cres.fits | idealized PIAA M0 cosine fit residual |
| ./piaaconfxxx/piaa1Cres.fits | idealized PIAA M1 cosine fit residual |
| ./piaaconfxxx/piaa0Cz.fits | idealized PIAA M0 cosine fit sag |
| ./piaaconfxxx/piaa1Cz.fits | idealized PIAA M1 cosine fit sag |
| ./piaaconfxxx/piaa0Fz.fits | idealized PIAA M0 Fourier fit sag |
| ./piaaconfxxx/piaa1Fz.fits | idealized PIAA M1 Fourier fit sag |
| Output file | Notes |
|---|---|
| ./piaaconfxxx/piaaref/APLCmaskCtransm.txt | idealized PIAACMC focal plane mask transmission |
| ./piaaconfxxx/piaaref/apo2Drad.fits | idealized PIAACMC output apodization |
| ./piaaconfxxx/piaaref/piaa0Cmodes.fits | idealized PIAACMC mirror 0 cosine modes |
| ./piaaconfxxx/piaaref/piaa0Fmodes.fits | idealized PIAACMC mirror 0 Fourier modes |
| ./piaaconfxxx/piaaref/piaa1Cmodes.fits | idealized PIAACMC mirror 1 cosine modes |
| ./piaaconfxxx/piaaref/piaa1Fmodes.fits | idealized PIAACMC mirror 1 Fourier modes |
Focal plane mask design defined by :
| Output file | Notes |
|---|---|
| fpmzmap[s]_[rrr]_[zzz].fits | Zones map |
| fpm_zonea[r][s]_[mr]_[rrr]_[zzz].fits | amplitude for each zone |
| fpm_zonea[r][s]_[mr]_[rrr]_[zzz].fits | thickness for each zone |
IDEALIZED OR PHYSICAL MASK
Idealized mask is a single zone mask with thickness adjusted for lambda/2 phase shift and a (non-physical) partial transmission. Physical mask consist of 1 or more zones with full transmission. Each zone can have a different thickness.
By default, a non-physical mask is first created with transmission piaacmc[0].fpmaskamptransm read from piaacmcparams.conf. Computations indices using a physical mask:
| Output file | Notes |
|---|---|
| ./piaaconfxxx/LyotStop0.fits | Lyot Stop 0 |
| ./piaaconfxxx/LyotStop1.fits | Lyot Stop 1 |
Files are /piaaconfxxx/WFamp_nnn.fits and WFpha_nnn.fits, where nnn is the plane index.
Complex amplitude is shown AFTER the element has been applied, in the plane of the element.
| Plane index | description |
|---|---|
| 000 | Input pupil |
| 001 | Fold mirror used to induce pointing offsets |
| 002 | PIAA M0 |
| 003 | PIAA M1 |
| 004 | PIAAM1 edge opaque mask |
| 005 | post-focal plane mask pupil |
| 006 | Lyot Stop 0 |
| 007 | Lyot Stop 1 |
| 008 | invPIAA1 |
| 009 | invPIAA0 |
| 010 | back end mask |
| Plane index | description |
|---|---|
| ./piaaconfxxx/scoringmask0.fits | Evaluation points in focal plane, hardcoded in PIAACMCsimul_computePSF() |
| ./piaaconfxxx/CnormFactor.txt | PSF normalization factor used to compute contrast |
| ./piaaconfxxx/flux.txt | total intensity at each plane |
Every time a PSF is computed, the following 3 functions are created in that order:
PIAAsimul_initpiaacmcconfPIAACMCsimul_init(piaacmc, 0, xld, yld) : initializes optical system to piaacmc designPIAACMCsimul_makePIAAshapes(piaacmc, 0) : create 2D PIAA shapes (piaam0z and piaam1z) from coefficient values and modesOptSystProp_run(optsyst, 0, startelem, optsyst[0].NBelem, piaacmcconfdir, 0) : perform optical propagationNote that the last 3 functions are wrapped togeter in the computePSF function, which allows multi-point (extended sources) :
PIAACMCsimul_computePSF(float xld, float yld, long startelem, long endelem, int savepsf, int sourcesize, int extmode, int outsave) : compute PSFPIAACMCsimul_init(piaacmc, 0, xld+rad1, yld)PIAACMCsimul_makePIAAshapes(piaacmc, 0)OptSystProp_run(optsyst, 0, startelem, optsyst[0].NBelem, piaacmcconfdir, 0)The first step of the optimization process is to compute the PIAACMC optics and focal plane mask in the idealized case: monochromatic light, point source, and ideal focal plane mask (circular, phase-shifting and partially transmissive). Steps are shown in the figure below and correspond to steps in the runPIAACMC state machine.
The scripts produce an APLC design by setting PIAAmode = 0. In that case, only step000 in the figure above is executed.
FPM optimization is done as mode = 13 in the main routine. It is called from the runPIAACMC script. The PIAACMCsimul_run(char *confindex, long mode) function loop-calls the PIAACMCsimul_exec(char *confindex, long mode) function with mode 13 until search time is reached.
Each search proceeds as follows :
zeroST encodes the starting poing:PIAACMCsimul_exec in mode 13bestval and the corresponding parameters into data.image[IDoptvec].array.F[i]PIAACMCSIMUL_VAL, and reference value in PIAACMCSIMUL_VALREFcomputePSF_FAST_FPMresp = 1 : uses pre-computed complex amplitude zones response to evaluate FPM solutionsPIAACMC_FPM_FASTDERIVATIVES = 1To stop the optimization and have the current best solution adopted, enter a small value in the searchtime.txt file, so that the optimization process completes.
There are two regularization:
fpm_zonez_.....best.fits is the optimal solutionmode13_....bestval.txt is the corresponding valueTo restart the optimization from scratch, remove these two files.
Average contrast = 5.964e-05 0.001 -> Average contrast = 8.57575e-07, 1.9e-7 0.01 -> Average contrast = 7.99085e-07, 2.0e-7 7.8294e-07