Name  Last Update 
Last Commit
history



other  
README.md  
fft_reverberation.c  
lmodelkynrefrev.dat  
xside.c  
xside_threads.c  
xskynrefrev.c 
README.md
Table of contents
Model description
The KYNrefrev model computes the time dependent reflection spectra of the disc as a response to a flash of primary powerlaw radiation from a point source located on the axis of the blackhole accretion disc.
Assumptions of the model:
central Kerr black hole,
Keplerian, geometrically thin, optically thick, ionised disc with different radial density profiles,
stationary hot pointlike patch of plasma located on the system rotation axis and emitting isotropic powerlaw radiation,
full relativistic raytracing code in vacuum is used for photon paths from the corona to the disc and to the observer and from the disc to the observer,
reprocessing in the ionised accretion disc is computed for each radius from REFLIONX tables for constant density slab illuminated by powerlaw radiation,
the ionisation of the disc is set for each radius according to the amount of the incident primary flux and the density of the accretion disc,
several limb brightening/darkening prescriptions for directionality of the reprocessed emission are used.
Output of the code:
time dependent spectra (only when used outside of XSPEC) of the disc response and observed primary flash,
integrated spectrum,
light curve for a given energy band,
lag as a function of frequency between given energy bands,
lag as a function of energy for different frequencies.
Installation
Required files
Source files in the main repository directory.
KY tables: KBHlamp_qt.fits (also here) and KBHtables80.fits (also here).
REFLION(X) tables (unpack gzipped files):
 reflion.mod (old),
 reflionx.mod,
or in case the links are not available or if the tables there are updated and their format/structure has changed:
 reflion.mod (or here) (old),
 reflionx.mod (or here).
Usage in XSPEC
The code is compiled inside XSPEC with the following command (assuming all the source files and FITS tables are in the directory /path/to/KYNrefrev):
initpackage kynrefrev lmodelkynrefrev.dat /path/to/KYNrefrev
.
To use the KYNrefrev model inside XSPEC, first the package needs to be loaded and directory with KYNrefrev set:
lmod kynrefrev /path/to/KYNrefrev
,xset KYDIR /path/to/KYNrefrev
.
Then the model may be used:
mo kynrefrev
.
Note:
In case of segmentation fault, one may need to increase the stack size, e.g.
with the command ulimit s unlimited
or ulimit s 65532
.
Usage outside of XSPEC
One also needs the Makefile and libxspec library included in the directory 'other'.
The library to work with FITS files (libcfitsio.so) is needed, thus one needs to define the name of the library and path to it in the provided Makefile.
The model parameters have to be changed inside the source file.
Compile with the make command:
make kynrefrev
Run the code:
./kynrefrev
.
The model creates various files described below.
Note:
In case of segmentation fault, one may need to increase the stack size, e.g.
with the command ulimit s unlimited
or ulimit s 65532
.
Parameters of the model
Definition in XSPEC
The meaning of the input parameters are also explained at the beginning of the kynrefrev.c file. The parameters when the code runs under XSPEC are defined in the usual way as for other XSPEC models. The parameter definitions when run outside of XSPEC must be changed directly inside the source code. Summary of the parameters:
 par1 ... a/M
 black hole angular momentum (1 ≤ a/M ≤ 1)
 par2 ... theta_o
 observer inclination in degrees (0°pole, 90°disc)
 par3 ... rin
 inner edge of nonzero disc emissivity (in GM/c^{2} or in r_{mso})
 par4 ... ms
 switch for inner edge
 0: we integrate from inner edge = par3
 1: if the inner edge of the disc is below marginally stable orbit (MSO) then we integrate emission above MSO only
 2: we integrate from inner edge given in units of MSO, i.e. inner edge = par3 × r_{mso} (the same applies for outer edge)
 par5 ... rout
 outer edge of nonzero disc emissivity (in GM/c^{2} or in r_{mso})
 par6 ... phi
 lower azimuth of nonzero disc emissivity (degrees)
 par7 ... dphi
 (phi + dphi) is upper azimuth of nonzero disc emissivity 0° ≤ dphi ≤ 360°
 par8 ... M/M8
 black hole mass in units of 10^{8} solar masses
 par9 ... height
 height on the axis (measured from the center) at which the primary source is located (GM/c^{2})
 par10 ... PhoIndex
 powerlaw energy index of the primary flux
 par11 ... L/L_{Edd}
 dE/dt;, the intrinsic local (if negative) or the observed (if positive) primary isotropic flux in the Xray energy range 210keV in units of L_{Edd}
 par12 ... Np:Nr
 ratio of the primary to the reflected normalization
 1: selfconsistent model for isotropic primary source
 0: only reflection, primary source is hidden
 if positive then L/L_{Edd} (par11) means the luminosity towards the observer
 if negative then L/L_{Edd} (par11) means the luminosity towards the disc
 par13 ... density
 density profile normalization in 10^{15} cm^{3}
 par14 ... den_prof
 radial powerlaw density profile
 par15 ... abun
 Fe abundance (in solar abundance)
 par16 ... alpha
 position of the cloud centre in GM/c^{2} in alpha coordinate (alpha being the impact parameter in φdirection, positive for approaching side of the disc)
 par17 ... beta
 position of the cloud centre in GM/c^{2} in beta coordinate (beta being the impact parameter in θdirection, positive in up direction, i.e. above the disc)
 par18 ... rcloud
 radius of the obscuring cloud
 the meaning of cloud is inverted for negative values of rcloud, i.e. only the radiation transmitted through the cloud is computed
 par19 ... zshift
 overall Doppler shift
 par20 ... limb
 0: for isotropic emission (flux ~ 1)
 1: for Laor's limb darkening (flux ~ 1+2.06μ)
 2: for Haardt's limb brightening (flux ~ ln (1+1/μ))
 par21 ... tab
 which reflion table to use
 1: reflion (the old one, lower cutoff energy at 1eV, not good for PhoIndex > 2)
 2: reflionx (the newer one, lower cutoff energy at 100eV)
 par22 ... sw
 switch for the way how to compute the refl. spectra
 1: use the computed ionisation parameter, ξ, for the interpolation in reflion, i.e. use proper total incident intensity with the shifted cutoffs
 2: use the ionisation parameter, ξ, correspondent to the computed normalization of the incident flux, i.e. do not shift the cutoffs when computing the total incident intensity
 par23 ... ntable
 defines fits file with tables (0 ≤ ntable ≤ 99), currently the tables with ntable=80 are correct for this model
 par24 ... nrad
 number of grid points in radius
 if negative than the number of radial grid points is dependent on height as nrad / height^{ 0.66}
 par25 ... division
 type of division in radial integration
 0: equidistant radial grid (constant linear step)
 1: exponential radial grid (constant logarithmic step)
 >1: mixed radial grid with a constant logarithmic step in the inner region and with a constant linear step in the outer region; the total nradius (par24) number of points is divided in the 3:2 ratio in these regions; the value of par25 gives the transition radius between these regions (in GM/c^{2})
 1: mixed radial grid with the transition radius at 2×height
 par26 ... nphi
 number of grid points in azimuth
 par27 ... deltaT
 length of the time bin (GM/c^{3})
 par28 ... nt
 number of time subbins per one time bin
 par29 ... t1/f1/E1
 the time to be used in XSPEC for the spectrum (0 means average spectrum, i.e. divided by the flare duration)
 the frequency to be used in XSPEC for the energy dependent Fourier transform (0 means average values in the range of 0 to the first wrapping frequency)
 positive values are in sec or Hz
 negative values are in GM/c^{3} or (GM/c^{3})^{1}
 if different than par30, the value gives the lower end of the time/frequency interval of interest
 if same as par30, then the functions are computed for this value of the time/frequency of interest
 in case of frequency dependent lags it defines the lower value of the energy band of interest in keV
 par30 ... t2/f2/E2
 used only if different than par29 and if par29 is nonzero
 its value gives the upper end of the time/frequency interval of interest
 positive values are in sec or Hz
 negative values are in GM/c^{3} or (GM/c^{3})^{1}
 in case of frequency dependent lags it defines the upper value of the energy band of interest in keV
 par31 ... Eref1
 it defines the lower value of the reference energy band for lag or amplitude energy dependence as well as in case of frequency dependent lags and amplitudes
 if zero no reference band is used
 if negative:
 for lagenergy spectra, the whole energy band is used as a reference band, always excluding the current energy bin
 for lagfrequency dependence, the energy reference band is abs(par31) to abs(par32) excluding overlaping part with energy band of interest abs(par29) to abs(par30)
 par32 ... Eref2
 it defines the upper value of the reference energy band for lagenergy dependence as well as in case of frequency dependent lags
 par33 ... dt/Af
 lag shift for lagenergy dependence in case of par35=+6
 multiplicative factor in case of adding empirical hard lags Af×f^{qf}, used for par35=+16; if par33=1 then the following hard lags prescription is used (see Epitropakis & Papadakis, 2017): 100 * log10(Eref/E) * (f/1e4)^{1} s with Eref being middle of the reference energy band and E middle of the energy band of interest
 par34 ... Amp/qf
 multiplicative factor for the amplitudeenergy dependence in case of par35=+5
 powerlaw index in case of adding empirical hard lags Af×f^{qf}, used for par35=+16
 par35 ... xsw
 defines output in the XSPEC (photar array)
 0: spectrum for time interval defined by par29 and par30
 the following values correspond to energy dependent Fourier transform
at the frequency band defined by par29 and par30:
 1: real part of FT of the relative reflection
 2: imaginary part of FT of the relative reflection
 3: amplitude of FT of the relative reflection
 4: phase of FT of the relative reflection
 5: amplitude for the relative reflection divided by amplitude in the reference energy band defined by par31 and par32 (integration in frequencies is done in real and imaginary parts first and then the amplitudes are computed)
 6: lag for the relative reflection with respect to reference energy band defined by par31 and par32 (integration in frequencies is done in real and imaginary parts first and then the lags are computed with frequency at half of the wrapping frequency or middle of the frequency band)
 7: amplitude for the relative reflection divided by amplitude in the reference energy band defined by par31 and par32 (integration in frequencies here is done in amplitudes directly)
 8: lag for the relative reflection with respect to reference energy band defined by par31 and par32 (integration in frequencies here is done in lags directly)
 1: real part of FT including primary radiation
 2: imaginary part of FT including primary radiation
 3: amplitude of FT including primary radiation
 4: phase of FT including primary radiation
 5: amplitude including the primary radiation divided by amplitude in the reference energy band defined by par31 and par32 (integration in frequencies is done in real and imaginary parts first and then the amplitudes are computed)
 6: lag diluted by primary radiation with respect to reference energy band defined by par31 and par32 (integration in frequencies is done in real and imaginary parts first and then the lags are computed with frequency at half of the wrapping frequency or middle of the frequency band)
 7: amplitude including the primary radiation divided by amplitude in the reference energy band defined by par31 and par32 (integration in frequencies here is done in amplitudes directly)
 8: lag diluted by primary radiation with respect to reference energy band defined by par31 and par32 (integration in frequencies here is done in lags directly)
 the following values correspond to frequency dependent Fourier
transform for the energy band of interest defined by par29 and par30:
 11: real part of FT of the relative reflection
 12: imaginary part of FT of the relative reflection
 13: amplitude of FT of the relative reflection
 14: phase of FT of the relative reflection
 15: amplitude for the relative reflection divided by amplitude in the reference energy band defined by par31 and par32 (rebinning here is done in real and imaginary parts first and then the amplitudes are computed)
 16: lag for the relative reflection with respect to reference energy band defined by par31 and par32 (rebinning here is done in real and imaginary parts first and then the lags are computed)
 17: amplitude for the relative reflection divided by amplitude in the reference energy band defined by par31 and par32 (rebinning here is done in amplitudes directly)
 18: lag for the relative reflection with respect to reference energy band defined by par31 and par32 (rebinning here is done in lags directly)
 11: real part of FT including primary radiation
 12: imaginary part of FT including primary radiation
 13: amplitude of FT including primary radiation
 14: phase of FT including primary radiation
 15: amplitude including the primary radiation divided by amplitude in the reference energy band defined by par31 and par32 (rebinning here is done in real and imaginary parts first and then the amplitudes are computed)
 16: lag diluted by primary radiation with respect to reference energy band defined by par31 and par32 (rebinning here is done in real and imaginary parts first and then the lags are computed)
 17: amplitude including the primary radiation divided by amplitude in the reference energy band defined by par31 and par32 (rebinning here is done in amplitudes directly)
 18: lag diluted by primary radiation with respect to reference energy band defined by par31 and par32 (rebinning here is done in lags directly)
 par36 ... nthreads
 how many threads should be used for computations
 par37 ... norm
 has to be set to unity!
 par1 ... a/M
Definition outside XSPEC
The model parameters need to be defined inside the kynrefrev.c code when run outside of XSPEC (the code needs to be recompiled after changing them):
energy in the following lines:
#define NE 30 #define E_MIN 0.3 #define E_MAX 80.
choose the energy bands of interest in the following lines:
#define NBANDS 5 . . . //definition of energy band of interest, reference band is defined as the last //one, usually the whole energy range ener_low[0] = 0.3; ener_high[0] = 0.8; ener_low[1] = 1.; ener_high[1] = 3.; ener_low[2] = 3.; ener_high[2] = 9.; ener_low[3] = 12.; ener_high[3] = 40.; ener_low[4] = E_MIN; ener_high[4] = E_MAX;
all basic parameters of the model (physical ones as well as those defining resolution grid for computations) are defined in the following lines:
param[ 0] = 1.; // a/M param[ 1] = 30.; // thetaO param[ 2] = 1.; // rin param[ 3] = 1.; // ms param[ 4] = 1000.; // rout param[ 5] = 0.; // phi0 param[ 6] = 360.; // dphi param[ 7] = 0.1; // M/M8 param[ 8] = 3.; // height param[ 9] = 2.; // PhoIndex param[10] = 0.001; // L/Ledd param[11] = 1.; // Np:Nr param[12] = 1.; // density param[13] = 0.; // den_prof param[14] = 1.; // abun param[15] = 6.; // alpha param[16] = 0.; // beta param[17] = 0.; // rcloud param[18] = 0.; // zshift param[19] = 0.; // limb param[20] = 2.; // tab param[21] = 2.; // sw param[22] = 80.; // ntable param[23] = 4488.; // nrad param[24] = 1.; // division param[25] = 180.; // nphi param[26] = 1.; // deltaT param[27] = 1.; // nt param[28] = 2.e4; // t1/f1/E1 param[29] = 8.e4; // t2/f2/E2 param[30] = 1.; // Eref1 param[31] = 3.; // Eref2 param[32] = 0.; // dt/Af param[33] = 1.; // Amp/qf param[34] = 6.; // xsw param[35] = 4.; // nthreads param[36] = 1.; // norm
some parameters are later changed in the loops for convenience (to create files for grid of parameters), see lines as:
for (ia=0;ia<=1;ia++){ param[0] = (double) ia; for (iinc=20;iinc<=80;iinc+=20){ param[1] = (double) iinc; for (ih=1;ih<=20;ih++){ param[8] = 1.5 * (100./1.5)**((ih1.)/19.);
Output files created
 The output files are created only when the code is run outside XSPEC.
 The following naming scheme is used for the output files:
 AAA is 100× the horizon value (thus 100 means a=1 and 200 means a=0),
 BB is the inclination in degrees,
 CCCC is 10× the height (e.g. 0030 means h=3),
 u1 is used for phase unwrapped in frequency dependence,
 u2 is used for phase unwrapped in energy dependence.
 All spectra and light curves are always computed in photon numbers and per keV and per second, time is in seconds and frequency in Hz.
 The output files created by kynrefrev.c code:
 below by relative reflection it is meant the disc response divided by the total primary flux in the flash.
 kynrefrev_photar.dat → the values as would be given inside XSPEC,
 kynrefrev_AAA_BB_CCCC.txt → the summary of parameter values,
 kynrefrev_AAA_BB_CCCC_far.dat → the time evolving observed reflection spectrum where the energy changes with rows and the time changes with columns,
 kynrefrev_AAA_BB_CCCC_flux_prim.dat → the total observed primary flux (i.e. integrated in energy) per second, it is constant during the duration of the flare,
 kynrefrev_AAA_BB_CCCC_lc.dat → the light curve of the observed reflection (2^{nd} column) where we integrated over the whole energy range, the 1^{st} column contains the time,
 kynrefrev_AAA_BB_CCCC_spectrum.dat → the time integrated spectrum of the observed reflection (2^{nd} column) and the observed primary (3^{rd} column), both are divided by the flare duration, the 1^{st} column contains the central value of the energy bins in keV.
 kynrefrev_AAA_BB_CCCC_bands_lc.dat → the light curves for the observed reflection (2^{nd} and higher columns) where in each column the light curve is integrated over different energy band (defined in the code), the 1^{st} column contains the time,
 kynrefrev_AAA_BB_CCCC_bands_prim.dat → the observed primary flux per second, it is constant during the duration of the flare where in each column the flux is integrated over different energy band (defined in the code).
 kynrefrev_AAA_BB_CCCC_real.dat → the real part of the FFT of the relative reflection with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_imag.dat → the imaginary part of the FFT of the relative reflection with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_ampl.dat → the amplitude of the FFT of the relative reflection with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_phase.dat, kynrefrev_AAA_BB_CCCC_phase_u1.dat, kynrefrev_AAA_BB_CCCC_phase_u2.dat → the phase of the FFT of the relative reflection with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_real_tot.dat → the real part of the FFT of the total signal (reflection response plus primary flash) with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_imag_tot.dat → the imaginary part of the FFT of the total signal (reflection response plus primary flash) with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_ampl_tot.dat → the amplitude of the FFT of the total signal (reflection response plus primary flash) with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_phase_tot.dat, kynrefrev_AAA_BB_CCCC_phase_tot_u1.dat, kynrefrev_AAA_BB_CCCC_phase_tot_u2.dat → the phase of the FFT of the total signal (reflection response plus primary flash) with frequency changing with rows and energy with columns,
 kynrefrev_AAA_BB_CCCC_bands_real.dat → the real part, as a function of frequency, of the FFT of the relative reflection integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_bands_imag.dat → the imaginary part, as a function of frequency, of the FFT of the relative reflection integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_bands_ampl.dat → the amplitude, as a function of frequency, of the FFT of the relative reflection integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_bands_phase.dat, kynrefrev_AAA_BB_CCCC_bands_phase_u1.dat → the phase, as a function of frequency, of the FFT of the relative reflection integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_bands_real_tot.dat → the real part, as a function of frequency, of the FFT of the total signal (reflection response plus primary flash) integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_bands_imag_tot.dat → the imaginary part, as a function of frequency, of the FFT of the total signal (reflection response plus primary flash) integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_bands_ampl_tot.dat → the amplitude, as a function of frequency, of the FFT of the total signal (reflection response plus primary flash) integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_bands_phase_tot.dat, kynrefrev_AAA_BB_CCCC_bands_phase_tot_u1.dat → the phase, as a function of frequency, of the FFT of the total signal (reflection response plus primary flash) integrated in different energy bands as defined in the code (2^{nd} and higher columns), the 1^{st} column contains the frequency,
 kynrefrev_AAA_BB_CCCC_freq_wrap.dat → the first wrapping frequency for the phase computed for the relative reflection (the lowest one from all energy bins)
 kynrefrev_AAA_BB_CCCC_fft_tot_int.dat → energy dependent average values of the FFT of the total signal (real part, imaginary part, amplitude, phase, unwrapped phase, delay, ratio of the amplitudes for the energy band of interest and reference energy band, delay between the energy band of interest and reference energy band computed from wrapped and unwrapped phases and directly averaged delay between the two energy bands as well as the ratio of the amplitudes and delay difference between the energy band of interest and reference energy band where reference energy band always excludes the current energy bin), the average is computed in the range of 0 to the first wrapping frequency, the 1^{st} column contains the central value of energy bins in keV; the FFT here is averaged over frequencies for real and imaginary parts first and then, from the result, all the rest quantities are computed except for the directly averaged delay, where the delay is computed first from real and imaginary parts of the FFT for each frequency and only then it is averaged (just for comparison).
 kynrefrev_AAA_BB_CCCC_fft_tot_fband.dat → energy dependent average values of the FFT of the total signal (real part, imaginary part, amplitude, phase, unwrapped phase, delay, ratio of the amplitudes for the energy band of interest and reference energy band, delay between the energy band of interest and reference energy band computed from wrapped and unwrapped phases and directly averaged delay between the two energy bands as well as the ratio of the amplitudes and delay difference between the energy band of interest and reference energy band where reference energy band always excludes the current energy bin), the average is computed in the frequency range given by param[28] and param[29], the 1^{st} column contains the central value of energy bins in keV; the FFT here is averaged over frequencies for real and imaginary parts first and then, from the result, all the rest quantities are computed except for the directly averaged delay, where the delay is computed first from real and imaginary parts of the FFT for each frequency and only then it is averaged (just for comparison).