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_initpiaacmcconf
PIAACMCsimul_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_VALREF
computePSF_FAST_FPMresp = 1
: uses pre-computed complex amplitude zones response to evaluate FPM solutionsPIAACMC_FPM_FASTDERIVATIVES = 1
To 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