added magdziarz sed table

This commit is contained in:
caes 2017-03-15 10:48:34 -04:00
parent 7e0e195433
commit 84f5d7b05f
8 changed files with 360 additions and 1239 deletions

View File

@ -1,4 +1,4 @@
x,sum,blackbody1,blackbody2,comptonization,excess
index,total,blackbody_sum_1,blackbody_sum_2,comptonization,excess
0.00100088,0.007052,0.00380963,0.00689602,0.00315011,0.000256716
0.00100097,0.00705274,0.00381008,0.0068968,0.00315038,0.000256738
0.00103176,0.00731913,0.00397244,0.00718025,0.00324849,0.000264733

1 x index sum total blackbody1 blackbody_sum_1 blackbody2 blackbody_sum_2 comptonization excess
2 0.00100088 0.007052 0.00380963 0.00689602 0.00315011 0.000256716
3 0.00100097 0.00705274 0.00381008 0.0068968 0.00315038 0.000256738
4 0.00103176 0.00731913 0.00397244 0.00718025 0.00324849 0.000264733

359
reference/magdziarz_sed.tab Normal file
View File

@ -0,0 +1,359 @@
# hnu intensity EFe
0.00100088 0.007052 nuFnu units kev extrapolate
0.00100097 0.00705274
0.00103176 0.00731913
0.00103256 0.00732605
0.00111537 0.00805117
0.00116725 0.00851172
0.00123692 0.00913732
0.00124792 0.00921958
0.0012767 0.00943475
0.00133715 0.0098869
0.00134899 0.00999022
0.00138015 0.010263
0.00142956 0.0106977
0.00144129 0.0108138
0.00147554 0.0111545
0.00157539 0.0121622
0.00157752 0.0121839
0.00165242 0.0129539
0.00168426 0.0131433
0.00170542 0.0132686
0.00172366 0.0133763
0.00180616 0.0138603
0.00182074 0.0139736
0.00182336 0.0139939
0.00188394 0.0144645
0.00194938 0.014973
0.00195252 0.0149974
0.00201415 0.0155573
0.00208746 0.0162273
0.00212823 0.016548
0.00217726 0.0169339
0.00225661 0.0175585
0.00232614 0.0182909
0.00235596 0.0186074
0.00241267 0.0192131
0.0024869 0.0197252
0.00257494 0.0203301
0.00260806 0.0205569
0.00271828 0.0214362
0.00275059 0.0216941
0.00278359 0.0219575
0.00278819 0.0219942
0.0029761 0.0234947
0.00300638 0.0237366
0.00301412 0.0237985
0.00317707 0.0247704
0.00321712 0.0250074
0.00328608 0.025414
0.00329455 0.0254638
0.00347266 0.0266547
0.00347766 0.026688
0.00356136 0.0272448
0.00359166 0.0274209
0.00371801 0.0281512
0.0037539 0.0283576
0.00389271 0.0291513
0.00392566 0.0293387
0.00401911 0.0298682
0.00425488 0.0311911
0.00433873 0.0315796
0.00465055 0.0330008
0.00468931 0.0331557
0.0050682 0.0346416
0.00513968 0.0349164
0.00519153 0.0350752
0.00535758 0.035578
0.0056743 0.0365138
0.00568002 0.0365304
0.00572662 0.0366824
0.00572785 0.0366864
0.00620222 0.0382001
0.00620795 0.038218
0.00626049 0.0382914
0.00639785 0.0384808
0.00670451 0.0388928
0.00686 0.0390961
0.006991 0.0391729
0.00740968 0.03941
0.00755458 0.0394893
0.00766474 0.0395486
0.00809872 0.0397752
0.00817305 0.0398129
0.00853198 0.0399908
0.00856388 0.0400063
0.00895053 0.0396539
0.00903229 0.0395817
0.00932098 0.0393329
0.00956727 0.0391279
0.0098915 0.0386924
0.00998143 0.038575
0.0100702 0.0384605
0.0105699 0.0378401
0.0107597 0.0376558
0.0111523 0.0372876
0.0119395 0.0365967
0.0122009 0.0362427
0.0125521 0.0357842
0.0126301 0.0356848
0.0131828 0.0350055
0.0131902 0.0349968
0.0132625 0.034911
0.0138586 0.034229
0.0139567 0.0341208
0.0140848 0.0339812
0.0145718 0.0334668
0.015596 0.0324622
0.0156321 0.0324285
0.0160748 0.0320247
0.0160817 0.0320185
0.0160983 0.0320037
0.0163348 0.0317426
0.01688 0.0311625
0.0169853 0.0310538
0.0172348 0.0308004
0.0177838 0.0302626
0.0179674 0.0301689
0.0181382 0.0300829
0.0191648 0.029587
0.0192434 0.0295504
0.0192583 0.0295435
0.0196673 0.0293566
0.0198053 0.0292947
0.0198666 0.0292674
0.0200743 0.029187
0.0204664 0.0290381
0.0211505 0.0287866
0.0212182 0.0287623
0.021282 0.0287395
0.0218565 0.0285377
0.0219265 0.0285136
0.0224095 0.0283497
0.0224273 0.0283438
0.0230797 0.0281296
0.0233876 0.0280311
0.0235174 0.0279901
0.0238511 0.027886
0.0241693 0.0277884
0.0245202 0.0276827
0.0246473 0.0276508
0.0247007 0.0276375
0.0247808 0.0276175
0.0251891 0.0275171
0.0257429 0.027384
0.0262784 0.0272586
0.0266034 0.027184
0.0269317 0.0271097
0.027091 0.0270741
0.0276843 0.0270162
0.0277765 0.0270073
0.0287036 0.0269197
0.0290112 0.0268913
0.029649 0.0268335
0.0302665 0.0267789
0.0303009 0.0267758
0.0312868 0.0266912
0.0323326 0.0266045
0.032679 0.0265764
0.0333975 0.0265193
0.0338141 0.0264868
0.0341318 0.0264874
0.034302 0.0264877
0.0348507 0.0264888
0.0356169 0.0264902
0.0364 0.0264916
0.0365228 0.0264918
0.0367916 0.0264923
0.0373626 0.0264933
0.0376005 0.0264766
0.0383259 0.0264266
0.0388556 0.0263907
0.0408055 0.0262632
0.0417419 0.0262043
0.0423533 0.0262053
0.0455884 0.02621
0.0466366 0.0262114
0.0473258 0.0261734
0.0509319 0.0259839
0.052103 0.0259256
0.052299 0.0259258
0.0582127 0.0259326
0.0584391 0.0259328
0.0645773 0.0259391
0.0649969 0.0259395
0.0650387 0.0259396
0.072159 0.0256743
0.0726154 0.0256583
0.0726621 0.0256567
0.0802288 0.0256629
0.0811825 0.0256636
0.0896327 0.0256698
0.0897019 0.0256699
0.0952414 0.0255181
0.100216 0.0253899
0.106419 0.0253936
0.111968 0.0253968
0.11566 0.0253988
0.117596 0.0253998
0.125097 0.0254037
0.129217 0.0254057
0.131403 0.0254067
0.139766 0.0254105
0.144363 0.0253709
0.145211 0.0253637
0.159506 0.0252491
0.162252 0.0252283
0.174458 0.0251402
0.17931 0.0251419
0.190641 0.0251457
0.198144 0.025148
0.203554 0.0251497
0.212995 0.0251525
0.227403 0.0249717
0.235337 0.0248775
0.251257 0.0247169
0.258632 0.0246462
0.262922 0.0246062
0.280695 0.0246101
0.288984 0.0246118
0.290513 0.0246122
0.319352 0.0243828
0.324565 0.0243437
0.35291 0.0243487
0.354229 0.0243489
0.362623 0.0243503
0.394326 0.0241492
0.395733 0.0241407
0.405127 0.0240848
0.435763 0.0239117
0.437224 0.0239038
0.452614 0.0238221
0.486924 0.0234372
0.500068 0.0232984
0.538092 0.0229587
0.558659 0.0227868
0.589519 0.0225153
0.617232 0.0222859
0.651244 0.0218881
0.681917 0.0215524
0.711468 0.0211866
0.761749 0.0206107
0.768691 0.020506
0.841507 0.0194895
0.919366 0.0184287
0.927346 0.0183394
1.00172 0.0175616
1.01563 0.0174261
1.03582 0.0171797
1.07012 0.0167796
1.09736 0.0164772
1.15738 0.0159315
1.19448 0.0156168
1.19889 0.0155804
1.26208 0.014984
1.279 0.0148332
1.30427 0.0146144
1.30976 0.0145678
1.36289 0.014182
1.40838 0.0138712
1.4134 0.0138379
1.44683 0.0136213
1.53704 0.0131101
1.5807 0.0128799
1.60612 0.012788
1.65974 0.012601
1.74628 0.0123169
1.75202 0.0123088
1.83077 0.0122008
1.87102 0.0121477
1.88625 0.012128
1.95088 0.0120464
1.97479 0.0119807
2.04071 0.0118055
2.08446 0.0116937
2.08567 0.0116906
2.15524 0.0115198
2.17726 0.0115319
2.24994 0.0115713
2.2995 0.0115975
2.32424 0.0116103
2.40807 0.0116531
2.66112 0.0120555
2.97342 0.0123329
3.28587 0.0127588
3.67165 0.0131998
4.0573 0.0135031
4.53365 0.0139698
5.01006 0.0144522
5.59826 0.0149517
6.18655 0.0154681
6.91288 0.0160027
7.6393 0.0165554
8.53619 0.0171276
9.4328 0.0175211
10.4245 0.0183311
11.6479 0.0187528
12.8718 0.0194004
14.3831 0.0200709
15.8945 0.0207641
17.7606 0.0214818
19.6277 0.0224748
21.9312 0.0229918
24.2358 0.0237858
27.0812 0.0246079
29.9257 0.0251733
33.4391 0.0260434
36.9514 0.0266418
41.2879 0.0272547
46.1333 0.0278816
50.9789 0.0285222
56.9567 0.02853
62.9365 0.0288594
70.3165 0.0288672
78.5585 0.0285523
86.7913 0.0276126
95.8829 0.0264055
105.927 0.0252511
115.727 0.0238767
126.424 0.0220755
136.586 0.0204095
145.938 0.0188688
155.931 0.0174444
164.756 0.0157687
174.088 0.014415
183.941 0.0130303
192.209 0.0117783
200.839 0.0105276
209.866 0.00951609
219.299 0.00860174
226.629 0.00777504
234.194 0.00694927
242.022 0.00628138
250.101 0.00561425
258.449 0.00501797
267.088 0.0045357
272.959 0.00405386
282.083 0.00366425
288.285 0.00327499
297.908 0.00292716
304.457 0.0026162
311.164 0.0023647
318.005 0.00211349
324.997 0.00188897
332.142 0.0016883
339.458 0.001526
346.922 0.00136389
350.639 0.00121896
358.348 0.00108947
366.226 0.000973734
374.278 0.000870292
378.289 0.000777818
386.622 0.000703044
395.122 0.000628358
399.356 0.000561591
408.136 0.000501931
412.51 0.000448598
421.579 0.000400942
***************
this was extracted from the 1998 Magdziarz paper

View File

@ -1,191 +0,0 @@
#include "agn.hpp"
int main(int argc, char const *argv[])
{
std::cout
<< "Setting up environment.\n";
bool debug=true;
// Create 2d table using n bins, linear values of SED. The
// agn em source class has a function for this. A
// std::map<double,double> represents the table.
int n = 1000;
agn::sed_table SED;
const char* table_filename = "agn_source_table";
const char* debug_filename = "agn_source_debug";
const char* cloudyscript_filename = "agn_source_cloudyscript";
std::ofstream table_file( table_filename,
std::ofstream::out
);
std::ofstream debug_file( debug_filename,
std::ofstream::out
);
std::ofstream cloudyscript_file(cloudyscript_filename,
std::ofstream::out
);
if(debug) std::cout
<< "Debug mode.\n";
std::cout
<< "Creating agn sed object.\n";
// agn em source spectrum arguments
double T=4e6,
alpha_ox = -1.20,
alpha_x = -0.670,
alpha_uv = -1.30,
cutoff_uv_rydberg = .25,
cutoff_xray_rydberg = .1,
log_radius_in_cm=16.7272;;
agn::sed_pow_law agnsource(
T,
alpha_ox,
alpha_x,
alpha_uv,
cutoff_uv_rydberg,
cutoff_xray_rydberg,
log_radius_in_cm
);
if(debug) debug_file
<< "cutoff_uv_eV: "
<< agnsource._cutoff_uv_eV
<< "\n"
<< "cutoff_xray_eV: "
<< agnsource._cutoff_xray_eV
<< "\n"
<< "xray coefficient: "
<< agnsource._xray_coefficient
<< "\n\n";
std::cout
<< "Evaluating relative spectral intensity for "
<< n
<< " photon energy bins.\n";
SED = agnsource.histogram_table(n);
std::cout
<< "Printing SED table to file "
<< table_filename
<< "\n";
table_file << agn::format_sed_table(SED);
std::cout
<< "Printing CLOUDY interpolate command syntax to file "
<< cloudyscript_filename
<< "\n";
cloudyscript_file << agn::cloudy_interpolate_str(SED);
std::cout
<< "Closing files. Goodbye.\n";
debug_file.close();
cloudyscript_file.close();
table_file.close();
return 0;
}
double agn::hnu_at(int i,int n) {
double relative_coord=(double)(i)/n;
double x_coord = relative_coord*CONT_WIDTH_X + CONT_MIN_X;
return pow(10,x_coord);
}
agn::sed_table agn::sed_pow_law::histogram_table(int n){
agn::sed_table output;
double max=0,min=1,hnu;
for(int i=0; i<n; i++) {
hnu = hnu_at(i,n);
output.value[hnu] = this->sed(hnu);
if (output.value[hnu] > max) max = output.value[hnu];
if (output.value[hnu] < min) min = output.value[hnu];
}
// Add a final point at 100 KeV
hnu = 1e5;
output.value[hnu] = this->sed(hnu);
return output;
}
double agn::sed_pow_law::sed(double hnu) {
double magnitude=0.0;
magnitude += this->eval_uv(hnu);
magnitude += this->eval_xray(hnu);
if (magnitude < agn::CONT_MIN_VAL) return agn::CONT_MIN_VAL;
return magnitude;
}
double agn::sed_pow_law::eval_uv(double hnu) {
double bigbump_kT = _T
* agn::BOLTZMANN_CONST;
double magnitude = pow(hnu,(1+_alpha_uv))
* exp(-(hnu)/bigbump_kT)
* exp(-(_cutoff_uv_eV/hnu))
* _scaling_factor;
if (magnitude < agn::CONT_MIN_VAL) return agn::CONT_MIN_VAL;
return magnitude;
}
double agn::sed_pow_law::eval_xray(double hnu) {
return _xray_coefficient
* pow(hnu/2000,1+_alpha_x)
* exp(-_cutoff_xray_eV/hnu)
* _scaling_factor;
}
double agn::sed_pow_law::SED_at_2KeV() {
double ELe_at_2500A_no_scale = eval_uv(IN_EV_2500A)
/ _scaling_factor;
double energy_ratio = 2000/IN_EV_2500A;
// Returns EL[e] at 2 KeV
return ELe_at_2500A_no_scale
* pow(energy_ratio,_alpha_ox + 1);
}
agn::sed_pow_law::sed_pow_law (
double T,
double alpha_ox,
double alpha_x,
double alpha_uv,
double cutoff_uv_rydberg,
double cutoff_xray_rydberg,
double log_radius_in_cm,
double scaling_factor
):
_T(T),
_alpha_ox(alpha_ox),
_alpha_x(alpha_x),
_alpha_uv(alpha_uv),
_cutoff_uv_rydberg(cutoff_uv_rydberg),
_cutoff_xray_rydberg(cutoff_xray_rydberg),
_log_radius_in_cm(log_radius_in_cm),
_scaling_factor(scaling_factor)
{
_cutoff_uv_eV = cutoff_uv_rydberg*RYDBERG_UNIT_EV;
_cutoff_xray_eV = cutoff_xray_rydberg*RYDBERG_UNIT_EV;
_radius_in_cm = pow(10,log_radius_in_cm);
_radius_in_cm_squared = _radius_in_cm*_radius_in_cm;
_xray_coefficient = agn::sed_pow_law::SED_at_2KeV();
}

View File

@ -1,116 +0,0 @@
""" A program to recreate the average spectrum fit for ngc 5548 in Magdziarz et al 1998 """
import math
import scipy
import numpy
PI=3.14159265358979323846;
PLANCK_CONST=4.135668e-15; # in eV * s
BOLTZMANN_CONST=0.00008617332385; # in eV / K
RYDBERG_CONST=1.0973731568539e7; # in 1 / m
RYDBERG_UNIT_EV=13.60569252; # in eV
RYDBERG_UNIT_ANGSTROM=1e10/RYDBERG_CONST; # in A
CONT_MIN_ENERGY_keV = 1e-3;
CONT_MAX_ENERGY_keV = 1e2;
CONT_MIN_X = math.log10(CONT_MIN_ENERGY_keV);
CONT_MAX_X = math.log10(CONT_MAX_ENERGY_keV);
CONT_WIDTH_X = CONT_MAX_X - CONT_MIN_X;
CONT_MIN_VAL = 1e-35;
""" Cloudy's continuum domain, for reference, version 13.3 """
CLOUDY_EMM = 1.001e-8; # in Rydberg
CLOUDY_EGAMRY = 7.354e6; # in Rydberg
CLOUDY_MIN_EV = CLOUDY_EMM*RYDBERG_UNIT_EV;
CLOUDY_MAX_EV = CLOUDY_EGAMRY*RYDBERG_UNIT_EV;
IN_EV_2500A = 12398.41929/2500;
""" Curve Parameters from MNRAS 301 Mdagziarz 1998 """
α_HC = 0.86
# Soft Excess
α_SE_sec2_1 = 1.1 # Quoted consistent with Korista 1995 and Marshall 1997
kT_SE_sec2_1 = .56
# Comtonization fitted to ROSAT data
# ξ =
# OSSE data fit
α_HC = 0.86
R = 0.96
E_cutoff_HC = .120 # keV, phase 1
F_HC = .38 # keV cm⁻² s⁻¹
# E_cutoff_HC = 118 # keV, phase 3
# F_HC = .61 # keV cm⁻² s⁻¹
# Section 3.3 values
kT_SE_sec3_2 = .270 # keV
α_SE_sec3_2 = 1.13
kT_HC_sec3_2 = 55 # keV
α_HC_sec3_2 = .76
def hν_at(i,n):
""" returns hν coordinate of bin i out of n """
relative_coord = i/n
x_coord = relative_coord*CONT_WIDTH_X + CONT_MIN_X;
return math.pow(10,x_coord);
def histogram_table(n):
output = []
# max=0,min=1
indices = range(n)
for i in range(0,n):
hν = hν_at(i,n);
value = (hν,sed(hν))
# if (output.value[hν] > max) max = output.value[hν];
# if (output.value[hν] < min) min = output.value[hν];
output.append(value)
# Add a final point at 100 KeV
hν = 1e2;
value = sed(hν);
output.append((hν,value))
return output;
def sed(hν):
magnitude=0.0;
magnitude += powlaw_cutoff(hν,α_HC,E_cutoff_HC,1) # OSSE data fit
# magnitude += powlaw_cutoff(hν,α_SE_sec2_1,kT_SE_sec2_1,1)
# magnitude += powlaw_cutoff(hν,α_SE_sec3_2,kT_SE_sec3_2,1)
#magnitude += compt_approx(hν,-1.3,.345,.0034,1)
if magnitude < CONT_MIN_VAL: return CONT_MIN_VAL
# magnitude = CONT_MIN_VAL;
return magnitude;
def powlaw_cutoff(hν,α,E_cutoff,norm):
low_cutoff = .1
resultant = norm
resultant *= math.exp(-hν/E_cutoff)
#resultant *= math.exp(-low_cutoff/hν)
resultant *= math.pow(hν,1+α)
return resultant
def compt_approx(hν,α,kT_keV,cutoff_keV,norm):
magnitude = math.pow(hν,(1+α))
magnitude *= math.exp(-(hν/kT_keV))
magnitude *= math.exp(-(cutoff_keV/hν))
magnitude *= norm
return magnitude
test_table = histogram_table(500)
for pair in test_table:
print (pair[0],pair[1])

View File

@ -1,72 +0,0 @@
#!/usr/local/bin/perl
use strict; use warnings; use 5.010; use utf8;
use IO::Handle;
use File::Temp "tempfile";
open(my $spectrum_file,"spectrum");
# my @x = ();
# my @y = ();
# my($xi,$yi);
# ($xi,$yi)=(0,0);
# while(my $line = <$spectrum_file>) {
# $line =~ /([0-9\.]+)\s+([0-9\.]+)/;
# ($x[$xi],$y[$yi])=($1,$2);
# $xi++; $yi++;
# }
# while (my $line = <$spectrum_file>) {
# print $line;
# }
my($T,$N) = tempfile("spectrum-XXXXXXXX", "UNLINK", 1);
# for my $t (100..500)
# { say $T $t*sin($t*0.1), " ", $t*cos($t*0.1); }
while (my $_ = <$spectrum_file>) {
chomp;
say $T $_;
}
close $T;
open my $P, "|-", "gnuplot" or die;
printflush $P qq[
unset key
set logscale xy
set xrange [.001,1000]
plot "$N"
];
<STDIN>;
close $P;
# sub histogram_table(n) {
# my @output = ()
# my @x = ()
# my @y = ()
# output.append(x)
# output.append(y)
# max=0
# min=1
# indices = range(n)
# for i in range(0,n):
# hνᗉkeVᗆ = hνᗉkeVᗆ_at(i,n);
# x.append(hνᗉkeVᗆ)
# value = total(hνᗉkeVᗆ,1,1,1)
# y.append(value)
# if (value > max): max = value;
# if (value < min): min = value;
# # Add a final point at 100 KeV
# hνᗉkeVᗆ = 1e2;
# x.append(hνᗉkeVᗆ)
# y.append(total(hνᗉkeVᗆ,1,1,1))
# output.append(x)
# output.append(y)
# return output;
# }
close($spectrum_file)
__END__

View File

@ -1,139 +0,0 @@
""" A program to recreate the average spectrum fit for ngc 5548 in Magdziarz et al 1998 """
import math
import scipy
import numpy
import matplotlib.pyplot as plt
PI=3.14159265358979323846;
PLANCK_CONST=4.135668e-15; # in eV * s
# Boltzman Constant
kᵦᗉeVᓯKᗆ=0.00008617332385; # in eV / K
kᵦᗉkeVᓯKᗆ=kᵦᗉeVᓯKᗆ/1000;
RYDBERG_CONST=1.0973731568539e7; # in 1 / m
RYDBERG_UNITᗉeVᗆ=13.60569252; # in eV
RYDBERG_UNIT_ANGSTROM=1e10/RYDBERG_CONST; # in A
CONT_MIN_ENERGYᗉkeVᗆ = 1e-3;
CONT_MAX_ENERGYᗉkeVᗆ = 1e2;
CONT_MIN_XᗉkeVᗆ = math.log10(CONT_MIN_ENERGYᗉkeVᗆ);
CONT_MAX_XᗉkeVᗆ = math.log10(CONT_MAX_ENERGYᗉkeVᗆ);
CONT_WIDTH_XᗉkeVᗆ = CONT_MAX_XᗉkeVᗆ - CONT_MIN_XᗉkeVᗆ;
CONT_MIN_VAL = 1e-35;
""" Cloudy's continuum domain, for reference, version 13.3 """
CLOUDY_EMMᗉRydbergᗆ = 1.001e-8; # in Rydberg
CLOUDY_EγᗉRydbergᗆ = 7.354e6; # in Rydberg
CLOUDY_MINᗉeVᗆ= CLOUDY_EMMᗉRydbergᗆ*RYDBERG_UNITᗉeVᗆ;
CLOUDY_MAXᗉeVᗆ= CLOUDY_EγᗉRydbergᗆ*RYDBERG_UNITᗉeVᗆ;
hcᓯ2500ᗉeVᗆ = 12398.41929/2500;
""" Returns the SED as a histrogram (list of floats) with n bins"""
# def histogram_table(n):
# output = []
# # max=0,min=1
# indices = range(n)
# for i in range(0,n):
# hνᗉkeVᗆ = hνᗉkeVᗆ_at(i,n);
# value = (hνᗉkeVᗆ,sum(hνᗉkeVᗆ))
# # if (output.value[hνᗉkeVᗆ] > max) max = output.value[hνᗉkeVᗆ];
# # if (output.value[hνᗉkeVᗆ] < min) min = output.value[hνᗉkeVᗆ];
# output.append(value)
#
# # Add a final point at 100 KeV
# hνᗉkeVᗆ = 1e2;
# value = sum(hνᗉkeVᗆ);
# output.append((hνᗉkeVᗆ,value))
# return output;
def histogram_table(n):
output = []
x = []
y = []
output.append(x)
output.append(y)
max=0
min=1
indices = range(n)
for i in range(0,n):
hνᗉkeVᗆ = hνᗉkeVᗆ_at(i,n);
x.append(hνᗉkeVᗆ)
value = total(hνᗉkeVᗆ,1,1,1)
y.append(value)
if (value > max): max = value;
if (value < min): min = value;
# Add a final point at 100 KeV
hνᗉkeVᗆ = 1e2;
x.append(hνᗉkeVᗆ)
y.append(total(hνᗉkeVᗆ,1,1,1))
output.append(x)
output.append(y)
return output;
# Sums 2 power-law cutoff functions and the disk contribution at energy coordinate hνᗉkeVᗆ in keV.
# Coefficients should be equal to functions at hνᗉkeVᗆ = ?? keV
def total(hνᗉkeVᗆ,C1=1.0,C2=1.0,C3=1.0):
magnitude=0.0
# accretion disk blackbody continuum has α=1/3
magnitude += powlaw_cutoff(hνᗉkeVᗆ,1/3,3e3,6e6,C1)
magnitude += powlaw_cutoff(hνᗉkeVᗆ,-1.1,.01/kᵦᗉkeVᓯKᗆ,1/kᵦᗉkeVᓯKᗆ,C2)
magnitude += powlaw_cutoff(hνᗉkeVᗆ,-0.8,.01/kᵦᗉkeVᓯKᗆ,100/kᵦᗉkeVᓯKᗆ,C3)
if magnitude < CONT_MIN_VAL: return CONT_MIN_VAL
# print (magnitude)
return magnitude;
def hνᗉkeVᗆ_at(i,n):
""" returns hνᗉkeVᗆ coordinate in keV of bin i out of n """
relative_coord = i/n
hν = relative_coord*CONT_WIDTH_XᗉkeVᗆ + CONT_MIN_XᗉkeVᗆ
return math.pow(10,hν)
def powlaw_cutoff(hνᗉkeVᗆ,α,T1,T2,coefficient):
resultant = coefficient
resultant *= math.exp(-hνᗉkeVᗆ/(kᵦᗉkeVᓯKᗆ*T1))
resultant *= math.exp(-kᵦᗉkeVᓯKᗆ*T2/hνᗉkeVᗆ)
resultant *= math.pow(hνᗉkeVᗆ,1+α)
#print(math.exp(-hνᗉkeVᗆ/(kᵦᗉkeVᓯKᗆ*T1)))
#print(-hνᗉkeVᗆ/(kᵦᗉkeVᓯKᗆ*T1))
#print(math.exp(-kᵦᗉkeVᓯKᗆ*T2/hνᗉkeVᗆ))
#print(math.pow(hνᗉkeVᗆ,1+α))
#print(resultant)
#print("──────────────────────────────────────────────────────────────────────────")
return resultant
test_table = histogram_table(500)
fig = plt.figure()
sed_plot = fig.add_subplot(111)
sed_plot.set_xscale("log")
sed_plot.set_yscale("log")
sed_plot.set_xlim(CONT_MIN_XᗉkeVᗆ,CONT_MAX_XᗉkeVᗆ)
sed_plot.set_ylim(1e-1,1e2)
sed_plot.set_aspect(1)
sed_plot.set_title("log-log plot of SED")
sed_plot.plot(test_table[0],test_table[1])
fig.show()
#for pair in test_table:
# print (pair[0],pair[1])
# index=0
# for energy in test_table[0]:
# print (energy,test_table[1][index])
# index += 1

View File

@ -1,219 +0,0 @@
#ifndef sed_hpp
#define sed_hpp
#include "agn.hpp"
namespace agn {
// Continuum domain, step size constant in log space
``const double CONT_MIN_ENERGY=1e-2; // eV
const double CONT_MAX_ENERGY=1e5; // eV
const double CONT_MIN_X=log10(CONT_MIN_ENERGY);
const double CONT_MAX_X=log10(CONT_MAX_ENERGY);
const double CONT_WIDTH_X=CONT_MAX_X - CONT_MIN_X;
const double CONT_MIN_VAL=1e-35;
// Cloudy's continuum domain, for reference, version 13.3
const double CLOUDY_EMM = 1.001e-8; // in Rydberg
const double CLOUDY_EGAMRY = 7.354e6; // in Rydberg
const double CLOUDY_MIN_EV=CLOUDY_EMM*RYDBERG_UNIT_EV;
const double CLOUDY_MAX_EV=CLOUDY_EGAMRY*RYDBERG_UNIT_EV;
const double IN_EV_2500A=12398.41929/2500;
// SEDs are represented by 2d histogram tables.
struct sed_table {
std::string header;
table_1d value;
};
class sed_pow_law {
public:
// Continuum output functions
// Returns histogram with n bins evenly space in log space
sed_table histogram_table(int n);
// Argument is photon energy in eV
double sed(double hnu);
double eval_uv(double hnu);
double eval_xray(double hnu);
// Determined differently to be of use as the
// xray coefficient.
double SED_at_2KeV();
// Continuum shape arguments
double _T; //TCut
double _alpha_ox;
double _alpha_x;
double _alpha_uv;
double _cutoff_uv_rydberg;
double _cutoff_xray_rydberg;
double _log_radius_in_cm;
// Derived values
double _cutoff_uv_eV; // IRCut
double _cutoff_xray_eV; // lowend_cutoff
double _radius_in_cm;
double _radius_in_cm_squared;
double _scaling_factor;
double _xray_coefficient;
sed_pow_law (
double T,
double alpha_ox,
double alpha_x,
double alpha_uv,
double cutoff_uv_rydberg,
double cutoff_xray_rydberg,
double log_radius_in_cm,
double scaling_factor = 1.0
// EL[e] model scaling factor
// double scaling_factor = 1.39666E44
);
};
// Returns coord in eV for given relative coord.
double hnu_at(int i,int n);
// Takes an SED table as input and returns a string with format:
// '<h*nu>\t<flux>\n' for each energy-flux pair
std::string format_sed_table(sed_table table);
// Read continuum from file with '<h*nu>\t<flux>\n' formatting.
// Will ignore up to 1 header.
sed_table read_sed_table(std::ifstream& table_file);
// Does the same but converts hnu from rydberg to eV.
sed_table read_and_convert_sed_table(std::ifstream& table_file);
// Cloudy takes the SED density as input. This function outputs
// the corresponding SED table's SED density function in the form
// of a cloudy input script "interpolate" command.
std::string cloudy_interpolate_str(sed_table SED);
} // end namespace agn
agn::sed_table agn::read_sed_table(std::ifstream& table_file) {
sed_table resultant;
std::string scratch;
int current_line=0;
double hnu;
std::getline(table_file,scratch);
if(!isdigit(scratch[0])) {
resultant.header = scratch;
current_line++;
}
while(!table_file.eof()) {
table_file >> hnu;
table_file >> resultant.value[hnu];
}
}
agn::sed_table agn::read_and_convert_sed_table(std::ifstream& table_file) {
sed_table resultant;
std::string scratch;
int current_line=0;
double hnu_in_ryd,hnu_in_ev,value;
std::getline(table_file,scratch);
if(!isdigit(scratch[0])) {
resultant.header = scratch;
current_line++;
}
int c=0;
while(!table_file.eof()) {
//std::cout << c;
table_file >> hnu_in_ryd;
hnu_in_ev = hnu_in_ryd*agn::RYDBERG_UNIT_EV;
table_file >> resultant.value[hnu_in_ev];
getline(table_file,scratch);
}
}
std::string agn::format_sed_table(agn::sed_table table) {
std::stringstream output;
if (!table.header.empty()) output << table.header;
output << std::setprecision(5);
agn::table2d::iterator table_iterator;
table_iterator=table.value.begin();
while(table_iterator != table.value.end()) {
output
<< std::fixed
<< table_iterator->first
<< "\t"
<< std::scientific
<< table_iterator->second
<< "\n";
table_iterator++;
}
return output.str();
}
std::string agn::cloudy_interpolate_str(agn::sed_table table) {
std::stringstream output;
agn::table2d::iterator table_iterator = table.value.begin();
// Lead in to uv bump at slope=2 in log(energy [rydberg]) space
double energy_in_rydbergs = table_iterator->first
/ agn::RYDBERG_UNIT_EV;
double log_uv_bump_start = log10( energy_in_rydbergs );
double log_lowest_value = log10(table_iterator->second
/ table_iterator->first);
double log_min_energy = log10(agn::CLOUDY_EMM)
- 1;
double log_SED_density = log_lowest_value
- 2*(log_uv_bump_start
- log_min_energy);
if ( log_SED_density < 1e-36 ) log_SED_density = 1e-36;
output
<< "interpolate ("
<< pow(10,log_min_energy)
<< " "
<< log_SED_density
<< ")";
int count=0;
while(table_iterator != table.value.end()) {
energy_in_rydbergs = table_iterator->first
/ agn::RYDBERG_UNIT_EV;
double log_SED_density = log10( table_iterator->second
/ table_iterator->first);
if ((count%5)==0) output << "\n" << "continue ";
else output << " ";
output
<< "("
<< energy_in_rydbergs
<< " "
<< log_SED_density
<< ")";
count++;
table_iterator++;
}
// Trail off at slope=-2 in log(energy [rydberg]) space
while ( energy_in_rydbergs < agn::CLOUDY_EGAMRY ) {
double log_energy = log10(energy_in_rydbergs);
energy_in_rydbergs = pow(10,log_energy+1);
log_SED_density -= 2;
output
<< "("
<< energy_in_rydbergs
<< " "
<< log_SED_density
<< ")";
}
return output.str();
}
#endif

View File

@ -1,501 +0,0 @@
0.001 1e-35
0.0010232929922807535 1e-35
0.0010471285480508996 1e-35
0.001071519305237606 1e-35
0.0010964781961431851 1e-35
0.001122018454301963 1e-35
0.0011481536214968829 1e-35
0.001174897554939529 1e-35
0.001202264434617413 1e-35
0.0012302687708123812 1e-35
0.0012589254117941675 1e-35
0.0012882495516931337 1e-35
0.0013182567385564075 1e-35
0.0013489628825916532 1e-35
0.0013803842646028853 1e-35
0.001412537544622754 1e-35
0.001445439770745928 1e-35
0.0014791083881682072 1e-35
0.0015135612484362087 1e-35
0.0015488166189124811 1e-35
0.001584893192461114 1e-35
0.0016218100973589297 1e-35
0.0016595869074375598 1e-35
0.0016982436524617442 1e-35
0.0017378008287493763 1e-35
0.0017782794100389228 1e-35
0.0018197008586099826 1e-35
0.0018620871366628676 1e-35
0.0019054607179632482 1e-35
0.0019498445997580456 1e-35
0.001995262314968879 1e-35
0.0020417379446695297 1e-35
0.0020892961308540386 1e-35
0.0021379620895022326 1e-35
0.002187761623949552 1e-35
0.00223872113856834 1e-35
0.0022908676527677724 1e-35
0.0023442288153199225 1e-35
0.00239883291901949 1e-35
0.002454708915685031 1e-35
0.0025118864315095794 1e-35
0.0025703957827688645 1e-35
0.0026302679918953813 1e-35
0.002691534803926914 1e-35
0.002754228703338166 1e-35
0.002818382931264455 1e-35
0.0028840315031266055 1e-35
0.0029512092266663842 1e-35
0.003019951720402016 1e-35
0.003090295432513592 1e-35
0.0031622776601683794 1e-35
0.003235936569296281 1e-35
0.003311311214825911 1e-35
0.0033884415613920273 1e-35
0.0034673685045253167 1e-35
0.0035481338923357532 1e-35
0.003630780547701014 1e-35
0.003715352290971728 1e-35
0.0038018939632056127 1e-35
0.003890451449942805 1e-35
0.003981071705534973 1e-35
0.004073802778041126 1e-35
0.004168693834703355 1e-35
0.004265795188015926 1e-35
0.004365158322401661 1e-35
0.0044668359215096305 1e-35
0.004570881896148752 1e-35
0.004677351412871981 1e-35
0.004786300923226385 1e-35
0.004897788193684461 1e-35
0.005011872336272725 1e-35
0.005128613839913648 1e-35
0.005248074602497723 1e-35
0.005370317963702527 1e-35
0.005495408738576248 1e-35
0.005623413251903491 1e-35
0.005754399373371567 1e-35
0.00588843655355589 1e-35
0.0060255958607435805 1e-35
0.006165950018614822 1e-35
0.00630957344480193 1e-35
0.006456542290346556 1e-35
0.006606934480075964 1e-35
0.006760829753919818 1e-35
0.006918309709189363 1e-35
0.00707945784384138 1e-35
0.007244359600749898 1e-35
0.007413102413009177 1e-35
0.007585775750291836 1e-35
0.007762471166286911 1e-35
0.007943282347242814 1e-35
0.008128305161640995 1e-35
0.008317637711026709 1e-35
0.008511380382023759 1e-35
0.008709635899560805 1e-35
0.008912509381337459 1e-35
0.009120108393559097 1e-35
0.009332543007969905 1e-35
0.009549925860214359 1e-35
0.009772372209558112 1e-35
0.01 1e-35
0.010232929922807542 1e-35
0.010471285480508996 1e-35
0.010715193052376065 1e-35
0.01096478196143185 1e-35
0.011220184543019636 1e-35
0.01148153621496883 1e-35
0.011748975549395297 1e-35
0.012022644346174132 1e-35
0.012302687708123818 1e-35
0.012589254117941675 1.3996479694365586e-35
0.012882495516931342 8.270588387595168e-35
0.013182567385564075 4.686869718494287e-34
0.01348962882591654 2.5495183758866658e-33
0.013803842646028852 1.3324555672404638e-32
0.014125375446227547 6.69650156124801e-32
0.01445439770745928 3.2390389883990527e-31
0.01479108388168208 1.5091097908171951e-30
0.01513561248436208 6.77823828047859e-30
0.01548816618912481 2.937315521425098e-29
0.015848931924611134 1.229023903677627e-28
0.0162181009735893 4.96908168781093e-28
0.016595869074375606 1.9427648570657324e-27
0.016982436524617443 7.35033495487743e-27
0.017378008287493755 2.6930458296420804e-26
0.01778279410038923 9.561578992892138e-26
0.018197008586099836 3.291978943924586e-25
0.018620871366628676 1.0997937687327044e-24
0.019054607179632473 3.567553707485399e-24
0.019498445997580455 1.1243624803203092e-23
0.0199526231496888 3.444955292838125e-23
0.020417379446695295 1.0267403190419972e-22
0.020892961308540396 2.978443886444978e-22
0.021379620895022326 8.414257076941903e-22
0.02187761623949553 2.316217559426091e-21
0.0223872113856834 6.216040568787896e-21
0.022908676527677734 1.6272230934438987e-20
0.023442288153199226 4.157203175385443e-20
0.02398832919019491 1.037033554390446e-19
0.02454708915685031 2.527160323920646e-19
0.025118864315095808 6.019034683630338e-19
0.025703957827688632 1.4017653709182508e-18
0.026302679918953815 3.1935479048228853e-18
0.026915348039269153 7.120513330808699e-18
0.02754228703338166 1.5544405019374462e-17
0.028183829312644536 3.323855537770272e-17
0.028840315031266057 6.964516155528575e-17
0.029512092266663854 1.4305116343583793e-16
0.03019951720402016 2.881441107018318e-16
0.030902954325135904 5.693873153980269e-16
0.03162277660168379 1.1041876398087576e-15
0.03235936569296283 2.1021711242266972e-15
0.03311311214825911 3.930358212034185e-15
0.033884415613920256 7.219044298575817e-15
0.034673685045253165 1.3030207068668043e-14
0.03548133892335755 2.311976844535101e-14
0.03630780547701014 4.033748022821911e-14
0.03715352290971726 6.922386914347113e-14
0.038018939632056124 1.1688255134455832e-13
0.03890451449942807 1.942277841488844e-13
0.039810717055349734 3.177301022377131e-13
0.04073802778041128 5.118050485325646e-13
0.04168693834703355 8.120079354581276e-13
0.04265795188015928 1.2692065385883532e-12
0.04365158322401661 1.9548976487697138e-12
0.04466835921509633 2.967805516254491e-12
0.04570881896148752 4.441843010381999e-12
0.046773514128719836 6.555422864803426e-12
0.04786300923226385 9.541971463194307e-12
0.04897788193684464 1.3701319235101568e-11
0.05011872336272725 1.9411422705668308e-11
0.05128613839913651 2.713962278441181e-11
0.05248074602497723 3.745237873994417e-11
0.05370317963702527 5.1022162257801555e-11
0.05495408738576243 6.862998325765646e-11
0.05623413251903491 9.116188665618086e-11
0.057543993733715666 1.1959774736453685e-10
0.0588843655355589 1.5499083779831052e-10
0.060255958607435746 1.984369787187912e-10
0.06165950018614822 2.510326273124928e-10
0.0630957344480193 3.1382200360394453e-10
0.06456542290346556 3.8773428111463193e-10
0.06606934480075957 4.735129171793244e-10
0.06760829753919818 5.716402935905871e-10
0.06918309709189363 6.822618784025435e-10
0.0707945784384138 8.051149896910117e-10
0.07244359600749899 9.39467823519304e-10
0.07413102413009177 1.0840745931609151e-09
0.07585775750291836 1.2371523312028086e-09
0.07762471166286919 1.3963840850430572e-09
0.07943282347242814 1.5589518929887134e-09
0.08128305161640995 1.7216011213346151e-09
0.08317637711026708 1.8807355866092624e-09
0.08511380382023767 2.0325405447914e-09
0.08709635899560805 2.1731282998801223e-09
0.08912509381337459 2.2986990842106615e-09
0.09120108393559097 2.4057082037586527e-09
0.09332543007969915 2.4910294061764307e-09
0.09549925860214359 2.5521041498216867e-09
0.09772372209558111 2.587066993222519e-09
0.1 2.5948386728995015e-09
0.10232929922807547 2.575180500105021e-09
0.10471285480508996 2.528706318336725e-09
0.10715193052376071 2.4568512014159055e-09
0.1096478196143185 2.361799080546359e-09
0.1122018454301963 2.246374304867694e-09
0.1148153621496883 2.113904520619545e-09
0.11748975549395291 1.968064001474688e-09
0.12022644346174131 1.8127075441364575e-09
0.1230268770812381 1.6517052030269713e-09
0.12589254117941676 1.4887874997683055e-09
0.12882495516931336 1.3274094050272717e-09
0.13182567385564073 1.1706395100544199e-09
0.13489628825916533 1.0210785811529965e-09
0.13803842646028852 8.808093380610489e-10
0.1412537544622754 7.513770267652624e-10
0.1445439770745928 6.33798352017303e-10
0.1479108388168207 5.285947356327267e-10
0.15135612484362088 4.358447618373043e-10
0.1548816618912481 3.5525009307994924e-10
0.15848931924611143 2.862090689151862e-10
0.16218100973589297 2.2789257281885011e-10
0.16595869074375613 1.79317471386279e-10
0.16982436524617442 1.3941388375889464e-10
0.17378008287493762 1.0708360902930806e-10
0.1778279410038923 8.124811700436344e-11
0.18197008586099844 6.088550225309452e-11
0.18620871366628675 4.505664596575927e-11
0.19054607179632482 3.292148422128933e-11
0.19498445997580455 2.3746729602152994e-11
0.19952623149688808 1.6906642405883577e-11
0.20417379446695297 1.1878521424425692e-11
0.2089296130854041 8.234516676141156e-12
0.21379620895022325 5.6311968800517345e-12
0.2187761623949554 3.798072102037078e-12
0.22387211385683378 2.5260121648710612e-12
0.22908676527677724 1.6562428798766963e-12
0.23442288153199228 1.0703659887732308e-12
0.239883291901949 6.816481705533256e-13
0.24547089156850285 4.2766584329980625e-13
0.25118864315095796 2.6427638803007737e-13
0.25703957827688645 1.6080937186127808e-13
0.26302679918953814 9.632736554301501e-14
0.2691534803926914 5.6787907956332455e-14
0.2754228703338166 3.29388752593895e-14
0.2818382931264455 1.8792453319028872e-14
0.28840315031266056 1.054268710470452e-14
0.2951209226666384 5.814062644134074e-15
0.3019951720402016 3.1508819598434147e-15
0.30902954325135923 1.677521388861027e-15
0.31622776601683794 8.770874187336641e-16
0.3235936569296281 4.502023813394213e-16
0.3311311214825911 2.2678260915331503e-16
0.33884415613920277 1.1207052186782802e-16
0.34673685045253166 5.4311394033068657e-17
0.3548133892335753 2.5801332772845348e-17
0.3630780547701014 1.2010859965334827e-17
0.3715352290971728 5.476603553191455e-18
0.38018939632056126 2.444969439940952e-18
0.3890451449942805 1.0682559661573058e-18
0.3981071705534973 4.565904734324759e-19
0.407380277804113 1.9082391186568624e-19
0.41686938347033553 7.794581613449174e-20
0.42657951880159256 3.1102926232515327e-20
0.4365158322401661 1.2118450663658595e-20
0.4466835921509635 4.608014533984292e-21
0.4570881896148752 1.70914673499978e-21
0.4677351412871981 6.180388513252975e-22
0.47863009232263853 2.1776567333421397e-22
0.48977881936844664 7.472408687024307e-23
0.5011872336272725 2.4956494949825537e-23
0.5128613839913648 8.107861938716106e-24
0.5248074602497729 2.560769685036931e-24
0.5370317963702532 7.857986072002221e-25
0.5495408738576248 2.3412999115812987e-25
0.5623413251903491 6.769079540073872e-26
0.5754399373371573 1.897770730559601e-26
0.5888436553555896 5.155931399260007e-27
0.6025595860743581 1.3565013767056107e-27
0.6165950018614822 3.453632609113776e-28
0.6309573444801936 8.5027680056385e-29
0.6456542290346563 2.022789078916929e-29
0.6606934480075958 4.646402537358794e-30
0.6760829753919811 1.0297240039824094e-30
0.6918309709189363 2.1999670471056836e-31
0.7079457843841374 4.527390700191154e-32
0.7244359600749899 8.967114922110128e-33
0.7413102413009169 1.7078831203715665e-33
0.7585775750291835 3.125236440976627e-34
0.7762471166286912 5.489545560621661e-35
0.7943282347242814 1e-35
0.8128305161640986 1e-35
0.8317637711026709 1e-35
0.8511380382023759 1e-35
0.8709635899560806 1e-35
0.891250938133745 1e-35
0.9120108393559097 1e-35
0.9332543007969905 1e-35
0.9549925860214359 1e-35
0.9772372209558101 1e-35
1.0 1e-35
1.0232929922807537 1e-35
1.0471285480508996 1e-35
1.071519305237606 1e-35
1.096478196143185 1e-35
1.122018454301963 1e-35
1.1481536214968828 1e-35
1.174897554939529 1e-35
1.2022644346174132 1e-35
1.2302687708123812 1e-35
1.2589254117941675 1e-35
1.2882495516931336 1e-35
1.3182567385564075 1e-35
1.3489628825916533 1e-35
1.3803842646028852 1e-35
1.412537544622754 1e-35
1.4454397707459279 1e-35
1.4791083881682072 1e-35
1.5135612484362087 1e-35
1.5488166189124812 1e-35
1.584893192461114 1e-35
1.6218100973589298 1e-35
1.6595869074375613 1e-35
1.6982436524617444 1e-35
1.7378008287493762 1e-35
1.7782794100389228 1e-35
1.8197008586099843 1e-35
1.8620871366628675 1e-35
1.9054607179632483 1e-35
1.9498445997580456 1e-35
1.9952623149688808 1e-35
2.0417379446695296 1e-35
2.089296130854041 1e-35
2.1379620895022327 1e-35
2.187761623949554 1e-35
2.23872113856834 1e-35
2.290867652767775 1e-35
2.344228815319923 1e-35
2.398832919019492 1e-35
2.454708915685031 1e-35
2.5118864315095824 1e-35
2.570395782768865 1e-35
2.630267991895384 1e-35
2.691534803926917 1e-35
2.754228703338163 1e-35
2.818382931264452 1e-35
2.8840315031266055 1e-35
2.951209226666384 1e-35
3.019951720402013 1e-35
3.0902954325135887 1e-35
3.1622776601683795 1e-35
3.235936569296281 1e-35
3.3113112148259076 1e-35
3.388441561392024 1e-35
3.4673685045253166 1e-35
3.5481338923357533 1e-35
3.63078054770101 1e-35
3.715352290971724 1e-35
3.801893963205613 1e-35
3.890451449942805 1e-35
3.981071705534969 1e-35
4.073802778041126 1e-35
4.168693834703355 1e-35
4.265795188015925 1e-35
4.365158322401657 1e-35
4.46683592150963 1e-35
4.570881896148752 1e-35
4.677351412871981 1e-35
4.7863009232263805 1e-35
4.897788193684462 1e-35
5.011872336272725 1e-35
5.1286138399136485 1e-35
5.248074602497723 1e-35
5.370317963702527 1e-35
5.4954087385762485 1e-35
5.623413251903491 1e-35
5.754399373371567 1e-35
5.88843655355589 1e-35
6.025595860743581 1e-35
6.165950018614822 1e-35
6.30957344480193 1e-35
6.456542290346556 1e-35
6.606934480075965 1e-35
6.760829753919819 1e-35
6.918309709189363 1e-35
7.07945784384138 1e-35
7.244359600749906 1e-35
7.413102413009177 1e-35
7.585775750291836 1e-35
7.76247116628692 1e-35
7.943282347242821 1e-35
8.128305161640995 1e-35
8.317637711026709 1e-35
8.511380382023768 1e-35
8.709635899560814 1e-35
8.91250938133746 1e-35
9.120108393559097 1e-35
9.332543007969914 1e-35
9.549925860214369 1e-35
9.772372209558112 1e-35
10.0 1e-35
10.232929922807536 1e-35
10.471285480509007 1e-35
10.71519305237607 1e-35
10.964781961431852 1e-35
11.220184543019652 1e-35
11.481536214968841 1e-35
11.74897554939528 1e-35
12.02264434617413 1e-35
12.30268770812381 1e-35
12.589254117941662 1e-35
12.882495516931323 1e-35
13.182567385564074 1e-35
13.489628825916533 1e-35
13.803842646028839 1e-35
14.125375446227526 1e-35
14.45439770745928 1e-35
14.791083881682072 1e-35
15.135612484362072 1e-35
15.488166189124795 1e-35
15.848931924611142 1e-35
16.218100973589298 1e-35
16.595869074375596 1e-35
16.982436524617427 1e-35
17.378008287493763 1e-35
17.78279410038923 1e-35
18.197008586099827 1e-35
18.620871366628656 1e-35
19.054607179632484 1e-35
19.498445997580454 1e-35
19.952623149688787 1e-35
20.417379446695275 1e-35
20.892961308540407 1e-35
21.379620895022324 1e-35
21.87761623949552 1e-35
22.38721138568338 1e-35
22.90867652767775 1e-35
23.442288153199225 1e-35
23.9883291901949 1e-35
24.547089156850287 1e-35
25.11886431509582 1e-35
25.703957827688647 1e-35
26.302679918953814 1e-35
26.91534803926914 1e-35
27.54228703338169 1e-35
28.18382931264455 1e-35
28.84031503126606 1e-35
29.51209226666384 1e-35
30.199517204020193 1e-35
30.90295432513592 1e-35
31.622776601683793 1e-35
32.35936569296281 1e-35
33.11311214825915 1e-35
33.884415613920275 1e-35
34.673685045253166 1e-35
35.481338923357534 1e-35
36.30780547701018 1e-35
37.15352290971728 1e-35
38.018939632056124 1e-35
38.904514499428046 1e-35
39.81071705534978 1e-35
40.7380277804113 1e-35
41.68693834703355 1e-35
42.65795188015925 1e-35
43.651583224016655 1e-35
44.668359215096345 1e-35
45.708818961487516 1e-35
46.77351412871981 1e-35
47.8630092322639 1e-35
48.97788193684456 1e-35
50.118723362727145 1e-35
51.28613839913648 1e-35
52.48074602497723 1e-35
53.703179637025215 1e-35
54.954087385762485 1e-35
56.23413251903491 1e-35
57.543993733715666 1e-35
58.88436553555884 1e-35
60.25595860743569 1e-35
61.65950018614822 1e-35
63.0957344480193 1e-35
64.56542290346549 1e-35
66.06934480075964 1e-35
67.60829753919819 1e-35
69.18309709189363 1e-35
70.79457843841374 1e-35
72.44359600749891 1e-35
74.13102413009177 1e-35
75.85775750291836 1e-35
77.62471166286912 1e-35
79.43282347242821 1e-35
81.28305161640995 1e-35
83.17637711026708 1e-35
85.11380382023759 1e-35
87.09635899560796 1e-35
89.12509381337459 1e-35
91.20108393559097 1e-35
93.32543007969905 1e-35
95.49925860214368 1e-35
97.72372209558111 1e-35
100.0 1e-35