cfitsTK
PIAACMCsimul.h File Reference

Go to the source code of this file.

Data Structures

struct  OPTPIAACMCDESIGN
 

Functions

1. INITIALIZATION, configurations

Allocate memory, import/export configurations

int_fast8_t init_PIAACMCsimul ()
 Module initialization. More...
 
static void PIAACMCsimul_logFunctionCall (char *LogFileName, const char *FunctionName, long line, char *comments)
 
void PIAACMCsimul_free (void)
 Free PIAACMC memory. More...
 
void PIAACMCsimul_init (OPTPIAACMCDESIGN *design, long index, double TTxld, double TTyld)
 initializes the optsyst structure to simulate reflective PIAACMC system More...
 
int PIAAsimul_initpiaacmcconf (long piaacmctype, double fpmradld, double centobs0, double centobs1, int WFCmode, int load)
 initializes configuration More...
 
int PIAAsimul_savepiaacmcconf (const char *dname)
 Save configuration. More...
 
int PIAAsimul_loadpiaacmcconf (const char *dname)
 Load configuration. More...
 
2. Focal plane mask construction

Define focal plane mask geometry

long PIAACMCsimul_mkFPM_zonemap (const char *IDname)
 
long PIAACMCsimul_rings2sectors (const char *IDin_name, const char *sectfname, const char *IDout_name)
 
long PIAACMCsimul_mkFocalPlaneMask (const char *IDzonemap_name, const char *ID_name, int mode, int saveMask)
 
3. PIAA optics (geometrical optics)

Create PIAA opics according to geometrical optics

uint_fast8_t PIAACMCsimul_load2DRadialApodization (const char *IDapo_name, float beamradpix, const char *IDapofit_name)
 
int PIAACMCsimul_init_geomPIAA_rad (const char *IDapofit_name)
 
int PIAACMCsimul_mkPIAAMshapes_from_RadSag (const char *fname, const char *ID_PIAAM0_name, const char *ID_PIAAM1_name)
 
int PIAACMCsimul_makePIAAshapes (OPTPIAACMCDESIGN *design, long index)
 
4. Lyot stop(s)

Create, optimize and manage Lyot stop(s)

long PIAAsimul_mkSimpleLyotStop (const char *ID_name, float rin, float rout)
 
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)
 
long PIAACMCsimul_mkLyotMask (const char *IDincoh_name, const char *IDmc_name, const char *IDzone_name, double throughput, const char *IDout_name)
 
5. Focal plane mask optimization

Create, optimize and manage Focal plane solutions

double PIAACMCsimul_achromFPMsol_eval (double *fpmresp_array, double *zonez_array, double *dphadz_array, double *outtmp_array, long vsize, long nbz, long nbl)
 
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)
 
long PIAACMC_FPMresp_rmzones (const char *FPMresp_in_name, const char *FPMresp_out_name, long NBzones)
 
long PIAACMC_FPMresp_resample (const char *FPMresp_in_name, const char *FPMresp_out_name, long NBlambda, long PTstep)
 
6. Focal plane processing

Process / resample focal plane solutions

long PIAACMC_FPM_process (const char *FPMsag_name, const char *zonescoord_name, long NBexp, const char *outname)
 
7. High level routines

High level optimization and evaluation routines

int PIAACMCsimul_exec (const char *confindex, long mode)
 Main simulation routine. More...
 
double PIAACMCsimul_computePSF (float xld, float yld, long startelem, long endelem, int savepsf, int sourcesize, int extmode, int outsave)
 
long PIAACMCsimul_CA2propCubeInt (const char *IDamp_name, const char *IDpha_name, float zmin, float zmax, long NBz, const char *IDout_name)
 
int PIAACMCsimul_run (const char *confindex, long mode)
 

Function Documentation

int_fast8_t init_PIAACMCsimul ( )

Module initialization.

Registers command line interface (CLI) commands

long PIAACMC_FPM_process ( const char *  FPMsag_name,
const char *  zonescoord_name,
long  NBexp,
const char *  outname 
)
long PIAACMC_FPMresp_resample ( const char *  FPMresp_in_name,
const char *  FPMresp_out_name,
long  NBlambda,
long  PTstep 
)
long PIAACMC_FPMresp_rmzones ( const char *  FPMresp_in_name,
const char *  FPMresp_out_name,
long  NBzones 
)
double PIAACMCsimul_achromFPMsol_eval ( double *  fpmresp_array,
double *  zonez_array,
double *  dphadz_array,
double *  outtmp_array,
long  vsize,
long  nbz,
long  nbl 
)

solves for focal plane mask solution using pre-computed zone responses

Parameters
[in]fpmresp_arrayMask zones responses, double array
[in]zonez_arrayzone thicknesses, double array
[in]dphadz_arrayfor each lambda, pha = thickness x dphadt_array[lambdaindex]
[out]outtmp_arrayoutput temp array

written to be fast, no checking of array sizes all arrays pre-allocated outside this function

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 
)
long PIAACMCsimul_CA2propCubeInt ( const char *  IDamp_name,
const char *  IDpha_name,
float  zmin,
float  zmax,
long  NBz,
const char *  IDout_name 
)

propagate complex amplitude image into intensity map cube

double PIAACMCsimul_computePSF ( float  xld,
float  yld,
long  startelem,
long  endelem,
int  savepsf,
int  sourcesize,
int  extmode,
int  outsave 
)

returns average contrast in evaluation zone

source size = 1e-{sourcesize*0.1}, except if sourcesize = 0 (point source) sourcesize is a 2-digit number ( 10 = 0.1 l/D, 20 = 0.01 l/D etc..)

extmode = 0 : 1 point (point source) extmode = 1 : 3 point sources, 120 apart on circle radius = source size extmode = 2 : 6 point sources. 3 as above on circle radius 1/sqrt(2.5) + 3 on outer circle, radius 2/sqrt(2.5), 120 apart, clockled 60 deg off inner points

if opderrcube exists, include each slice as a WF mode

PSF is held in shared memory by default

int PIAACMCsimul_exec ( const char *  confindex,
long  mode 
)

Main simulation routine.

Parameters
[in]confindexPIAACMC configuration index pointing to the input/output directory number
[in]modeType of operation to be performed

identify post focal plane pupil plane (first pupil after focal plane mask)

compute contrast curve

compute contrast curve measure average contrast value, 2-6 lambda/D

void PIAACMCsimul_free ( void  )

Free PIAACMC memory.

Frees memory for module

void PIAACMCsimul_init ( OPTPIAACMCDESIGN design,
long  index,
double  TTxld,
double  TTyld 
)

initializes the optsyst structure to simulate reflective PIAACMC system

initializes the optsyst structure to simulate PIAACMC system Fills in an OPTSYST global optsyst (see OptSysProp.h) which describes the optical system as a series of planes based on the input design structure

int PIAACMCsimul_init_geomPIAA_rad ( const char *  IDapofit_name)

computes radial PIAA optics sag

this function only works for circular PIAA uses radial PIAACMC design to initialize PIAA optics shapes and focal plane mask

uint_fast8_t PIAACMCsimul_load2DRadialApodization ( const char *  IDapo_name,
float  beamradpix,
const char *  IDapofit_name 
)
static void PIAACMCsimul_logFunctionCall ( char *  LogFileName,
const char *  FunctionName,
long  line,
char *  comments 
)
static
int PIAACMCsimul_makePIAAshapes ( OPTPIAACMCDESIGN design,
long  index 
)

mirror sag shapes: piaam0z, piaam1z

piaa0Cmodescoeff -> piaa0Cz piaa0Fmodescoeff -> piaa0Fz piaa0Cz + piaa0Fz -> piaam0z

long PIAACMCsimul_mkFocalPlaneMask ( const char *  IDzonemap_name,
const char *  ID_name,
int  mode,
int  saveMask 
)
Parameters
[in]IDzonemap_namezones
[in]ID_name
[in]modeif mode = -1, make whole 1-fpm, if mode = zone, make only 1 zone with CA = (1.0, 0.0)
[in]saveMask1 if mask saved to file system
long PIAACMCsimul_mkFPM_zonemap ( const char *  IDname)
Parameters
[out]IDnameName of output image
long PIAACMCsimul_mkLyotMask ( const char *  IDincoh_name,
const char *  IDmc_name,
const char *  IDzone_name,
double  throughput,
const char *  IDout_name 
)

Make Lyot stop geometry param[in] IDincoh_name Incoherent Lyot pupil intensity response to off-axis sources parampin] IDmc_name Intensity Lyot pupil image for on-axis source

explores two thresholding methods applied together : (1) keeps pixels for which offaxisLight / onaxisLight > rsl (2) keeps pixels for which onaxisLight < v0 selects the mask that achieves the strongest on-axis rejection while satifying the throughput constraint

int PIAACMCsimul_mkPIAAMshapes_from_RadSag ( const char *  fname,
const char *  ID_PIAAM0_name,
const char *  ID_PIAAM1_name 
)
double PIAACMCsimul_optimizeLyotStop ( const char *  IDamp_name,
const char *  IDpha_name,
const char *  IDincohc_name,
float  zmin,
float  zmax,
double  throughput,
long  NBz,
long  NBmasks 
)

Lyot stops positions from zmin to zmax relative to current, working back (light goes from 0 to zmax)

Parameters
[in]FluxTOTtotal flux in current plane
[in]FluxLimmax flux allowed from star
long PIAACMCsimul_rings2sectors ( const char *  IDin_name,
const char *  sectfname,
const char *  IDout_name 
)
Parameters
[in]IDin_nameinput image: circular mask design
[in]sectfnametext file specifying which zones belong to which rings
[out]IDout_nameoutput sector mask design
int PIAACMCsimul_run ( const char *  confindex,
long  mode 
)
Parameters
[in]confindexconfiguration index (sets name of directory for results)
[in]modeoperation to be executed
int PIAAsimul_initpiaacmcconf ( long  piaacmctype,
double  fpmradld,
double  centobs0,
double  centobs1,
int  WFCmode,
int  load 
)

initializes configuration

initializes configuration

Parameters
[in]piaacmctypeType of system: 0=idealized mask, 1=physical mask
[in]fpmradldFocal plane mask nominal radius
[in]centobs0Input central obstruction
[in]centobs1Output central obstruction
[in]WFSmodeNumber of DMs (0: no WFC)
[in]loadif 1, attempt to load configuration from file

piaacmctype:

  • 0: if configuration does not exist, create Monochromatic idealized PIAACMC, otherwise, read configuration
  • 1: physical mask

Wavefront control

int PIAAsimul_loadpiaacmcconf ( const char *  dname)

Load configuration.

long PIAAsimul_mkSimpleLyotStop ( const char *  ID_name,
float  rin,
float  rout 
)
int PIAAsimul_savepiaacmcconf ( const char *  dname)

Save configuration.