Theoretical Precision of Synthetic Spectra

The theoretical precision of M-dwarf synthetic spectra is extensively explored in Figueira et al. (2016). Eniric extends this work to any spectra in the PHOENIX-ACES or the BT-Settl-CIFIST2011_2015 spectral libraries.

The script phoenix_precision.py is provided to easily generate synthetic RV precision values, similarly to and beyond the work of Figueira et al. (2016). The precision of a spectrum can be obtained by providing its library parameters Teff, logg, Fe/H and, alpha. This has been mainly used on M-dwarf spectra with temperatures < 4000K, but higher temperatures also work.

For the library selection and loading of the spectra Starfish’s Grid Tools is used. The spectral libraries need to be pre-downloaded, and the raw_path to their location configured in the config.yaml file in the working directory. For more information see the Starfish documentation here.

Example Usage

phoenix_precision.py is called by passing the stellar and other parameters on the command line. Several flags can take multiple values separated by a space. All combinations of the parameters supplied will be computed.

The available inputs parameters are:

$ phoenix_precision.py -h

usage: phoenix_precision.py [-h] [-t TEMP [TEMP ...]] [-l LOGG [LOGG ...]]
                            [-m METAL [METAL ...]] [-a ALPHA [ALPHA ...]]
                            [-s SAMPLING [SAMPLING ...]]
                            [-r RESOLUTION [RESOLUTION ...]]
                            [-v VSINI [VSINI ...]]
                            [-b {K,H,J,Y,Z,TEST} [{K,H,J,Y,Z,TEST} ...]]
                            [--model {aces,btsettl,phoenix}] [--snr SNR]
                            [--ref_band {SELF,K,H,J,Y,Z,TEST}]
                            [--num_procs NUM_PROCS] [-o OUTPUT]
                            [--rv RV [RV ...]] [--add_rv] [--air] [--correct]
                            [-V] [--disable_normalization]

Calculate precision and quality for synthetic spectra.

optional arguments:
  -h, --help            show this help message and exit
  -t TEMP [TEMP ...], --temp TEMP [TEMP ...]
                        Temperature, default=[3900].
  -l LOGG [LOGG ...], --logg LOGG [LOGG ...]
                        Logg, default = [4.5].
  -m METAL [METAL ...], --metal METAL [METAL ...]
                        Metallicity, default=[0.0].
  -a ALPHA [ALPHA ...], --alpha ALPHA [ALPHA ...]
                        Alpha, default=[0.0].
  -s SAMPLING [SAMPLING ...], --sampling SAMPLING [SAMPLING ...]
                        Sampling, default=[3.0].
  -r RESOLUTION [RESOLUTION ...], --resolution RESOLUTION [RESOLUTION ...]
                        Instrumental resolution, default=[50000]
  -v VSINI [VSINI ...], --vsini VSINI [VSINI ...]
                        Rotational Velocity, default = [1.0]
  -b {K,H,J,Y,Z,TEST} [{K,H,J,Y,Z,TEST} ...], --bands {K,H,J,Y,Z,TEST} [{K,H,J,Y,Z,TEST} ...]
                        Wavelength bands to select, default=['J'].
  --model {aces,btsettl,phoenix}
                        Spectral models to use, default='aces'.
  --snr SNR             Mid-band SNR scaling, default=100.
  --ref_band {SELF,K,H,J,Y,Z,TEST}
                        SNR reference band, default='J'.
                        'self' scales each band relative to the SNR itself.
  --num_procs NUM_PROCS
                        Number of processors to use,
                        default = (Total cores - 1)
  -o OUTPUT, --output OUTPUT
                        Filename for result file, default='precisions.csv'.
  --rv RV [RV ...]      Radial velocity value, default=[0.0]
  --add_rv              Include a radial velocity shift.
  --air                 Convert to air wavelengths.
  --correct             Apply Artigau et al. (2018) RV band corrections.
  -V, --verbose         Enable verbose.
  --disable_normalization
                        Disable the convolution normalization.

Note

The parameter space is multiplicative so the runtime increases when increasing the number of values for each parameter.

Output File

The script returns a table with input parameters and the calculated precisions for all three tellruic conditions presented in Figueira et al. (2016) for the parameter combinations requested. E.g:

# precisions.csv
temp,logg,feh,alpha,band,resolution,vsini,sampling,correctflag,quality,cond1,cond2,cond3
3900,4.5,0.0,0.0,K,100k,1.0,3.0,0,4916,7.4,33.6,8.0

The different columns of the output file are given in the table below.

Col. Name Description
1 temp Library stellar effective temperature (K).
2 logg Library stellar surface gravity.
3 feh Library stellar metallicity.
4 alpha Library stellar alpha ratio.
5 band Wavelength band letter.
6 resolution Instrumental resolution.
7 vsini Stellar rotation (km/s).
8 sampling Spectral sampling - N points per resolution element.
9 correctflag Indicate if Artigau et al. (2018) precision correction is applied.
10 quality Theoretical spectral quality.
11 cond1 RV precision with no masking (m/s). (Condition 1)
12 cond2 RV precision with binary masking (m/s). (Condition 2)
13 cond3 RV precision with transmission masking (m/s). (Condition 3)

The first 9 columns uniquely identify a set of input parameter values, this is used to avoid repeating an identical computaion. In this way precsions.csv can be appended to with new values, while keeping the other values, if desired.

Calculating Precisions

Below are some specific examples of using phoenix_precision.py.

This script has been used to generate nIR RV precision values across the M-dwarf temperature range. These were requested by the NIRPS and SPIRou consortia for use as into their respective Exposure Time Calculators. The commands to use to generate these datasets are provided below.

Figueira et al. (2016)

To reproduce the calculations of Figueira et al. (2016) you can use the

phoenix_precision.py -t 2600 2800 3500 3900 -m 0.0, -l 4.5 -r 60000 80000 100000 -v 1.0 5.0 10.0 --snr 100 -b Z Y J H K --ref_band J

NIRPS

For the NIRPS ETC precisions were calculated for the whole M-dwarf range between 2500 and 4000 K. These were centred on the H-band centering with a SNR of 100. This also included R=75000 tailored to the NIRPS instrument.

phoenix_precision.py -t 2500, 2600, 2700, 2800, 2900, 3000, 3100, 3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900, 4000
 -m 0.0, -l 5.0 --snr 100 -b Z Y J H K --ref_band H -r 60000 75000 80000 100000 -v 1.0 5.0 10.0

Note

The PHOENIX-ACES models for this range need to have been downloaded.

SPIRou

For the SPIRou ETC the parameter combinations are the same as Figueira et al. (2016) but calculated relative to a SNR of 100 in each respective bands.

phoenix_precision.py -t 2600, 2900, 3500, 3900 -m 0.0, -l 4.5 --snr 100 -b Z Y J H K --ref_band self

BT-SETTL

To use the BT-Settl sectral library use the --model flag.

phoenix_precision.py -t 2600, 2900, 3500, 3900 -b Z Y J H K --model btsettl

Precision Corrections

Artigau et al. (2018) provided corrections to the precision obtained from syntheithc mnodel, after a comparision to obsrevered spectra.

The multiplicative correction factors for each band can be obtained with correct_artigau_2018(), e.g.:

rv_K = 1 # m/s
correction_factor = correct_artigau_2018(band="K")
rv_K_corrected = rv_K * correction_factor

Table 3 from Artigau et al. (2018):

Multiplicative correction factors to be applied on the RV precision derived from stellar models. These values correspond to the square-root of the flux-weighted mean Q ratio between observation and models for each bandpass. The nominal values are for a comparison with the default model described here, but we also explore the impact of other physical parameter choices.
  Nominal Variants
[Fe/H] −0.5 0.0      
logg 5.0   5.5    
Teff (K) 3200     3400 3000
g 0.66 0.63 0.69 0.82 0.51
r 0.82 0.76 0.84 1.08 0.60
i 0.94 0.81 0.99 1.26 0.73
z 1.27 1.09 1.20 1.82 0.96
Y 0.29 0.30 0.27 0.30 0.25
J 0.38 0.40 0.31 0.54 0.37
H 1.37 0.95 1.82 1.42 1.23
K 1.47 1.06 2.00 1.66 1.27
eniric.corrections.correct_artigau_2018(band: str) → float[source]

Apply Artigau et al. (2018) Table 3 nominal Barnard’s Star corrections.

Parameters:band (str) – Wavelength band.
Returns:correction – Correction value to multiply synthetic model precisions by to get to “real” values.
Return type:float

Warning

Returns the corrections from the nominal (second) column only.